1 |
On Thu, Apr 2, 2015 at 10:10 PM, Duncan <1i5t5.duncan@×××.net> wrote: |
2 |
> Rich Freeman posted on Thu, 02 Apr 2015 12:32:41 -0400 as excerpted: |
3 |
> |
4 |
>> Out of curiosity, what is keeping us from having USE flag dependencies |
5 |
>> handled dynamically, in the same way that package dependencies are? If |
6 |
>> portage can figure out that I need libxml2 installed even if I don't put |
7 |
>> it in /var/lib/portage/world, why can't it figure out that I need it |
8 |
>> built with USE=icu even if I don't put that in /etc/portage/package.use? |
9 |
> |
10 |
> Because USE flags are binary, with "not-yes" implying "no", while world |
11 |
> set listings are binary, with "not-yes" implying "do it anyway if needed"? |
12 |
|
13 |
That doesn't need to be true. Not listing a flag in your config can |
14 |
just mean "do it anyway if needed." Package USE dependencies already |
15 |
work this way - you can depend on a flag being set, on it being unset, |
16 |
or not mention the flag at all which means the package doesn't care. |
17 |
|
18 |
> Changing the implied meaning of "not-yes" to match in both cases could |
19 |
> certainly be done, but while I'm not opposed if the justification really |
20 |
> is there, I think there's the potential here for a rather massive change |
21 |
> in base assumptions, and if that is indeed what's involved, I believe |
22 |
> it'd call for equally massive justifications. |
23 |
|
24 |
There is no question that it would be a change in behavior. However, |
25 |
I wouldn't anticipate a lot of changes. |
26 |
|
27 |
If you stuck -* in your make.conf then this change would have no |
28 |
affect at all, since you've explicitly set the configuration of every |
29 |
use flag. |
30 |
|
31 |
Anything already in package.use would still stick, since that is also |
32 |
configuration. If you wiped your package.use clean then there would |
33 |
be a possible change, but that is something the user has control over, |
34 |
and presumably for them it is a change for the better if they're |
35 |
making it. |
36 |
|
37 |
Things would still default to their profile/package defaults as they |
38 |
already do if you don't stick anything in your config files. However, |
39 |
future package installs that require a USE change would just make the |
40 |
change if you didn't explicitly bar that configuration. It wouldn't |
41 |
modify your config files. |
42 |
|
43 |
> |
44 |
> And I'm worried that the suggestion here is going further down that |
45 |
> emerge writing its own config path, without (IMO) appropriate safeguards. |
46 |
|
47 |
I think this is exactly the opposite. It would get rid of the need to |
48 |
have portage go modifying package.use at all in many cases. You'd |
49 |
still need to modify configuration (perhaps with automatic help) if |
50 |
you had explicitly set something which conflicts with what you want to |
51 |
install (such as USE=-* globally). However, for users who just go |
52 |
with the profile defaults they wouldn't have to stick nearly as much |
53 |
stuff in package.use just to change a flag setting they never |
54 |
expressed a personal preference for one way or the other. |
55 |
|
56 |
The current configuration forces you to use config files to capture |
57 |
settings you care about, and also ones you don't actually care about, |
58 |
and unless you're careful you'll have trouble telling these settings |
59 |
apart later. It is like sticking every installed package in your |
60 |
world file. |
61 |
|
62 |
-- |
63 |
Rich |