Gentoo Archives: gentoo-dev

From: "Michał Górny" <mgorny@g.o>
To: gentoo-dev@l.g.o
Cc: amd64@g.o, devrel@g.o, x11@g.o
Subject: [gentoo-dev] [RFC] Initial proof-of-concept for explicit x86 multilib flags
Date: Wed, 23 Jan 2013 23:23:32
Message-Id: 1358983437-18752-1-git-send-email-mgorny@gentoo.org
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.

Replies