Que fait le script INSTALL:
Ce script est une alternative à R CMD INSTALL:
il doit donc réaliser la même chose; en plus,
pour vérifier l'installation, on lui fait
exécuter les démos.
Par défaut, il réalise toutes les tâches suivantes.
Des options supplémentaires à celles exposées ci-dessus
permettent à l'administrateur de les restreindre,
mais il est supposé que l'ordre logique
de leur exécution est respecté.
Ces tâches sont les suivantes:
-
Appeler le script configure
avec les options adéquates,
afin de modifier les fichiers selon la configuration
courante (voir détails)
(option -configure)
-
Charger le source des fonctions R
(sauf dans le cas nls2C)
(option -func)
-
Compiler les programmes par
exécution du fichier src/Makefile.
Ce fichier place les exécutables (crInv, analDer, etc...)
dans le
répertoire inst.
Cela est nécessaire car ce fichier est
aussi utilisé
par R CMD INSTALL, lorsque l'installation est faite par cette
commande. Or, R CMD INSTALL détruit tout ce qui n'est
pas 'standard', à moins que ce ne soit dans inst,
-
Remonter le contenu de inst d'un niveau
et mettre les fichiers src/*.so dans le répertoire libs
comme le ferait R CMD INSTALL.
À ce stade, libs contient les librairies partagées (*.so) et
le répertoire nls2libs contient les compilés (*.o) et les librairies statiques
(*.a)
(option -compile)
-
Charger les données des exemples contenus
dans le répertoire data
(sauf dans le cas nls2C)
(option -dataex)
-
Exécuter les exemples
dans le répertoire tests
(sauf dans le cas nls2C)
(option -testex)
-
Exécuter les exemples
dans le répertoire demo
(sauf dans le cas nls2C)
(option -demoex)
Que fait le script configure:
Ce shell-script est appelé par la commande R:
R CMD INSTALL
et par le script INSTALL.
Il modifie les fichiers qui en ont besoin (ceux de suffixe
.in)
selon la
valeur de ses arguments. L'original des fichiers
ou répertoires est conservé: les modifications sont faites
dans une recopie, de même nom, le suffixe
.in étant ôté, ce qui permet de recommencer
l'installation autant de fois que voulu.
Les parties à modifier sont souvent symbolisées
par un patron choisi conventionnellement
qu'une instruction du script remplace.
Ses arguments sont ceux du script INSTALL
ou ceux passés à R CMD INSTALL via "--configure-args".
Ce que fait ce script:
-
fixe la commande
à sa valeur par défaut si aucune n'a été
donnée en argument:
Splus, si l'hôte est Splus, et R, sinon
(dans le cas nls2C, on ignore la commande)
-
si l'hôte n'est pas R: on force load à 2 et on prévient qu'il faut
customiser src/MyMakevars
-
copie les fichiers
ou répertoires à modifier dans des fichiers
ou répertoires de même nom, le suffixe
.in étant ôté.
-
détermine le chemin d'accès du répertoire d'installation,
et l'affecte à une variable nommée $nls2dir.
Pour déterminer le chemin d'accès du répertoire d'installation,
on teste
la variable R_PACKAGE_DIR:
-
si cette variable est affectée,
c'est que le script est appelé par R CMD INSTALL.
R_PACKAGE_DIR est alors égale
au chemin d'accès du répertoire des librairies de R.
-
sinon,
c'est que le script est appelé par INSTALL et
$nls2dir est alors le répertoire courant.
-
remplace un patron conventionnel, PATRONDIR,
par la valeur de $nls2dir
dans les fichiers
-
src/nl/Messagenls2.c:
pour fixer le chemin d'accès du fichier qui contient
les libellés des messages.
-
R/init.R:
ce fichier contient une instruction R
qui affecte à la variable
nommée .Nls2dir la valeur de $nls2dir; cette variable
sera utilisée par la fonction R/loadnls2.s
et par les fichiers de data et de demo
pour faire l'édition de liens des programmes
de calcul du modèle avec ceux de nls2.
-
modifie les fichiers de demo,
selon la valeur de $nls2dir;
en effet, les fichiers démos utilisent les
fonctions de nls2 et les données
du répertoire data, et il est nécessaire
de leur indiquer comment les trouver:
-
si le script n'est pas appelé
par R CMD INSTALL, on transforme les 'library(nls2)' et 'data()', par
des instructions 'attach';
L'argument de ces instructions, représenté par
le patron conventionnel NLS2LOC, est remplacé
par le chemin d'accès au fichier .RData
(ou .Data, si Splus) du répertoire d'installation.
-
sinon, on remplace
NLS2LOC par le chemin d'accès au répertoire d'installation.
-
modifie le fichier src/Basic/nltypes.h
pour insérer ieee754.h (système Linux)
ou ieee754.h (autres systèmes)
-
modifie le fichier src/Makefile
pour indiquer le fichier à y inclure
(remplacement du patron conventionnel RCONFIG):
-
si load=2, on y inclut src/MyMakevars
-
sinon on y inclut
`R RHOME`/etc/Makeconf, c.à.d
le fichier qui indique les compilateurs et options de compilation
ayant servi lors de l'installation de R.
(R est toujours disponible quand load!=2).
Remarque: quand load=0, la compilation et l'édition de liens
sont faites en utilisant des commandes de R, et
l'inclusion du fichier Makeconf dans le Makefile
ne sert que pour déterminer le suffixe des librairies partagées.
-
modifie le fichier src/Makevars,
lui aussi inclus dans src/Makefile,
pour indiquer les compilateurs et options de compilation voulus.
-
si load=0, on remplace le patron conventionnel CDE,
par le nom de la commande (R, Splus ou leur
chemin d'accès), la compilation et l'édition de liens
étant alors faites par 'CDE CMD COMPILE'.
-
sinon, la compilation et l'édition de liens
sont faites en utilisant les variables
$(CC), $(PKG_CPPFLAGS), etc,..
définis dans src/MyMakevars (load=2)
ou `R RHOME`/etc/Makeconf (load=1).
On modifie src/Makevars en conséquence.
-
modifie le fichier src/Makefile
pour que les fichiers compilés soient toujours
au même endroit, quelque soit le cas.
En effet, lorsque la compilation est faite
par R (c.à.d. quand load=0),
les compilés sont dans les sous-répertoires de src.
Lorsqu'elle est faite directement en invoquant des
compilateurs, ils sont dans le répertoire dans lequel
a été lancée la commande de compilation, c.à.d.
dans src
Le Makefile les met dans le répertoire nls2libs
-
modifie le fichier R/loadnls2.s
pour que la fonction R
qui y est contenue, lance la compilation des sources de l'utilisateur
quand load!=0.
Quand load=0,
la compilation et l'édition de liens
sont faites par les commandes de R.
-
modifie le fichier src/Basic/nltypes.h,
si l'hôte est Splus.
En effet, le type nommé
TFuncInt qui est celui utilisé
pour les arguments entiers des programmes appelés
par les fonctions R de nls2, doit être alors 'long int'
-
crée le répertoire loaduser et y met
tout ce qui sera utile
à la compilation des programmes de l'utilisateur:
le fichier Makefile (recopie de celui de src),
les fichiers Makevars et, quand load=2, MyMakevars
(recopie de ceux de src, puis modification pour
tenir compte des emplacements rééls des répertoires),
les fichiers *.h à inclure dans les programmes de l'utilisateur
(ceux de src/Basic)
-
crée le répertoire inst
et y met tout ce qui n'est pas 'standard'
afin que la commande R CMD INSTALL,
quand c'est elle qui appelle le script, ne les détruise pas:
le fichier des messages, FILEMESS,
les répertoires loaduser, html,
doc et le shell-sript crCalib.
On y met aussi, éventuellement (c.à.d quand l'option nosrc
n'est pas positionnée), tout ce qui est nécessaire à une
ré-installation.
-
crée le répertoire tests pour répondre aux standards de R
(R CMD INSTALL est censé exécuter ce qui est dans ce répertoire)
On y
met toutes les démos (fichiers demo/*.R) sauf ceux nécessitant Nag,
que l'on concaténe dans un fichier nommé nls2.R