1 |
Hello, |
2 |
|
3 |
Following my earlier mail, I'm sending two patches which describe how |
4 |
I see the potential of introducing explicit multilib flags. |
5 |
|
6 |
The idea is that each arch has its own ABI_<arch> USE_EXPAND, specifying |
7 |
the multilib ABIs for choice. For example, x86 has ABI_X86="32 64". |
8 |
|
9 |
All of those USE_EXPANDs are hidden (using USE_EXPAND_HIDDEN) |
10 |
in the base profile, and all of their flags are masked. |
11 |
|
12 |
In the proper multilib profiles, e.g. the amd64 multilib profile, |
13 |
the relevant USE_EXPAND is removed from USE_EXPAND_HIDDEN, the flags |
14 |
are unmasked and the default ABI flag is use.forced. |
15 |
|
16 |
The eclass exports *all* possible ABIs for all arches in IUSE (due |
17 |
to the necessity of constant metadata). However, it checks only |
18 |
the flags relevant to the arch (avoids wasting time) and when no flags |
19 |
are set (e.g. non-multilib system) does a non-multilib build. |
20 |
|
21 |
The use.force default ABI means that for a typical user the native build |
22 |
is forced and therefore regular package dependencies are correct. |
23 |
The user is allowed to disable it in his own profile but he does that |
24 |
on his own responsibility. |
25 |
|
26 |
For multilib or non-native builds, a proper USE dependencies need |
27 |
be used. Multilib builds take [${MULTILIB_USEDEP}] for them; the Skype |
28 |
example mentioned by aballier would use [abi_x86_32]. |
29 |
|
30 |
I think those are all the important ideas. The patches shall be |
31 |
considered mostly proof-of-concept, and I'm awaiting further discussion |
32 |
on the topic. |
33 |
|
34 |
If anyone is interested in testing the multilib work of mine (which |
35 |
doesn't use the new flags yet, just the profile-forced 'multilib' flag), |
36 |
I have converted the live ebuilds corresponding to packages from |
37 |
emul-linux-x86-xlibs. The packages can be found in the x11 overlay, |
38 |
'multilib' branch. |
39 |
|
40 |
$ layman -a x11 |
41 |
$ ( cd /var/lib/layman/x11; git checkout multilib ) |
42 |
$ diffmask -a libX11 # yep, X11 live ebuilds are package.masked |
43 |
$ emerge -v emul-linux-x86-xlibs |
44 |
|
45 |
For easier testing, there's media-libs/libtxc_dxtn in the gx86 tree. |
46 |
But it's nothing really special to see, it doesn't even have |
47 |
dependencies to prove the major points. |