Gentoo Archives: gentoo-portage-dev

From: Kent Fredric <kentfredric@×××××.com>
To: gentoo-portage-dev@l.g.o
Subject: Re: [gentoo-portage-dev] Dependency calculation turning on USE flags?
Date: Sat, 20 Aug 2011 22:23:19
Message-Id: CAATnKFCSpL+-sQYD4adYHAHNhMTiAw+wEqUfn7yJg-DYHDcNRg@mail.gmail.com
In Reply to: [gentoo-portage-dev] Dependency calculation turning on USE flags? by Matt Turner
1 On 21 August 2011 08:10, Matt Turner <mattst88@g.o> wrote:
2
3 >
4 > See https://bugs.gentoo.org/372513
5 >
6
7 ^ tldr version for everyone else.
8
9 This is due to the || condition in virtual/fortran
10
11 || ( sys-devel/gcc[fortran,openmp?] sys-devel/gcc-apple[fortran,openmp?]
12 dev-lang/ifc dev-lang/ekopath-bin )
13
14 Where gcc[fortran] takes precedence over ifc.
15
16
17 > I wonder if there's some way we can manage this kind of situation?
18 > Perhaps portage could print alternative dependencies for virtuals,
19 > similar to the very helpful recent "The following keyword changes are
20 > necessary to proceed:" addition.
21 >
22 >
23 This usecases specifics aside, I'd welcome some sort of way to show that an
24 "or" condition is occurring somewhere in the tree, but it'd have to be
25 opt-in, instead of opt-out, as the potential for being very noisy is great (
26 you'll get a lot of noise if you hit virtual/perl-* for instance ).
27
28 And likewise, I'd love to have "some way" to produce some sort of graph for
29 alternative merge trees that may work if you toggle some variable, but the
30 amount of complexity to do this I'd imagine is quite large, and could easily
31 be computationally expensive.
32
33 It would very likely need some limiting factor for how deep it did
34 permutations at.
35
36
37 [ebuild N ] sys-libs/libstdc++-v3-3.3.6 USE="(multilib) nls" 23,459 kB
38 [ebuild N ] app-shells/tcsh-6.16 USE="perl -catalogs" 869 kB
39 # app-shells/tcsh-6.16 =>
40 # perl? (
41 # dev-lang/perl
42 # )
43 [ebuild N ] app-emulation/emul-linux-x86-
44 compat-20100611
45 USE="(multilib)" 930 kB
46 [ebuild N ] virtual/libstdc++-3.3 0 kB
47 # virtual/libstdc++-3.3 =>
48 # || (
49 # =sys-libs/libstdc++-v3-bin-3.3*
50 # =sys-libs/libstdc++-v3-3.3*
51 # )
52 [ebuild N ] dev-lang/ifc-10.0.026-r1 40,378 kB
53 # virtual/fortran-0 -openmp =>
54 # || (
55 # sys-devel/gcc +fortran
56 # sys-devel/gcc-apple +fortran
57 # dev-lang/ifc
58 # dev-lang/ekopath-bin
59 # )
60 # virtual/fortran-0 +openmp =>
61 # || (
62 # sys-devel/gcc +fortran
63 # sys-devel/gcc-apple +fortran
64 # dev-lang/ifc
65 # dev-lang/ekopath-bin
66 # )
67 # || (
68 # sys-devel/gcc +fortran +openmp
69 # sys-devel/gcc-apple +fortran +openmp
70 # dev-lang/ifc
71 # dev-lang/ekopath-bin
72 # )
73 [ebuild N ] virtual/fortran-0 USE="openmp" 0 kB
74 [ebuild N F ] sci-chemistry/cns-1.2.1 USE="openmp" 31,981 kB
75
76 Would be a sample output for depthlimit = 1
77
78 Note that in this example I have made a few omissions, some because I
79 couldn't be bothered working out all the other ACCEPT_KEYWORDS stuff to
80 mentally compute which of the above targets were actually possible to
81 install and what ACCEPT_KEYWORDS permuations could be done, and others
82 because they are for whatever reason "fixed dependencies", thus, showing
83 only dependencies that user choices can impact.
84
85 ie: app-emulation/emul-linux-x86-compat-20100611 has different dependencies
86 depending on the multilib USE flag, but that useflag is profile mandated so
87 its pointless to show to a user.
88
89 Alternatively, you could let the user dictate what type of permutations to
90 display/compute, ie:
91
92 use-flag based permutations, keyword based permutations, mask-based
93 permutations, ||() conditional OR based permutations, package-version/slot
94 permutations etc.
95
96 For "package version/slot" permutations, it would display every variation on
97 package/slot ( ie: slots/versions that are not the "current" version ) that
98 were installable, or installable with some permutation ( if the depth of
99 permutation is large enough ), so that a user could see a path of
100 installation they wanted and twist user masks to make it happen.
101
102 Of course, this is all looking like harder and harder stuff to do (
103 programming is the gateway-drug for feature creep ) , but it would still be
104 something nice to have on a theoretical magic computer that can do all
105 computations in zero time.
106
107 ¢¢
108 --
109 Kent
110
111 perl -e "print substr( \"edrgmaM SPA NOcomil.ic\\@tfrken\", \$_ * 3, 3 )
112 for ( 9,8,0,7,1,6,5,4,3,2 );"
113
114 http://kent-fredric.fox.geek.nz

Replies