Un paquet Nbuild est une archive tar renfermant toutes les informations et ressources nécessaires pour “construire un projet” et l’emballer dans un paquet Nba.
Un “projet” consiste généralement en un logiciel, et le “construire” revient à compiler ses fichiers sources pour obtenir une application exécutable. Un paquet Nba est alors généré avec le résultat de cette compilation. Mais un project peut aussi être autre chose qu’un logiciel. Il peut s’agir d’une documentation, d’un ensemble de polices de caractères ou d’images, d’un thème de curseur souris ... Pour ce type de projet, il n’y a pas de fichiers sources à compiler, mais simplement des fichiers de nature diverse à “préparer” pour qu’ils soient installés de la manière la plus appropriée grâce à un paquet Nba. Aussi, on parle plus généralement des “ressources” d’un projet pour désigner l’ensemble des fichiers qui le constituent, qu’il s’agisse de fichiers sources ou de fichiers d’un tout autre type.
Toutes les informations contenues dans un paquet Nbuild sont exploitées par la commande Build de Ncooker. C’est elle qui permet de générer un paquet Nba à partir d’un paquet Nbuild.
Hormis les nbuilds classiques, générant des paquets Nba, des nbuilds particuliers peuvent être créés : ils ne construisent pas de projets, mais exécutent simplement des commandes (voir le fichier build plus loin). Un tel nbuild pourrait être utilisé pour configurer les droits d’accès aux différents répertoires par exemple. Cela permettrait aussi d’avoir des ‘saveurs’ de Nasgaïa. Suivant le niveau de sécurité que l’on veut, un paquet spécifique peut servir à définir le comportement général.
Le fichier infos est un document au format xml contenant des informations sur le projet et sur le paquet Nbuild lui-même. Ncooker utilise un schéma XML pour vérifier facilement sa syntaxe et sa structure à l’aide de l’utilitaire XMLStarlet. Toute anomalie est alors détectée, qu’il s’agisse d’un texte mal placé ou de l’utilisation d’une balise non reconnue.
Le fichier est composé de deux parties :
<project>
), parmi lesquelles on retrouve son nom (<name>
), sa version (<version>
), sa licence (<licence>
), son auteur (<author>
), son copyright (<copyright>
) et l’adresse de son site web (<homepage>
). Viennent ensuite une description de ses fonctionnalités dans différentes langues (<purpose>
), et la définition de son domaine d’application (<domain>
), avant de terminer par la liste des ressources qui le composent (<resources>
) et les options de construction à utiliser par défaut (<build>
).<package>
) qui comprennent le numéro de release actuel du paquet (<release>
), et les modifications qui ont été apportées aux releases précédentes (<changelog>
).Son rôle
La construction du projet est réalisée en plusieurs étapes par la commande build de Ncooker. Pour l’ensemble de ces étapes, elle sélectionne un jeu d’instructions internes prédéfini et adapté au projet. Le choix du jeu d’instructions à utiliser se fait en fonction de certains fichiers présents ou non dans les ressources du projet, et les instructions associées à chaque étape ne sont exécutées que si elles sont appropriées.
Il peut arriver cependant que les instructions utilisées par défaut ne soient pas adaptées à certains projet. C’est ici que le fichier “build” trouve son utilisé : il est possible de redéfinir les instructions à exécuter pour certaines étapes en les plaçant dans ce fichier.
Son contenu
Au sein du fichier build, les instructions sont regroupées dans des fonctions dont le nom commençe par “do_*”. Chacune d’elles correspond à une étape donnée du processus de fabrication conduisant à l’obtention d’un paquet NBA.
Voici la liste des fonctions (et donc des étapes) dans l’ordre où elles sont appelées par Ncooker :
./configure
doit être lancé.make
doit être lancée.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.make DESTDIR=$PRJ_FAKEROOT_DIR install
où la variable $PRJ_FAKEROOT_DIR
, positionnée par Ncooker, contient le chemin d’accès au fakeroot.*.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. ./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.Pour définir de nouvelles instructions pour une étape de construction donnée, il faut les placer dans le corps de la fonction “do_*” correspondante du fichier build.
Les ressources propres à un projet en sont pas intégrées directement dans un paquet Nbuild. Seules les informations permettant de les récupérer sur Internet sont fournies. Cependant, le paquet Nbuild peut intégrés directement des ressources supplémentaires comme des correctifs (patches) ou des fichiers complémentaires tels que des fichiers de configuration, par exemple.
Les patches doivent être placés dans un dossier patches/
à l’intérieur du paquet Nbuild. Ils seront automatiquement appliqués aux ressources du projet par Ncooker.
Les autres ressources doivent être placés dans un dossier res/
. Elles ne sont pas traitées automatiquement, et il est nécessaire de redéfinir la fonction do_postinstall()
dans le fichier build pour indiquer comment elles doivent être utilisées.
Les Nbuilds officiels, livrés par défaut sur le CD d’installation de la distribution Nasgaïa et ceux ajoutés et vérifiés par l’équipe de dev, devraient être signés. Les Nbuilds de contribution ou les Nbuilds officiels modifiés, ne devraient pas être signés, ou du moins ne pas l’être par rapport à une signature provenant de Nasgaïa.