View previous topic :: View next topic |
Author |
Message |
PabOu Veteran
Joined: 11 Feb 2004 Posts: 1088 Location: Hélécine - Belgium
|
Posted: Mon Aug 07, 2006 5:22 pm Post subject: [GLEP] useflags obligatoires avant l'emerge |
|
|
Bonjour,
Je souhaite proposer une GLEP. Pour ceux qui ne savent pas ce que c'est, je vous renvoie à la page du projet. Mais avant de faire la proposition, j'aurais voulu en débattre avec vous afin de savoir si ca peut réellement être utile, si je n'ai pas fait d'erreur, et pour vérifier qu'il n'existe rien de semblable qui me serait passé sous le nez.
Mon idée est simple et je vous l'expose :
Il vous est surement déjà arrivé de lancer un emerge, et qu'il y ait plusieurs dépendances à emerger. Il vous est peut-être déjà arrivé également qu'un emerge se stoppe parcequ'il manque un useflag dans un autre paquet. C'est embêtant lorsque l'emerge tourne depuis plusieurs minutes/heures et qu'il s'arrête brutalement. On est pas toujours là pour le voir, et on doit relancer l'emerge.
J'aimerais donc que portage possède une nouvelle feature qui, lorsque l'on fait un emerge, vérifie à l'avance les flags nécessaires pour les compilations à effectuer (en prenant en compte les paquets déjà installés et ceux qui sont inclus dans la liste à emerger). Si un flag est manquant, il nous prévient alors directement, sans devoir attendre d'arriver au paquet qui à une dépendance avec un useflag spécifique, et on pourrait ajouter ce qu'il faut à notre make.conf ou package.use
exemple concret en "image" :
emerge XYZ -av: |
These are the packages that would be merged, in order:
Calculating world dependencies... done!
[ebuild N ] spirou/AZERTY-0.7.23 USE="xml -minimal" 985 kB
[ebuild N ] luckyluke/qwerty-0.1.2 USE="-fftw -sndfile" 691 kB
[ebuild N ] gastonlagaffe/gaffophone-0.7.23 USE="mp3 ogg -minimal -vorbis" 985 kB
[ebuild N ] schtroumpf/XYZ-2.0 USE="-fftw -sndfile" 691 kB
Error : package XYZ-2.0 needs package gentoopowa/ABC compiled with useflag 'flag1' |
Dans cet exemple, sans ma proposition, on aurait du attendre d'arriver à la compilation de XYZ avant de remarquer qu'on a besoin du useflag xxx pour le paquet ABC. Tout le monde n'a pas les yeux rivés devant un emerge en attendant une éventuelle erreur. Pire encore : si ABC était une dépendance qui se trouvait dans la liste à emerger suite à notre commande, et bien on l'aurait compilé une fois pour rien (deux fois en tout : une fois sans le useflag dont on a besoin, et une fois avec).. et si ce paquet est long à compiler, c'est d'autant plus de temps perdu
Avantages de cette feature : - dans certains cas, on pourrait éviter de recompiler plusieurs fois un paquet (php par exemple, qui est très lourd) => gain de temps
- le temps de remarquer le problème du useflag manquant et puis de relancer l'emerge => gain de temps
Pour la réalisation de cette feature, je propose une petite modification dans le format des ebuilds (je pense avoir besoin de votre avis ici) :
dans les DEPENDS, à la suite d'un paquet, on mettrais entre crochets tous les flags obligatoires pour ce paquet (ou aucun comme actuellement si aucun flag spécifique n'est requis). Je reprends mon exemple précédent pour illustrer l'ebuild :
XYZ-2.0.ebuild: | ...
DEPEND="spirou/AZERTY
gastonlagaffe/gaffophone
gentoopowa/ABC [flag1 flag2]
virtual/x11"
... |
Vos avis, remarques, reflexions, toucakoi ?
ps : je pourrai peut-être utiliser la balise [glep] sur ce forum ;-) _________________ Mangez du poulet ! |
|
Back to top |
|
|
Enlight Advocate
Joined: 28 Oct 2004 Posts: 3519 Location: Alsace (France)
|
Posted: Mon Aug 07, 2006 9:05 pm Post subject: |
|
|
Ca fait longtemps que j'y pense car ce serait THE moyen de résoudre les problèmes de dépendances circulaires (et de restaurer la gloire du stage1 toussa) , mais ça me parraît très peux compatible avec le design actuel de portage et extrèmement difficle à implémenter.
Pour l'instant tu propose la syntaxe, le parsing n'est probablement pas un problème en revanche, il faudrait voir comment implémenter une structure de gestion des données viable etc... ça pourrait être intéressant surtout qu'on devrait être totalement libre de choisir le langage dans lequel coder, il suffirait d'appeler la commande ebuild une fois les deps calculées histoire de pas réinventer la roue. en tout cas le sujêt me branche carrément. |
|
Back to top |
|
|
At0m3 Tux's lil' helper
Joined: 10 Jun 2006 Posts: 123
|
Posted: Mon Aug 07, 2006 10:12 pm Post subject: |
|
|
Je suis sceptique parce que je me souviens que ce genre d'histoire me soit arriver sous gentoo, aussi bien en stable qu'en instable... Est-ce que cela va ralentir encore portage qui est déjà assez long à se lancer à cause de la gestion des dépendances. Si ça ne ralentit pas trop, je suis avec vous ^^, mais j'ai quelques doutes (je préfère préciser que je dis en tant que total newbie en programmation, qui n'y connait rien en python etc...). |
|
Back to top |
|
|
PabOu Veteran
Joined: 11 Feb 2004 Posts: 1088 Location: Hélécine - Belgium
|
Posted: Mon Aug 07, 2006 10:41 pm Post subject: |
|
|
Enlight : Je ne compte pas faire le développement de cette amélioration (je n'ai pas les compétences), seulement en faire la proposition aux devs. Je donnais une idée pour la syntaxe à employer, juste pour donner des bases à l'idée, et pour montrer que c'est possible à réaliser très facilement et en gardant la compatibilité avec les ebuilds actuels.. mais pour moi, on peut le faire de n'importe quelle façon, je m'en fous :p
Par contre, je pense que ca doit être inclus directement dans portage, lors du calcul des dépendances.. là ou il utilise la variable DEPEND des ebuilds (je ne sais pas comment est structuré portage, je ne peux donc pas en dire plus). A mes yeux, ca ne fait vraiment pas un grand changement à portage.. quelques lignes de code seulement, mais qui font une différence ;-)
At0m3: J'y ai pensé, et comme tu le soulignes, les useflags qui sont une dépendance sont assez rare.. Et donc ca ne devrait pas ralentir beaucoup... Cela ne ralentirait que dans le cas ou un ebuild contiendrait des "useflags-dépendants".. et ce serait extrèmement rapide à vérifier.. tu peux le tester toi même avec cette commande : grep le_useflag /var/db/pkg/category/programme*/USE. Si la commande ne te retourne rien, c'est que tu n'as pas compilé ce programme avec ce flag là. _________________ Mangez du poulet ! |
|
Back to top |
|
|
netfab Veteran
Joined: 03 Mar 2005 Posts: 1896 Location: 127.0.0.1
|
Posted: Mon Aug 07, 2006 10:49 pm Post subject: |
|
|
Salut,
A mon avis, çà ne devrait pas être trop difficile à implémenter, puisque, si je comprends bien le fonctionnement de portage :
- chaque ebuild est parsé pour obtenir la liste des dépendances en fonction des useflags activés
- si un ebuild YYY requiert que l'ebuild XXX soit compilé avec le useflag AAA, on trouve généralement dans l'ebuild YYY :
Code: |
built_with_use XXX AAA
|
Excepté pour php par exemple, qui a une fonction require_php_with_use.
Parce que l'inconvénient de la syntaxe proposée par PabOu :
Code: |
gentoopowa/ABC [flag1 flag2]
|
C'est que si l'ebuild ABC est modifié en cours de route (que les flags requis sont modifiés), il faut modifier également l'ebuild contenant la ligne ci-dessus. |
|
Back to top |
|
|
PabOu Veteran
Joined: 11 Feb 2004 Posts: 1088 Location: Hélécine - Belgium
|
Posted: Mon Aug 07, 2006 11:04 pm Post subject: |
|
|
NetFab wrote: | Parce que l'inconvénient de la syntaxe proposée par PabOu :
Code: |
gentoopowa/ABC [flag1 flag2]
|
C'est que si l'ebuild ABC est modifié en cours de route (que les flags requis sont modifiés), il faut modifier également l'ebuild contenant la ligne ci-dessus. |
Je ne comprends pas. Ce problème est déjà le même avec le système actuellement mis en place. _________________ Mangez du poulet ! |
|
Back to top |
|
|
netfab Veteran
Joined: 03 Mar 2005 Posts: 1896 Location: 127.0.0.1
|
Posted: Tue Aug 08, 2006 12:18 am Post subject: |
|
|
Oui, d'accord, je suis à l'ouest : je n'avais pas compris çà comme çà : dans mon esprit j'avais simplement compliqué un peu plus l'évaluation des dépendances (il est tard... )
Cela reviendrait donc à supprimer la fonction built_with_use, puisque les useflags seraient vérifiés avant le lancement. |
|
Back to top |
|
|
geekounet Bodhisattva
Joined: 11 Oct 2004 Posts: 3772 Location: Wellington, Aotearoa
|
Posted: Tue Aug 08, 2006 1:00 am Post subject: |
|
|
NetFab wrote: | Cela reviendrait donc à supprimer la fonction built_with_use, puisque les useflags seraient vérifiés avant le lancement. |
Non, la fonction peut toujours servir à activer ou non certaines fontionnalités selon qu'un paquet ai tel use ou non, elle ne sert pas qu'à vérifier si les deps sont compatibles ou non
PS : bientôt veteran moi |
|
Back to top |
|
|
netfab Veteran
Joined: 03 Mar 2005 Posts: 1896 Location: 127.0.0.1
|
Posted: Wed Aug 09, 2006 11:00 am Post subject: |
|
|
Bon, alors je m'incline
+1 pour PabOu et sa GLEP |
|
Back to top |
|
|
PabOu Veteran
Joined: 11 Feb 2004 Posts: 1088 Location: Hélécine - Belgium
|
Posted: Thu Aug 10, 2006 8:53 am Post subject: |
|
|
Voici un exemple qui vient de m'arriver.. ou l'application de cette pré-GLEP aurait été bien utile.
J'ai lancé hier dans l'après-midi un emerge world -eav.
Ce matin, je regarde ou ca en est... il s'est arrêté au paquet 1xx sur 300 et des poussières. C'était le paquet php-5.1.4-r4. La raison ? Le useflag sharedmem entre en conflit avec le useflag threads. D'accord, ce n'est pas exactement le même problème que la GLEP devrait résoudre, mais c'est une extension.
Si il m'avait prévenu directement avant le début de l'emerge, j'aurais pu régler le problème directement, et le long emerge de plus de 300 paquets ne se serait pas arrêté en plein milieu en attendant ma réaction pour le relancer (qui sait combien de minutes ou d'heures ont été perdues ?) _________________ Mangez du poulet ! |
|
Back to top |
|
|
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
|