1 |
Ulrich Mueller wrote: |
2 |
>>>>>> On Thu, 26 Jun 2014, David Leverton wrote: |
3 |
> |
4 |
>> If, for example, we make subversion an IUSE_RUNTIME flag of git, and |
5 |
>> some other package depends on dev-vcs/git[-subversion], and the user |
6 |
>> has the subversion flag disabled for git but happens to have |
7 |
>> subversion installed anyway, should the dependency be considered |
8 |
>> satisfied (in which case it's fairly pointless)? Or does it |
9 |
>> magically get treated like a blocker on dev-vcs/subversion? |
10 |
> |
11 |
> It should be treated like a regular USE flag for dependency |
12 |
> resolution. So in your example, the dependency would be satisfied. |
13 |
|
14 |
That makes that sort of dependency fairly useless then - it forces the |
15 |
user to mess with their configuration, but it doesn't actually influence |
16 |
what gets installed. If the package is somehow incompatible with |
17 |
git-svn being available and working (OK, it's a pretty contrived |
18 |
example...) then the dependency doesn't do anything to help the |
19 |
situation. If we're OK with that then fine, but it's a potential point |
20 |
of confusion for ebuild authors. |
21 |
|
22 |
> More interesting example: Some other package could depend on |
23 |
> dev-vcs/git[-perl]. "perl" is a regular USE flag in git, but is has |
24 |
> "subversion? ( perl )" in REQUIRED_USE. Therefore dev-vcs/git[-perl] |
25 |
> is effectively equivalent to dev-vcs/git[-perl,-subversion]. However, |
26 |
> the restrictions in current GLEP 62 don't cover this case. |
27 |
|
28 |
I don't think that's really an issue. If the package is incompatible |
29 |
with the perl support in git then it should say so, and if git-svn |
30 |
happens to be a casualty then the PM can enforce that just fine. |
31 |
|
32 |
> Your arguments are valid, but they apply to regular USE flags, too. |
33 |
> So I fail to see why we would need special treatment for runtime |
34 |
> switchable flags here. |
35 |
|
36 |
In theory at least, if a regular USE flag is disabled it's supposed to |
37 |
actively remove support for that feature when the package is |
38 |
built/installed. Currently if you depend on dev-vcs/git[-subversion] |
39 |
then you know git-svn isn't installed at all, regardless of whether |
40 |
subversion itself is. With IUSE_RUNTIME, the only difference between a |
41 |
flag being enabled and disabled is that if it's enabled then you know |
42 |
the deps for that feature are installed, but if it's disabled then they |
43 |
might be installed anyway, so depending on that state doesn't guarantee |
44 |
anything. |
45 |
|
46 |
> If necessary, we can always impose additional restrictions by tree |
47 |
> policy (as we do for "noblah" flags, for example), but I'd rather not |
48 |
> restrict what the package manager can do. Especially, if we can simply |
49 |
> go with normal USE flag logic in one case, but need special casing for |
50 |
> runtime flags in the other case. |
51 |
|
52 |
If we're OK with leaving a potential trap then that's fine, just making |
53 |
sure people are aware. (Perhaps we could have a repoman check instead?) |
54 |
|
55 |
> |
56 |
> Ulrich |
57 |
> |