Un fichier build
permet de décrire la procédure de construction d’un paquet NBA, du désarchivage des ressources, jusqu’à la génération du ou des paquet(s) NBA. La rédaction de ce fichier est à la charge du développeur de Nbuild.
La procédure de construction est décomposée en plusieurs étapes. Chaque étape possède un comportement par défaut. Dans le meilleur des cas, il n’est pas nécessaire de créer le fichier build
. C’est notamment le cas pour des projets utilisant un format d’archivage habituel (tar.gz, tar.bz2) et une procédure de construction classique (./configure; make; make install
). Dans ce cas, le fichier build
peut être simplement omis du Nbuild. Cependant, il peut arriver que le comportemant par défaut des étapes ne soit pas adapté à certains projets. Il est alors possible de redéfinir les instructions à exécuter pour certaines étapes.
Le fichier build
est un simple script Bourne Shell définissant une ou plusieurs fonctions. Chacune des fonctions correspond à une étape. Leur nom commence par “do_”.
Chaque fonction est facultative. Si la fonction n’est pas définie dans le fichier build
, c’est son comportement par défaut qui s’applique. Si le comportement par défaut d’une étape ne convient pas au développeur de Nbuild ou si il n’est pas adapté au projet traité, il est nécessaire de redéfinir la fonction correspondante dans le fichier build
.
Pour définir de nouvelles instructions pour une étape de construction donnée, il faut les placer dans le corps de la fonction correspondante.
Le développeur de Nbuild dispose des variables ou fonctions suivantes :
NPKG_PRJ_NAME
, nom du projet à construire ;NPKG_PRJ_VERSION
, version du projet à construire ;NPKG_RELEASE
, version du paquet pour la version du projet ;NPKG_CONFIG_OPTIONS
et NPKG_USER_CONFIG_OPTIONS
, options utilisées lors de la configuration du projet définies respectivement par le dévelopeur du Nbuild et par l’utilisateur ;NPKG_MAKE_OPTIONS
et NPKG_USER_MAKE_OPTIONS
, options utilisées lors de la construction du projet définies respectivement par le dévelopeur du Nbuild et par l’utilisateur ;NPKG_INSTALL_OPTIONS
et NPKG_USER_INSTALL_OPTIONS
, options utilisées lors de l’installation du projet définies respectivement par le dévelopeur du Nbuild et par l’utilisateur ;NPKG_PRJ_RES_DIR
, chemin du répertoire dans lequel les ressources du projet sont placées ;NPKG_PACKAGING_DIR
, chemin du répertoire dans lequel est placé le contenu du ou des NBAs en cours de construction ;NPKG_PATCHES_DIR
, chemin du répertoire des correctifs (fichiers patchs) inclus dans le paquet ;NPKG_RES_DIR
, chemin du répertoire des fichiers ressources inclus dans le paquet ;NPKG_PRJ_FAKEROOT_DIR
, chemin du répertoire racine factice (répertoire utilisé comme s’il s’agissait de la racine de l’arborescence du système) ;NPKG_PRJ_BUILD_DIR
, chemin du répertoire dans lequel le projet est construit ;NPKG_NBA_TARGET_DIR
, chemin du répertoire dans lequel les NBAs doivent être générés ;npkg_add_doc
, fonction qui ajoute, dans le répertoire factice de documentation, les fichiers ou répertoires dont les noms sont donnés en arguments ;npkg_strip_fakeroot_files
, fonction qui nettoie les binaires et librairies installés dans le répertoire factice de leurs symboles (symboles de debuggage notamment) ;npkg_generate_product
, fonction qui génère automatiquement le fichier product
dans le répertoire spécifié par la variable NPKG_PACKAGING_DIR
;npkg_generate_files
, fonction qui génère automatiquement le fichier files
dans le répertoire spécifié par la variable NPKG_PACKAGING_DIR
;npkg_generate_fulldeps
, fonction qui génère automatiquement le fichier fulldeps
dans le répertoire spécifié par la variable NPKG_PACKAGING_DIR
;npkg_create_nba
, fonction qui crée un paquet NBA à partir du nom donné en argument ; cette fonction génère automatiquement, si les fichiers n’existent pas, les fichiers product
, files
et fulldeps
; tout ceci est assemblé pour former un paquet NBA.Voici la liste des étapes (ainsi que leurs caractéristiques) dans l’ordre où elles sont exécutées.
Fonction : do_unpack
Description : réalise la décompression et le désarchivage des ressources.
Variables/fonctions utiles :
NPKG_PRJ_RES_DIR
NPKG_PRJ_BUILD_DIR
Comportement par défaut : pour toutes les ressources trouvées dans le répertoire NPKG_PRJ_RES_DIR
et selon le format des ressources trouvées, les décompresse et les désarchive dans le répertoire NPKG_PRJ_BUILD_DIR
. Les format s d’archives compressées pris en charge sont les suivantes : tgz (tar.gz), tbz2 (tar.bz2), zip, rar.
Fonction : do_postunpack
Description : réalise des instructions à exécuter suite au désarchivage des ressources du projet comme, par exemple, l’application des correctifs (fichiers patches) inclus dans le paquet.
Variables/fonctions utiles :
NPKG_PATCHES_DIR
NPKG_PRJ_BUILD_DIR
Comportement par défaut : cherche des fichiers patches dans le répertoire NPKG_PATCHES_DIR
puis, selon le format des fichiers trouvés, essaie de les appliquer sur le projet décompressé dans le répertoire NPKG_PRJ_BUILD_DIR
.
Fonction : do_preconfig
Description : met en place ou modifie certaines choses avant que l’environnement de construction/compilation soit généré à l’étape suivante. Il peut s’agir par exemple de modifier certains fichiers du projet ou de positionner des variables d’environnement.
Comportement par défaut : aucun
Fonction : do_config
Description : génère l’environnement de construction/compilation. Si le projet utilise les outils de compilation GNU, c’est à cette étape que le script ./configure
doit être lancé.
Variables/fonctions utiles :
NPKG_CONFIG_OPTIONS
NPKG_USER_CONFIG_OPTIONS
Comportement par défaut : si un fichier configure
existe, lance la commande suivante : ./configure $NPKG_CONFIG_OPTIONS $NPKG_USER_CONFIG_OPTIONS
Fonction : do_postconfig
Description : met en place ou modifie certaines choses suite à la configuration de l’environnement de construction/compilation. Il peut s’agir par exemple de modifier certains fichiers du projet.
Comportement par défaut : aucun
Fonction : do_premake
Description : met en place ou modifie certaines choses dans l’environnement de construction/compilation généré avant que la construction soit effectivement effectuée à l’étape suivante. Il peut s’agir par exemple de modifier certains fichiers ou de positionner des variables d’environnement.
Comportement par défaut : aucun
Fonction : do_make
Description : lance la construction du projet. Si le projet utilise les outils de compilation GNU, c’est à cette étape que la commande make
doit être lancée.
Variables/fonctions utiles :
NPKG_MAKE_OPTIONS
NPKG_USER_MAKE_OPTIONS
Comportement par défaut : si un fichier Makefile
ou makefile
ou GNUmakefile
existe, lance la commande suivante : make $NPKG_CONFIG_OPTIONS $NPKG_USER_CONFIG_OPTIONS
Fonction : do_postmake
Description : met en place ou modifie certaines choses dans l’environnement de construction/compilation suite à la construction. Il peut s’agir par exemple de modifier certains fichiers.
Comportement par défaut : aucun
Fonction : do_check
Description : vérifie que le résultat de la construction du projet est correct. Si le projet utilise les outils de compilation GNU et qu’il offre cette fonctionnalité, un simple make check
ou make test
permet de lancer une série de tests pour valider que l’application s’est compilée correctement. C’est particulièrement important pour les librairies de base du système.
Comportement par défaut : aucun
Fonction : do_preinstall
Description : prépare l’environnement avant que le projet soit installé à l’étape suivante dans le répertoire racine factice, un répertoire utilisé comme s’il s’agissait de la racine de l’arborescence du système.
Variables/fonctions utiles :
NPKG_PRJ_FAKEROOT_DIR
Comportement par défaut : aucun
Fonction : do_install
Description : procède à l’installation du projet dans le répertoire racine factice. Si le projet utilise les outils de compilation GNU, cette opération est réalisée en faisant appel à la commande make DESTDIR=$NPKG_PRJ_FAKEROOT_DIR install
.
Variables/fonctions utiles :
NPKG_PRJ_FAKEROOT_DIR
NPKG_INSTALL_OPTIONS
NPKG_USER_INSTALL_OPTIONS
Comportement par défaut : si un fichier Makefile
ou makefile
ou GNUmakefile
existe et qu’il existe une cible install
dans l’un de ces fichiers, lance la commande suivante : make $NPKG_CONFIG_OPTIONS $NPKG_USER_CONFIG_OPTIONS DESTDIR=”$NPKG_PRJ_FAKEROOT_DIR” install
Fonction : do_postinstall
Description : « finalise » l’installation du projet dans le répertoire racine factice. Tout dépend ici des besoins du projet, il peut s’agir par exemple de créer un fichier de configuration par défaut. Cette étape est également utilisée pour copier les ressources incorporées au Nbuild, comme un fichier *.desktop
par exemple. Enfin, c’est une étape appropriée pour nettoyer les fichiers objets (binaires et librairies) de leurs symboles (comme les symboles de débuggage par exemple), ce qui permet de réduire leur taille.
Variables/fonctions utiles :
NPKG_PRJ_FAKEROOT_DIR
npkg_add_doc
npkg_strip_fakeroot_files
Comportement par défaut :
AUTHORS
, CHANGES
, ChangeLog
, COPYING
, LICENSE
, NEWS
, NOTES
, README*
et TODO
NPKG_PRJ_FAKEROOT_DIR
de leurs symbolesFonction : do_prepackage
Description : prépare la génération de paquets NBA.
Variables/fonctions utiles :
NPKG_PRJ_FAKEROOT_DIR
Comportement par défaut : aucun
Fonction : do_package
Description : génère le paquet NBA avec le contenu du projet installé dans le répertoire racine factice. (Ajouter la possibilité de générer plusieurs NBAs à partir d’un seul Nbuild est à l’étude. L’idée est de séparer en plusieurs paquets NBA le résultat de la construction du projet pour que l’utilisateur final n’installe que les “parties” du projet dont il a besoin.)
Variables/fonctions utiles :
NPKG_PRJ_FAKEROOT_DIR
npkg_create_nba
Comportement par défaut : lance la commande npkg_create_nba
Fonction : do_help()
Description : donne de l’aide sur la façon de paramétrer le processus de construction du paquet NBA. Cette étape particulière n’est pas associée à une étape du processus de construction du projet. Elle est utile lorsque l’utilisateur veut obtenir des informations sur la manière dont le projet est construit, afin de positionner les variables NPKG_USER_CONFIG_OPTIONS
, NPKG_USER_MAKE_OPTIONS
et NPKG_USER_INSTALL_OPTIONS
. Cette étape peut, par exemple, afficher les options utilisables pour la génération de l’environnement de construction/compilation (les options du script ./configure
dans le cas des outils de compilation GNU), celles qui sont utilisables pour la construction du projet (étape do_make
), ou encore afficher le contenu des fichiers README
ou INSTALL
s’ils sont fournis dans les ressources du projet.
Comportement par défaut : aucun