1 |
>>>>> On Sun, 5 Apr 2015, Michał Górny wrote: |
2 |
|
3 |
> This is quite a Portage patch topic but since devs are known to be |
4 |
> unhappy about any change, I would like to start a bikeshed first. |
5 |
|
6 |
> The idea is to make repoman/pcheck complain if the newest ebuild |
7 |
> matched by version+slot restriction of dependency atom can't satisfy |
8 |
> the USE dependency, or in other words, whenever the USE restriction |
9 |
> forces lower version of package being installed. |
10 |
|
11 |
> For example, let's assume the following: |
12 |
|
13 |
> a. foo-1 has USE=bar, |
14 |
|
15 |
> b. bar-1 depends on foo[bar], |
16 |
|
17 |
> c. foo-2 no longer has USE=bar. |
18 |
|
19 |
> In the usual scenario this means that bar-1 will silently lock foo |
20 |
> at version 1. Since this is quite implicit, users don't notice |
21 |
> the problem and left unnoticed for a long time, it starts to hurt |
22 |
> bad at some point. |
23 |
|
24 |
Is "foo[bar]" even a legal dependency, if there are versions of foo |
25 |
that don't have the bar flag in their IUSE? (PMS doesn't seem to be |
26 |
entirely clear about this: "... it is an error for a use dependency to |
27 |
be applied to an ebuild which does not have the flag in question in |
28 |
IUSE_REFERENCEABLE.") |
29 |
|
30 |
So yes, make repoman shout about it. Loudly. :) |
31 |
|
32 |
> With the added check, after step (c) above repoman/pcheck would warn |
33 |
> on bar-1 that 'foo[bar]' dependency forces lower version than plain |
34 |
> 'foo'. Since version and slot restrictions will be taken into |
35 |
> consideration, it will possible to silence the warning by using: |
36 |
|
37 |
> <foo-2[bar] |
38 |
|
39 |
> explicitly, if the dependency can't be fixed for foo-2 properly. |
40 |
> While not improving the final result a lot, it will at least give an |
41 |
> explicit '<' or '=' atom that can be easily found with grep when |
42 |
> considering old version removal. |
43 |
|
44 |
> What are your thoughts? |
45 |
|
46 |
How are you going to treat "foo[bar(-)]" and "foo[bar(+)]"? |
47 |
|
48 |
Ulrich |