1 |
Matt Turner schrieb: |
2 |
> On Fri, Jun 29, 2012 at 10:30 AM, Thomas Sachau <tommy@g.o> wrote: |
3 |
>> |
4 |
> |
5 |
> I'm interested in this because I'm regularly annoyed with the emul- |
6 |
> packages and also because multilib is pretty important for mips. |
7 |
> |
8 |
>> If a package has dependencies, then those dependencies are required to have |
9 |
>> at least the same targets enabled as the package |
10 |
> |
11 |
> That seems like the obvious (but perhaps naive) choice. What about |
12 |
> depending on packages that don't install libraries, like x11-proto/ |
13 |
> packages or generators like dev-util/indent? |
14 |
> |
15 |
> Maybe I just don't understand. Would these packages even have ABI flags? |
16 |
|
17 |
All packages do get the ABI flags (with the needed EAPI or via enabled |
18 |
portage feature, which is currently in the multilib branch). |
19 |
|
20 |
If a package does not install anything ABI-specific (no headers, no libs |
21 |
and no binaries), then there is no overhead, since it will just get |
22 |
compiled/installed for one ABI, even if multiple ABI flags are enabled. |
23 |
|
24 |
> |
25 |
> It's clear to me that libraries would be installed in different lib* |
26 |
> directories dependent on their ABI, but how would typical executables |
27 |
> be handled? |
28 |
|
29 |
By default, only the binaries for the first enabled ABI are preserved |
30 |
(which usually is the default ABI). If you enable the abiwrapper USE |
31 |
flag, the binaries for all target ABIs are preserved, installed in the |
32 |
form of $binary-$ABI and $binary will be a symlink to a wrapper, which |
33 |
calls the right binary for the currently selected ABI. |
34 |
|
35 |
> |
36 |
> For mips, we'd like to have gcc built as an n64 binary, which would |
37 |
> require its run-time dependencies (mpfr, mpc, gmp, etc.) to be |
38 |
> available as n64 as well, but the rest of the system to be n32 |
39 |
> binaries. Does this fit with your understanding (and proposed |
40 |
> solution) of the problem? |
41 |
|
42 |
I guess, you require additional n64 libs for gcc dependencies like mpfr, |
43 |
mpc and others, while your default ABI will be n32. |
44 |
|
45 |
This should work fine with my proposal, you just have the (already |
46 |
default enabled) n32 ABI flag enabled, which results in everything being |
47 |
built just for n32. For the packages, where you require additional n64 |
48 |
libs, you just enable the n64 ABI flag in addition. And if you need n64 |
49 |
binaries too, you enable the abiwrapper USE flag for them. |
50 |
|
51 |
|
52 |
-- |
53 |
|
54 |
Thomas Sachau |
55 |
Gentoo Linux Developer |