1 |
The spec says: |
2 |
|
3 |
| IUSE_REFERENCEABLE |
4 |
| is a variable calculated from IUSE and a variety of other sources |
5 |
| described below. It is purely a conceptual variable; it is not |
6 |
| exported to the ebuild environment. Values in IUSE_REFERENCEABLE |
7 |
| may legally be used in queries from other packages about an |
8 |
| ebuild’s state (for example, for use dependencies). |
9 |
| IUSE_EFFECTIVE |
10 |
| is another conceptual, unexported variable. Values in IUSE_ |
11 |
| EFFECTIVE are those which an ebuild may legally use in queries |
12 |
| about itself (for example, for the use function, and for use in |
13 |
| dependency specification conditional blocks). |
14 |
| |
15 |
| [...] |
16 |
| |
17 |
| For EAPIs listed in table 5.2 as not supporting profile defined IUSE |
18 |
| injection, IUSE_REFERENCEABLE is equal to the calculated IUSE value. |
19 |
| For EAPIs where profile defined IUSE injection is supported, |
20 |
| IUSE_REFERENCEABLE is equal to IUSE_EFFECTIVE. |
21 |
| |
22 |
| For EAPIs listed in table 5.2 as not supporting profile defined IUSE |
23 |
| injection, IUSE_EFFECTIVE contains the following values: |
24 |
| * All values in the calculated IUSE value. |
25 |
| * All possible values for the ARCH variable. |
26 |
| * All legal use flag names whose name starts with the lowercase |
27 |
| equivalent of any value in the profile USE_EXPAND variable |
28 |
| followed by an underscore. |
29 |
|
30 |
What we see for the current multilib issue is that for USE_EXPAND |
31 |
flags, (+) or (-) USE dependency defaults match ebuilds in EAPI 4 and |
32 |
earlier that don't have the flag in their IUSE. |
33 |
|
34 |
So the package manager behaves as if IUSE_EFFECTIVE (but not |
35 |
IUSE_REFERENCEABLE) was used for dependency matching. |
36 |
|
37 |
Must the spec be corrected, such that it says that IUSE_REFERENCEABLE |
38 |
is equal to IUSE_EFFECTIVE, for all EAPIs? |
39 |
|
40 |
Ulrich |