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

Répondre à