Revue de la fonctionnalité INSTALL_ROOT de sorcery
Benoît PAPILLAULT, 23/11/2004
Objectifs
Nous avons:
-
la documentation existante n'est pas clair (comment sont définis les
variables? comment elle doivent être utilisées par les auteurs de
spell? pourquoi install_root est utilisé dans la documentation et
INSTALL_ROOT dans le code source de sorcery?)
-
l'implémentation existante ne fonctionne pas (le spell glibc ne peut
pas être compilé pour un système chroot ou la cross compilation d'un
système x86_64 ne fonctionne pas).
Nous voulons:
-
une documentation claire qui puisse servir de point de départ pour
une implémentation claire.
-
gérer plusieurs configurations:
- un système normal
- un système chroot
- la cross compilation d'un système
- l'installation d'un spell en conflit dans un endroit différent
Définitions
Comme ce que nous allons définir va principalement être utilisé avec
le système autoconf, il est mieux d'utiliser des noms de variables
similaires. Nous choisissons des noms différents de ceux déjà utilisé
pour éviter des confusions et pour vérifier rapidement si le code
l'implémente proprement.
Avec le système autoconf, BUILD est utilisé pour désigner le système
de compilation, ie la machine où le logiciel est compilé. HOST est
utilisé pour désigner le système hôte, ie la machine où le logiciel
sera exécuté.
-
BUILD_ROOT est le répertoire racine du système où les binaires sont
installés. C'est un répertoire du système de compilation. Sa valeur
par défaut est /
-
HOST_ROOT est le répertoire racine du systèmé où les binaires sont
exécutés. C'est un répertoire du système hôte. Sa valeur par défaut
est /
Ces deux variables sont définies par sorcery and doivent être
correctement utilisés par les scripts des spells.
Utilisation de BUILD_ROOT et HOST_ROOT dans un spell
spell conforme à BUILD_API=1
Les spells conformes à BUILD_API=1 sont des vieux spells et devraient
être converties vers des spells conformes à BUILD_API=2.
spell conforme à BUILD_API=2
-
si aucun fichier BUILD n'existe, la fonction default_build() est
utilisée à la place. Donc, les auteurs du fichier BUILD doivent
l'utiliser comme modéle. Voici son code:
./configure --prefix="${HOST_ROOT}/usr" \
--sysconfdir="${HOST_ROOT}/etc" \
--localstatedir="${HOST_ROOT}/var" \
--mandir="${HOST_ROOT}/usr/share/man" \
--infodir="${HOST_ROOT}/usr/share/info" \
$OPTS &&
make
-
si aucun fichier INSTALL n'existe, la fonction default_instal() est
utilisée à la place. Donc, les auteurs du fichier INSTALL doivent
l'utiliser comme modéle. Voici son code source:
make install prefix="${BUILD_ROOT}/usr"
Différentes façcons d'utiliser la fonctionnalité BUILD_ROOT
Système normal
BUILD_ROOT=/
HOST_ROOT=/
Système chroot ou système cross compilé
Dans ce cas, le système doit fonctionner aprés avoir fait un chroot
/mychroot (dans le cas du chroot) ou aprés avoir copié le répertoire
/mychroot sur une autre machine and la lancer avec celui en répertoire
racine.
BUILD_ROOT=/mychroot
HOST_ROOT=/
Système normal mais en installant dans /opt/mozilla-special
Ceci peut être utilisé pour installer des spells qui sont en conflits,
comme vim et elvis.
BUILD_ROOT=/opt/mozilla-special
HOST_ROOT=/opt/mozilla-special
Système normal, installation dans un endroit sûr d'abord
BUILD_ROOT=/opt/safe
HOST_ROOT=/
Encore des améliorations
Comme suggéré dans la documentation existante, on pourrait avoir
besoin de d'autres variables pour spécifier l'endroit où se trouve
sorcery ou les grimoires.
-
SORCERY_ROOT: racine des fichiers d'état de sorcery
("${SORCERY_ROOT}/etc/sorcery", "${SORCERY_ROOT}/var/cache/sorcery",
"${SORCERY_ROOT}/var/state/sorcery",
"${SORCERY_ROOT}/var/log/sorcery", )
Ceci peut être utilisé lorsque l'on construit un système chroot,
pour conserver l'état et la configuration du système chroot soit
dans le système chroot lui-même ou dans n'importe quel autre
endroit, différent du système de compilation.
Valeur par défaut: /
-
CODEX_ROOT: racine des grimoire. Par exemple, le grimoire stable
sera présent dans le répertoire "${CODEX_ROOT}/stable".
Valeur par défaut: /var/lib/sorcery/codex
Etat
Ce qui est décris ici n'est pas du tout implémenté.
Liens
|