Salut tout le monde,

Lors du dernier week-end, j'ai refait des tests de Ncooker afin de valider les problèmes que j'avais trouvés.


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.

Oui, je te rejoins là dessus.


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.

J'ai installé la version 3 de bash. Dès que j'ai voulu lancer une commande du style "Ncooker check mon_nbuild.nbuild", il me sortait une erreur comme quoi la commande "checkmon_nbuild.nbuild" était inconnue. On ne pouvait rien faire avec Ncooker. J'ai analysé le problème et j'ai vu que cela venait de l'analyse des arguments de la ligne de commande. J'ai fait une correction rapide pour continuer mes tests. J'imagine que le problème a été détecté et corrigé sur CVS tellement c'est énorme.


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.

Je n'ai pas encore essayé cela.


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 :-)

Je n'ai pas vu de problème sur le listage des erreurs. Par contre, il serait intéressant de préciser le fichier qui pose problème pour chaque erreur. J'ai l'impression que c'est fait pour certaines erreurs mais pas pour d'autres.


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 :-).

D'accord. On en rediscutera.


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

Vu. :)


> - 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 réessayé et cela fonctionne... à moitié. Les fichiers indésirables situés à la racine du répertoire du nbuild sont bien ignorés mais les fichiers indésirables contenus dans les sous-répertoires sont archivés.

Est-ce que tu as lu la solution que je proposais ? Une solution consiste à re-exclure les fichiers indésirables avec l'option --exclude du tar).


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.

Je n'ai plus eu de problème.


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 ;-)

Bonne réactivité des développeurs. C'est beau à voir. :)


++
Gontran

A+

--
Julien

_________________________________________________________________
MSN Hotmail : choisissez votre adresse @hotmail.fr http://www.imagine-msn.com/hotmail/default.aspx?locale=fr-FR


Répondre à