Le fichier build

Rôle

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.

Contenu

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 :

  • la variable NPKG_PRJ_NAME, nom du projet à construire ;
  • la variable NPKG_PRJ_VERSION, version du projet à construire ;
  • la variable NPKG_RELEASE, version du paquet pour la version du projet ;
  • les variables 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 ;
  • les variables 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 ;
  • les variables 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 ;
  • la variable NPKG_PRJ_RES_DIR, chemin du répertoire dans lequel les ressources du projet sont placées ;
  • la variable NPKG_PACKAGING_DIR, chemin du répertoire dans lequel est placé le contenu du ou des NBAs en cours de construction ;
  • la variable NPKG_PATCHES_DIR, chemin du répertoire des correctifs (fichiers patchs) inclus dans le paquet ;
  • la variable NPKG_RES_DIR, chemin du répertoire des fichiers ressources inclus dans le paquet ;
  • la variable 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) ;
  • la variable NPKG_PRJ_BUILD_DIR, chemin du répertoire dans lequel le projet est construit ;
  • la variable NPKG_NBA_TARGET_DIR, chemin du répertoire dans lequel les NBAs doivent être générés ;
  • la fonction 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 ;
  • la fonction 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) ;
  • la fonction npkg_generate_product, fonction qui génère automatiquement le fichier product dans le répertoire spécifié par la variable NPKG_PACKAGING_DIR ;
  • la fonction npkg_generate_files, fonction qui génère automatiquement le fichier files dans le répertoire spécifié par la variable NPKG_PACKAGING_DIR ;
  • la fonction npkg_generate_fulldeps, fonction qui génère automatiquement le fichier fulldeps dans le répertoire spécifié par la variable NPKG_PACKAGING_DIR ;
  • la fonction 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.

Liste des étapes

Voici la liste des étapes (ainsi que leurs caractéristiques) dans l’ordre où elles sont exécutées.

Désarchivage des ressources

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.

post-désarchivage des ressources

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.

Pré-configuration du projet

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

Configuration du projet

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

Post-configuration du projet

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

Pré-construction du projet

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

Construction du projet

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

Post-construction du projet

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

Vérification de la construction

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

Pré-installation du projet

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

Installation du projet

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

Post-installation du projet

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 :

  1. cherche les fichiers de documentations AUTHORS, CHANGES, ChangeLog, COPYING, LICENSE, NEWS, NOTES, README* et TODO
  2. installe les fichiers de documentation trouvés dans le répertoire de documentation factice
  3. nettoie les binaires et librairies installés dans le répertoire NPKG_PRJ_FAKEROOT_DIR de leurs symboles
Pré-génération de NBA

Fonction : do_prepackage

Description : prépare la génération de paquets NBA.

Variables/fonctions utiles :

  • NPKG_PRJ_FAKEROOT_DIR

Comportement par défaut : aucun

Génération de NBA

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

Aide

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

 
fichier_build.txt · Dernière modification: 10/10/2007 19:56 par julienl
 
Recent changes RSS feed Creative Commons License Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki