1 |
Hello, |
2 |
|
3 |
With the introduction of support for x32 ABI it has become necessary to |
4 |
enhance the multilib-build eclass with some kind of support for |
5 |
specifying the supported/unsupported ABIs. |
6 |
|
7 |
In this particular context, tetromino has noted that many packages |
8 |
don't support the x32 ABI. From the ones currently using the eclass, |
9 |
the one is app-emulation/wine. |
10 |
|
11 |
I would like to enhance the eclass with the ability to specify |
12 |
supported and unsupported ABIs. For that reason, I'd like to gather |
13 |
your opinion on what would be the best solution. Preferably, I'd see |
14 |
one that could work both for the eclass and multilib-portage so that we |
15 |
wouldn't need to duplicate the same information. |
16 |
|
17 |
|
18 |
1) opt-in or opt-out? |
19 |
|
20 |
So far, the multilib-capable packages did get support for all multilib |
21 |
ABIs on given architecture enabled (assuming that the package is |
22 |
keyworded for the arch). |
23 |
|
24 |
As a next step from that, I think an opt-out solution be the simplest |
25 |
and most consistent one. In this particular context: |
26 |
|
27 |
MULTILIB_RESTRICT_ABIS=( ... ) |
28 |
|
29 |
which would be an optional variable disabling support for problematic |
30 |
ABIs in the packages which need it. |
31 |
|
32 |
|
33 |
An alternative solution would be an opt-in like in python-r1: |
34 |
|
35 |
MULTILIB_COMPAT=( ... ) |
36 |
|
37 |
but so far, that would mean that all current packages will have to be |
38 |
updated to list the currently supported ABIs. And it all sucks a bit |
39 |
due to the gray zone between amd64/x86 keyword and ABIs. |
40 |
|
41 |
|
42 |
And no, optional MULTILIB_COMPAT is a no-go. It's a weird breed of |
43 |
opt-in and opt-out which is just awful. |
44 |
|
45 |
|
46 |
|
47 |
2) USE flag names or ABI names? |
48 |
|
49 |
Next thing to decide would be: whether the restrict should specify USE |
50 |
flag names (like the eclass solution) or ABI names (like |
51 |
portage-multilib and profiles). |
52 |
|
53 |
The advantage of USE flags is that they are guaranteed to be unique |
54 |
and clear. As in, two arches won't ever have the same USE flag for ABI |
55 |
with the same name. |
56 |
|
57 |
MULTILIB_RESTRICT_ABIS=( abi_x86_x32 ) |
58 |
|
59 |
The advantage of ABI names is that multilib-portage is aware of them. |
60 |
So, it's mostly about supporting a poor choice done without consulting |
61 |
other developers. |
62 |
|
63 |
MULTILIB_RESTRICT_ABIS=( x32 ) |
64 |
|
65 |
The problem with that is that a new arch can define an ABI with exactly |
66 |
the same name (since all ABI variables are profile-local). In that |
67 |
case, the restriction will unexpectedly apply to that arch. |
68 |
|
69 |
|
70 |
By the way, maybe we should move the flag -> ABI mapping from |
71 |
the eclass to some global location in profiles? That would make it |
72 |
possible to use the global flags from multilib-portage as well. |
73 |
|
74 |
What are your thoughts? |
75 |
|
76 |
-- |
77 |
Best regards, |
78 |
Michał Górny |