Gentoo Archives: gentoo-dev

From: "Michał Górny" <mgorny@g.o>
To: gentoo-dev@l.g.o
Cc: multilib@g.o
Subject: [gentoo-dev] The gx86-multilib project needs your help! (+ roadmap reminder)
Date: Sun, 11 May 2014 18:57:18
Message-Id: 20140511205642.5bf0aa5c@pomiot.lan
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

Attachments

File name MIME type
signature.asc application/pgp-signature

Replies