Gentoo Forums
Gentoo Forums
Gentoo Forums
Quick Search: in
[GLEP] useflags obligatoires avant l'emerge
View unanswered posts
View posts from last 24 hours

 
Reply to topic    Gentoo Forums Forum Index French
View previous topic :: View next topic  
Author Message
PabOu
Veteran
Veteran


Joined: 11 Feb 2004
Posts: 1088
Location: Hélécine - Belgium

PostPosted: Mon Aug 07, 2006 5:22 pm    Post subject: [GLEP] useflags obligatoires avant l'emerge Reply with quote

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
View user's profile Send private message
Enlight
Advocate
Advocate


Joined: 28 Oct 2004
Posts: 3519
Location: Alsace (France)

PostPosted: Mon Aug 07, 2006 9:05 pm    Post subject: Reply with quote

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
View user's profile Send private message
At0m3
Tux's lil' helper
Tux's lil' helper


Joined: 10 Jun 2006
Posts: 123

PostPosted: Mon Aug 07, 2006 10:12 pm    Post subject: Reply with quote

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
View user's profile Send private message
PabOu
Veteran
Veteran


Joined: 11 Feb 2004
Posts: 1088
Location: Hélécine - Belgium

PostPosted: Mon Aug 07, 2006 10:41 pm    Post subject: Reply with quote

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
View user's profile Send private message
netfab
Veteran
Veteran


Joined: 03 Mar 2005
Posts: 1896
Location: 127.0.0.1

PostPosted: Mon Aug 07, 2006 10:49 pm    Post subject: Reply with quote

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
View user's profile Send private message
PabOu
Veteran
Veteran


Joined: 11 Feb 2004
Posts: 1088
Location: Hélécine - Belgium

PostPosted: Mon Aug 07, 2006 11:04 pm    Post subject: Reply with quote

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
View user's profile Send private message
netfab
Veteran
Veteran


Joined: 03 Mar 2005
Posts: 1896
Location: 127.0.0.1

PostPosted: Tue Aug 08, 2006 12:18 am    Post subject: Reply with quote

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... :mrgreen:)
Cela reviendrait donc à supprimer la fonction built_with_use, puisque les useflags seraient vérifiés avant le lancement.
Back to top
View user's profile Send private message
geekounet
Bodhisattva
Bodhisattva


Joined: 11 Oct 2004
Posts: 3772
Location: Wellington, Aotearoa

PostPosted: Tue Aug 08, 2006 1:00 am    Post subject: Reply with quote

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 :D
Back to top
View user's profile Send private message
netfab
Veteran
Veteran


Joined: 03 Mar 2005
Posts: 1896
Location: 127.0.0.1

PostPosted: Wed Aug 09, 2006 11:00 am    Post subject: Reply with quote

Bon, alors je m'incline :oops:

+1 pour PabOu et sa GLEP :lol:
Back to top
View user's profile Send private message
PabOu
Veteran
Veteran


Joined: 11 Feb 2004
Posts: 1088
Location: Hélécine - Belgium

PostPosted: Thu Aug 10, 2006 8:53 am    Post subject: Reply with quote

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
View user's profile Send private message
Display posts from previous:   
Reply to topic    Gentoo Forums Forum Index French All times are GMT
Page 1 of 1

 
Jump to:  
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