1 |
Hello, developers and users. |
2 |
|
3 |
The gx86-multilib project is working hard to bring our users a better |
4 |
experience in multilib support. Eventually, we would like to phase out |
5 |
emul-linux and replace it with less flawed multilib-build solution. |
6 |
However, that requires a lot of work and we need your help. |
7 |
|
8 |
One of the major flaws of the emul-linux solution was that a single |
9 |
package corresponded to multiple libraries. For proper multilib |
10 |
support, we need to unbundle those and replace the dependencies on |
11 |
emul-linux with detailed library dependencies. Doing this properly |
12 |
often requires access to the executables. |
13 |
|
14 |
The issue is that many involved packages are proprietary and fetch- |
15 |
-restricted. The multilib team is unable to reach the executables for |
16 |
most of this software, and that's why we would really appreciate help |
17 |
from developers and users that have got the relevant packages installed. |
18 |
|
19 |
|
20 |
Before I get into the fine details, I'd like to explain a bit |
21 |
the roadmap for multilib support in Gentoo. It comprises of three |
22 |
stages: |
23 |
|
24 |
|
25 |
stage I -- gx86-multilib in testing, emul-linux in stable |
26 |
--------------------------------------------------------- |
27 |
|
28 |
Until all packages are updated properly, we prefer our stable users |
29 |
using emul-linux. While gx86-multilib is slowly getting in shape, |
30 |
issues can still occur -- most importantly, remaining pre-built |
31 |
emul-linux libraries can depend on different SONAMEs of multilib |
32 |
libraries. |
33 |
|
34 |
In this stage, we'd like to focus on: |
35 |
|
36 |
1. converting end-user packages to depend on |
37 |
|| ( emul-linux-x86-* ( multilib-packages... ) ), |
38 |
|
39 |
2. converting end-user package dependencies to multilib. |
40 |
|
41 |
The abi_x86_32 support code in emul-linux is mostly meant for testing |
42 |
convenience and we don't really want new packages to depend on that. |
43 |
|
44 |
|
45 |
stage II -- gx86-multilib and emul-linux in stable |
46 |
-------------------------------------------------- |
47 |
|
48 |
Once we fix all the dependencies and stabilize the revbumps, we can |
49 |
focus on moving gx86-multilib to stable. This involves three steps: |
50 |
|
51 |
1. removing IUSE=abi_x86_32 hacks from emul-linux -- those should no |
52 |
longer be necessary, and will make switching more painful, |
53 |
|
54 |
2. removing package.use.stable.mask on abi_x86_32, |
55 |
|
56 |
3. releasing a news item about the new flags. |
57 |
|
58 |
|
59 |
stage III -- emul-linux phased out |
60 |
---------------------------------- |
61 |
|
62 |
Once we are sure that everything works fine, we start package.masking |
63 |
emul-linux for removal. |
64 |
|
65 |
|
66 |
We need the most help with updating pre-built package dependencies. |
67 |
Since with many proprietary software we can't access the actual |
68 |
executables to read their dependencies, we'd really appreciate |
69 |
developers helping us by either updating the package dependencies |
70 |
themselves, submitting patches to us or at least submitting 'readelf -d' |
71 |
results for all installed executables. |
72 |
|
73 |
A proper dependency string (during stages I and II above) |
74 |
for a pre-built software looks like: |
75 |
|
76 |
RDEPEND=" |
77 |
|| ( |
78 |
( |
79 |
emul-linux-x86-baselibs[-abi_x86_32(-)] |
80 |
emul-linux-x86-xlibs[-abi_x86_32(-)] |
81 |
) |
82 |
( |
83 |
>=sys-apps/util-linux-2.24.1-r3:0[abi_x86_32(-)] |
84 |
dev-libs/libgcrypt:0/20[abi_x86_32(-)] |
85 |
x11-libs/libX11:0/0[abi_x86_32(-)] |
86 |
) |
87 |
) |
88 |
" |
89 |
|
90 |
Few things worth noticing: |
91 |
|
92 |
1. the use of '|| ()' allows us to support both emul-linux and multilib |
93 |
packages during migration period, |
94 |
|
95 |
2. [-abi_x86_32(-)] on emul-linux is not strictly necessary but will |
96 |
help portage 'switch' to multilib deps once multilib is enabled |
97 |
on the system rather than keeping emul-linux compat metapackages, |
98 |
|
99 |
3. USE dependencies against EAPI<5 ebuilds are a mess, so it's |
100 |
recommended to depend on version of ebuild that is at least EAPI=5, |
101 |
e.g. via >= dependency or new enough subslot, |
102 |
|
103 |
4. whenever possible, depend on the specific subslot that is known to |
104 |
provide SONAME equal to the required by your package, e.g. for |
105 |
libgcrypt.so.20 you depend on libgcrypt:0/20, |
106 |
|
107 |
5. please remember to revbump your package after updating |
108 |
the dependencies. Dynamic dependencies in portage are fragile |
109 |
and sometimes do not work. Reinstalling a binary package shouldn't be |
110 |
a major pain to users, and will guarantee proper dependencies in vardb. |
111 |
|
112 |
|
113 |
We really appreciate all the help we can get, and we'd like to thank |
114 |
all the developers and users that are helping us already. In case of |
115 |
any questions, please do not hesitate to reply to this mail or contact |
116 |
us directly. |
117 |
|
118 |
-- |
119 |
Best regards, |
120 |
Michał Górny |