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