1 |
On Sat, 5 Nov 2016 11:13:35 +0100 |
2 |
Ulrich Mueller <ulm@g.o> wrote: |
3 |
|
4 |
> revision component must not be used for upstream versions: |
5 |
|
6 |
The problem is we have *2* upstream versions. |
7 |
|
8 |
virtual/perl-Foo-N |
9 |
|
10 |
Maps to |
11 |
|
12 |
perl-core/Foo-N |
13 |
|
14 |
And |
15 |
|
16 |
dev-lang/perl-Y ( for possibly more than one value of Y ) |
17 |
|
18 |
And Y does not equal N |
19 |
|
20 |
Presently, this is "not a problem", because there is only 1 of each "N" |
21 |
for virtual/perl-Foo-N |
22 |
|
23 |
And it maps with this horrible magic of |
24 |
|
25 |
|| ( =dev-lang/perl-Y4* =dev-lang/perl-Y3* =dev-lang/perl-Y2* ~perl-core/Foo-N ) |
26 |
!<perl-core/Foo-N |
27 |
!>perl-core/Foo-N-r999 |
28 |
|
29 |
Which is "logically correct", however, as seen in bug #584238[1], |
30 |
portage does not always do the right thing, and it makes a real mess of |
31 |
things having one package virtualising multiple different keywords. ( I |
32 |
had to get into graphing tools to work out what the hell was actually |
33 |
happening ) |
34 |
|
35 |
*especially* in cases where we need to indicate an "upstream merge in a virtual" as with 584238 |
36 |
|
37 |
So the strategy that I was considering was to "split" each logical upstream virtual into several pieces: |
38 |
|
39 |
virtual/perl-Foo-N to virtual/perl-Foo-N-r99 : "Always pull perl core/*" |
40 |
|
41 |
virtual/perl-Foo-N-r52200 to virtual/perl-Foo-N-r52299 : "Always pull perl 5.22 and remove perl-core/*" |
42 |
|
43 |
virtual/perl-Foo-N-r52400 to virtual/perl-Foo-N-r52499 : "Always pull perl 5.24 and remove perl-core/*" |
44 |
|
45 |
|
46 |
Which allows us to control which outcome a user gets by keeping keywords consistent across the board, as |
47 |
we'd stabilize/keyword all '-r522**' with perl 5.22 |
48 |
|
49 |
virtual/perl-Foo-N to virtual/perl-Foo-N-r99 |
50 |
|
51 |
would thus be "Getting multiprovided things at newer versions than is available in your shipped perl", and that |
52 |
-r range would only be stabilized to fast-track security issues or to provide those versions for dependents |
53 |
before the respective perl is stabilized ( that is, the fallback to perl-core is done with maximum reluctance ) |
54 |
|
55 |
This idea was hoped to be more predictable than a monolithic virtual |
56 |
that had all those outcomes as possibilities which then caused portage to be confused. |
57 |
|
58 |
( I hope this explanation is more clear than the last one, but its OK |
59 |
if you're still confused, it took me a few weeks to get my head around |
60 |
it the first time, but I implore you to read the related bug and pay |
61 |
careful attention to its attached images ) |
62 |
|
63 |
1: https://bugs.gentoo.org/show_bug.cgi?id=584238 |