Hello everybody, Un petit nouveau au pays du Nbuild : le fichier « changelog » :^)
Par définition, un fichier changelog est un « journal des modifications apportées à un programme ou un projet quelconque ». Dans notre cas, il s'agira des modifications apportées à un paquet Nbuild. Le terme « journal » implique qu'il y ait une notion de temps, un auteur et un contenu : - le contenu a déjà été défini précédemment : c'est la liste des modifications apportées à une version donnée d'un paquet Nbuild ; - l'auteur est celui qui réalise ces modifications et qui les notifie dans le changelog ; - le temps est tout simplement la date à laquelle la nouvelle release du Nbuild est créée avec ces modifications. Comment faire figurer toutes ces informations dans le changelog ? Je propose le principe suivant : Chaque nouvelle entrée dans le fichier changelog doit être placée au début du fichier, _avant_ les éventuelles entrées de modifications qui s'y trouvent déjà. Le nbuilder doit juste ajouter une entrée de la forme : % <texte sur les modifications apportées à cette version du paquet> Exemple : « % - Initial release. » La version du paquet, l'auteur et la date seront ajoutés automatiquement par la commande « Ncooker pack » de la manière suivante : * elle récupère la première ligne du changelog commençant par % * si cette ligne ne contient rien d'autre que %, elle y ajoute les infos pour obtenir : % ($NPKG_PRJ_VERSION-nga$NPKG_RELEASE) $NC_PKG_AUTHOR <date> Exemple : dans le fichier log, je mets « % - Initial release. » après avoir lancé Ncooker pack, le fichier changelog du nbuild contient : « % (1.0-nga1) nom_author <[EMAIL PROTECTED]> Wed Mar 30 12:45:06 2005 - Initial release. » Le lendemain, je modifie le nbuild. J'incrémente NPKG_RELEASE dans le fichier infos, et met à jour le fichier changelog qui devient : « % - Fix permission bits of executable :^) % (1.0-nga1) nom_author <[EMAIL PROTECTED]> Wed Mar 30 12:45:06 2005 - Initial release » après avoir lancé Ncooker pack, il contient : « % (1.0-nga2) nom_author <[EMAIL PROTECTED]> Thu Mar 31 13:00:00 2005 - Fix permission bit of executable :^) % (1.0-nga1) nom_author <[EMAIL PROTECTED]> Wed Mar 30 12:45:06 2005 - Initial release » Dans le cas où le nbuilder ajoute des modifications successives pour une même release d'un paquet, il n'a pas besoin de toucher à la ligne commençant par %, il suffit juste qu'il complète la description de ses modifications. Lorsqu'il lancera la commande « Ncooker pack » à nouveau, elle procédera de la manière suivante : * elle récupère la première ligne du changelog commençant par % * Si la ligne contient déjà des infos : - elle vérifie que le numéro de release indiqué correspond à la valeur de NPKG_RELEASE du fichier infos, sinon erreur : le fichier changelog n'a pas été mis à jour pour le nouveau numéro de release - elle vérifie que l'auteur indiqué correspond à la valeur de NC_PKG_AUTHOR du fichier Ncooker.conf, sinon erreur : la dernière entrée du changelog n'a pas été faite par l'auteur de la nouvelle release, ce qui signifie probablement que le numéro de release n'a pas été incrémenté et le changelog pas mis à jour - elle compare la date de modification du fichier changelog avec le champ <date> de la ligne % .... Si elle est supérieure, <date> est mise à jour dans le fichier. Pour assurer une « certaine » cohérence au fichier changelog, la commande « Ncooker check » ferait les vérifications suivantes : * Dans le cas où elle vérifie un répertoire de travail pour créer un nbuild : - vérifier que seule la première ligne du fichier commençant par % soit éventuellement vide - vérifier que les autres lignes commençant par % possède bien les infos voulues. - vérifier que les lignes successives commençant par % ont des versions de paquets dans l'ordre décroissant - vérifier qu'aucune entrée du changelog est vide * Dans le cas où elle vérifie un paquet NBUILD : - vérifier que toutes les lignes commençant par % possède bien les infos voulues. - vérifier que les lignes successives commençant par % ont des versions de paquets dans l'ordre décroissant - vérifier qu'aucune entrée du changelog est vide Voilà je pense que ce principe simplifie la création du changelog tout en le gardant cohérent. La seule chose dont le nbuilder doit se préoccuper est le texte décrivant ses modifications. Les autres informations sont gérées de manière transparente. En fait, (presque) tout le travail est dans les mains de Ncooker au lieu de celles du Nbuilder :^) Gontran
