Bonsoir,

Bonjour,


Voici un petit mail pour vous faire part de mes intérrogations vis à vis de la
gestion des dépendances dans Ncooker.

Il n'est pas trop tard pour y apporter des modifications et je suis ouvert à toutes améliorations.


J'aimerais préciser, s'il en est besoin, que le but de ce mail n'est pas de
relancer une série de débats comme on en a connu par le passé. Il fait suite à
une discussion avec Julien au cours de laquelle notre point de vue a
_positivement_ divergé ce qui nous a poussés a souhaiter plus d'informations.

Je confirme. :)


Ncooker scinde les dépendances en trois :

  builddeps
Ces dépendances doivent être satisfaites pour qu'un programme puisse être
      compilé.

  basicdeps:
Ces dépendances doivent être satisfaites pour qu'un programme puisse être
      éxécuté.

  fulldeps:
      Ces dépendances sont obtenues de manière automatique à partir des
programmes/fichiers résultants de la phase `build'. Elles reflètent des
      dépendances à satisfaire pour que les éxcutables puissent-être ..
      éxécutés.

Je suis globalement d'accord avec toi jusque là mais j'ai deux remarques :
1) Je préfère les termes "construit" et "utilisé" en lieu et place des termes "compilé" et "executé". C'est plus générique. 2) le fichier "fulldeps" n'est pas obligatoirement obtenu de manière automatique. Rien ne t'empêche de te passer de Ncooker et de créer un paquet NBA avec en y mettant les fichiers qui vont bien. Ncooker n'est finalement qu'un outil permettant de faciliter la création de paquets NBA.


Comme je le souligne dans le rapport de bug #6967 [1], je pense que `bascideps'
ne devrait pas être analysé lors de la commande `build' [2].

Julien pense au contraire que les dépendances doivent être vérifiées lors de la commande 'build', auquel cas la séparation des dépendances n'a plus de sens et
ajoute même une certaine compléxité tant pour les traitements que pour la
création (par les humains) des Nbuilds.

En fait, je suis parti de l'idée que la plupart des dépendances d'utilisation sont des dépendances de construction. Par exemple, un programme en GTK+ aura besoin de GTK+ pour la construction et pour l'utilisation. A partir de là, il me semblait dommage de forcer le développeur de Nbuild à répéter les mêmes dépendances dans les deux fichiers.


Il me semble donc évident qu'il faut soit modifier le comportement de Ncooker de façon à ce qu'il n'évalue que `builddeps' lors de la commande `build' (ce
que je suis prêt à faire), soit simplifier la stratégie vis à vis des
dépendances.

Sur ce dernier point, on peut même envisager n'utiliser qu'un seul fichier.

L'idée du fichier builddeps est plutôt de lister les dépendances d'outils nécessaires à la construction du paquet (compilateur, make, langage de scripts, ...). Il me semble donc nécessaire d'avoir deux fichiers.


Le fait est que nous ne sommes pas tombés d'accord sur ce point mais que nous avons tous deux considéré l'avis de l'autre avec intérêt car ils ont tous deux
des avantages et des inconvénients.

Je suis d'accord que l'un et l'autre points de vue se valent. J'espère que d'autres personnes apporteront leur grain de sel. ;)


Mon autre question concerne le contenu des fichiers de dépendances [3]. Il est possible d'y spécifier, outre le nom d'un paquet, le nom d'un fichier tel que
`lib/foo' ou encore `bin/bar'.

Cela a probablement été discutté par le passé, mais je pense qu'il s'agit d'une
mauvaise idée.

En effet, si on dispose d'un paquet `foo' qui dépend du fichier `bin/baz',
Ncooker doit disposer de la liste _complète_ des fichiers fournis par _tous_
les paquets éxistants pour résoudre corrèctement les dépendances.

Cela soulève de nombreux problèmes:

  - Liste de fichiers lourde ;
  - Résolution des dépendances lourde ;
  - Compléxité induite pour créer un dépot [4].

Ce comportement est d'autant plus discuttable que la base de données de paquets
installés sur le système créant le paquet dispose de _tous_ les éléments
nécessaires pour résoudre 'nom de fichier' -> 'paquet'.

Au final, et selon moi, l'utilisateur ne devrait pas pouvoir spécifier de noms de fichiers (ce n'est pas plus simple pour lui et n'apporte au final pas grand
chose). Ncooker devrait en revanche continuer à utiliser ses procédés
automatiques de génération des dépendances et résoudre la relation 'nom de
fichier' -> 'paquet' lorsque nécessaire.

A vrai dire, je ne comprends pas vraiment le problème. Est-ce que tu pourrais préciser s'il te plait ?

Néanmoins, je te donne quelques précisions sur le fonctionnement de Ncooker : - lorsque qu'une dépendance précise un nom de fichier et un paquet, on regarde d'abord si le paquet existe puis ensuite, on vérifie que le fichier fait bien partie du paquet ; - le fichier fulldeps est généré de sorte qu'il y ait toujours un paquet précisé pour chaque dépendance (exceptions faites des fichiers fulldeps faits à la main, ou des fichiers fulldeps générés avec l'option --ignore-deps) ; - lorsqu'une dépendance ne précise qu'un fichier et que ce fichier est manquant, il n'est pas prévu qu'on indique le paquet à installer pour résoudre la dépendance.


Voilà pour mes remarques. Bisous et à un de ces jours.

[1] https://gna.org/bugs/?6967
[2] `fulldeps' n'est pas concerné car il n'existe pas encore.
[3] C'est cela dont j'ai oublié de te parler Julien.
[4] Le seul moyen d'obtenir la liste des fichiers fournis pas un paquet est de
    le construire (build).

--
Benoit Myard <[EMAIL PROTECTED]> [0x3EEC1AEC] :wq!

A+

--
JulienL

_________________________________________________________________
Windows Live Messenger sur i-mode™ : dialoguez avec vos amis depuis votre mobile comme sur PC ! http://mobile.live.fr/messenger/bouygues/


_______________________________________________
Nasgaia-dev mailing list
[email protected]
https://mail.gna.org/listinfo/nasgaia-dev

Répondre à