Le Mardi 3 Mai 2005 19:57, Julien L. a écrit :
> Salut tout le monde,
>
> Le week-end dernier, j'ai repris les tests de Ncooker avec une version CVS
> datant du 24/04/2005.

Merci beaucoup Julien ;-) Ça me fait vraiment très plaisir que tu fasses 
régulièrement des tests de Ncooker.

> Voici mes remarques :
>
> - après avoir intallé la dernière version de gettext, je n'ai pas de
> traduction en français. Est-ce que c'est normal ?

Oui. Le code de Ncooker évolue constamment, et les messages d'information 
aussi. Du coup, les premières traductions qui ont été faites ne sont plus 
valables. Les messages restent donc en anglais. En ce qui me concerne, je ne 
m'occupe absolument pas de la traduction des messages. Et je pense que le 
mieux est d'attendre d'avoir une version bêta de Ncooker pour commencer à 
s'attaquer aux traductions.

> - Lorsque j'ai voulu commencer les choses sérieures (appel à Ncooker
> check), je me suis retrouvée en face d'une erreur de syntaxe bash. Il
> semblerait que mon bash n'apprécie pas le symbole "=~" qui apparaît trois
> ou quatre fois dans check.sh. D'où vient cette erreur ? Je ne sais pas
> pourquoi mais je sens que vous allez me dire que mon bash est top vieux...
> Pour continuer mes tests, j'ai mis les lignes de code provoquant l'erreur
> en commentaire.

Tu as vu juste :-). l'opérateur « =~ » est apparu avec la version 3.x du Bash, 
et permet de faire correspondre des chaînes de caractères à des expressions 
régulières POSIX. J'ai préféré utiliser cette méthode au lieu des motifs 
génériques du Bash (*, ? ...) car elle permet de vérifier plus précisément le 
format des valeurs fournies et donc apporte plus de robustesse à Ncooker. 
L'inconvénient est que, du coup, Ncooker dépend au minimum de la version 3 du 
Bash.

> - Ncooker m'a indiqué qu'il n'arrivait pas à trouver le fichier
> NcookerTroveNodes. Il essayait de le chercher dans le répertoire
> /var/Ncooker/INST_ROOT/SYSTEM/ncooker-20050424/data/usr/share/Ncooker2. En
> fait, pour installer Ncooker (le nouveau), j'utilise l'ancien Ncooker
> (celui de la Nasgaia 1.0.1). Dans mon nbuild, je demande à changer le
> répertoire /usr/share/Ncooker par /usr/share/Ncooker2 (pour ne pas écraser
> l'ancienne version de Ncooker). Résultat : dans le fichier Ncooker.conf, le
> paramètre indiquant ce répertoire indique
> /var/Ncooker/INST_ROOT/SYSTEM/ncooker-20050424/data/usr/share/Ncooker2.

Le fichier Makefile connaît les différents répertoires à utiliser pour 
installer Ncooker grâce au fichier MConfig. Tu peux y jeter un oeil, il 
contient des variables pour chaque répertoire utilisé (normalement). Si tu 
veux utiliser un autre répertoire que /usr/share/Ncooker, tu peux modifier 
ton nbuild comme ceci :

do_make () {
    make SHARE_DIR=/usr/share/Ncooker2
}

Pour modifier d'autres emplacements, il suffit d'utiliser la variable 
correspondante.

> - Quand Ncooker vérifie le nbuild, j'ai l'impression qu'il donne les
> erreurs pour un seul fichier. Il est nécessaire de corriger toutes les
> erreurs du fichier pour passer à la vérification des erreurs suivantes.
> Serait-il possible que Ncooker donne les erreurs de tous les fichiers d'un
> seul coup ?

En fait, c'est pire que ça :-), il ne donne pas toutes les erreurs pour un 
même fichier, mais s'arrête à la première erreur trouvée, quel que soit le 
fichier.
Mais ton voeu est exaucé car c'est précisément l'objet de mon dernier travail 
sur la commande Check :-). Désormais, toutes les erreurs sont recherchées et 
affichées en une seule fois. Une nouvelle option -b|--break-on-failure permet 
de retrouver l'ancien comportement. N'hésite pas à tester à profondeur, car 
cela a nécessité des changements importants, et même si j'ai essayé de tester 
le plus possible, il se peut fort bien que des bugs traînent :-)

> - Pour pouvoir créer des nbuilds avec un utilisateur "normal", j'ai créé un
> fichier Ncooker.conf dans $HOME/.Ncooker. J'y ai positionné la variable
> NC_SRC_CACHE_DIR à "~/.Ncooker/src". Dans le répertoire "src", j'y ai mis
> les archives sources. Ncooker m'indique alors que l'archive n'est pas
> présente dans les sources et me crée un répertoire "~/.Ncooker/src" (ce
> répertoire "~" a été super galère à supprimer d'ailleurs). Après analyse du
> code, je me suis rendu compte qu'il était préférable de positionner la
> variable NC_SRC_CACHE_DIR à ${HOME}"/.Ncooker/src" pour que cela
> fonctionne. Est-ce que tout cela vous paraît normal ?

C'est un problème que j'avais déjà remarqué. Ça vient du fait que la valeur de 
NC_SRC_CACHE_DIR est entourée de guillemets. Si tu enlèves les guillemets, 
tout fonctionne comme prévu.

Je ne sais pas s'il est possible d'y faire qqchose, car il s'agit d'un 
comportement décrit dans le manuel Bash :
« Chaque  affectation  de  variable  est soumis au développement du tilde S'IL 
SUIT IMMÉDIATEMENT un : ou  un  =. »

Dans ton cas, le signe ~ n'est pas immédiatement précédé du signe = mais du 
caractère ".

Puisqu'on en parle, ça fait déjà plusieurs jours que je réfléchis au format 
des fichiers de configuration Ncooker.conf et du fichiers infos (qui 
utilisent la même syntaxe). Je trouve que cette syntaxe est trop 
« contraignante ». De plus, elle peut introduire des failles de sécurité, car 
ces fichiers étant des scripts bash, il suffit d'y introduire des commandes 
malicieuses pour causer des dégâts sur le système. Je pense que ces fichiers 
ne doivent pas être des scripts bash mais de simples fichiers de 
configuration « texte ». Je vais faire un autre post pour proposer qqchose, 
histoire de ne pas mélanger les fils de discussion :-).

> - J'ai créé un fichier changelog avec le contenu suivant :
>    %
>    - Creation
> Après deux lancements de "Ncooker pack", je me suis apercu que le fichier
> changelog avait pris le contenu suivant :
>    % 1.0-nga1 Julien ...
>    - Creation
>    - Creation
>    - Creation

Le code pour renseigner le fichier changelog est inachevé, donc laisse tomber 
cette partie pour le moment ;-)

> - l'exclusion des fichiers *~, #*#, CVS et autres ne semblent pas
> fonctionner. Après analyse de code, j'ai vu deux problèmes :
> 1) A la construction de la ligne de commande du tar, on se retrouve avec
> l'option '--exclude ~' au lieu de '--exclude "~*"'
> 2) Une subtilité expliquée dans les pages d'info du tar explique que les
> fichiers explicitement listés à la création d'une archive ne peuvent pas
> être exclus par "--exclude". Dans Ncooker, on fait :
> tar cf foo.nbuild --exclude "*~" *
> Cela revient à exécuter :
> tar cf foo.nbuild --exclude "*~" infos infos~ desc desc~ changelog
> changelog~ build build~
> Tous les fichiers apparaissent dans l'archive, malgré l'option "--exclude".
> Une solution à ce problème pourrait être de passer par la commande ls.
> Exemple :
> tar cf foo.nbuild --exclude "*~" --exclude "CVS" `ls --ignore '*~' --ignore
> 'CVS'`
> (on conserve les options --exclude pour exclure les fichiers qui sont dans
> les sous-répertoires du répertoire du nbduild)

J'ai fait des modifications récemment sur ce point, peux-tu réessayer avec la 
dernière version dans CVS ?

> - J'ai essayé de créer un nbuild avec plusieurs archices sources :
> NPKG_PRJ_SRC_URLS[0]="http://.../source1.tar.bz2";
> NPKG_PRJ_SRC_URLS[1]="http://.../source2.tar.bz2";
> NPKG_PRJ_SRC_URLS[2]="http://.../source3.tar.bz2";
> Cela n'a pas fonctionné. Il m'a indiqué que les fichiers n'avaient pas le
> même nom. C'est pourtant normal puisque ce sont trois archives différentes.

La variable NPKG_PRJ_SRC_URLS est l'une des variables ayant le plus de 
vérifications. J'ai essayé de les coder pour faire en sorte quelles ne soient 
pas trop longues à s'exécuter, mais cette optimisation peut avoir des effets 
de bord :-) Là encore, ces tests ont été remaniés lorsque j'ai modifié la 
commande Check pour que toutes les vérifications se fassent en une seule 
fois. Réessaye avec la dernière version de Ncooker dans CVS et dis-moi si le 
pb persiste.

> Voilà pour aujourd'hui.
> Malgré toutes ces remarques, j'ai été globalement impressionné par la
> qualité du logiciel. J'ai l'impression que c'est vraiment une bonne base
> pour quelque chose de puissssssant.

Merci beaucoup :-) Le mérite n'en revient pas seulement aux développeurs, mais 
également aux testeurs, dont le rôle est tout aussi important, si ce n'est 
plus :-) . Je te remercie encore pour tous ces tests, et j'encourage vivement 
les autres participants à prendre un peu de temps pour tester eux aussi cet 
outil important du Projet. Je teste toujours le code que je fais, mais ayant 
raisonné avec une « certaine logique » pour l'écrire, je n'ai pas toujours le 
recul nécessaire pour penser à tous les cas d'erreurs possibles. Un regard 
extérieur est donc plus que jamais indispensable pour détecter ces oublis ;-)

++
Gontran

Répondre à