1 |
Matt Turner schrieb: |
2 |
> On Sun, Jul 1, 2012 at 7:29 AM, Thomas Sachau <tommy@g.o> wrote: |
3 |
>> Matt Turner schrieb: |
4 |
>>> On Fri, Jun 29, 2012 at 10:30 AM, Thomas Sachau <tommy@g.o> wrote: |
5 |
>>>> |
6 |
>>> |
7 |
>>> I'm interested in this because I'm regularly annoyed with the emul- |
8 |
>>> packages and also because multilib is pretty important for mips. |
9 |
>>> |
10 |
>>>> If a package has dependencies, then those dependencies are required to have |
11 |
>>>> at least the same targets enabled as the package |
12 |
>>> |
13 |
>>> That seems like the obvious (but perhaps naive) choice. What about |
14 |
>>> depending on packages that don't install libraries, like x11-proto/ |
15 |
>>> packages or generators like dev-util/indent? |
16 |
>>> |
17 |
>>> Maybe I just don't understand. Would these packages even have ABI flags? |
18 |
>> |
19 |
>> All packages do get the ABI flags (with the needed EAPI or via enabled |
20 |
>> portage feature, which is currently in the multilib branch). |
21 |
>> |
22 |
>> If a package does not install anything ABI-specific (no headers, no libs |
23 |
>> and no binaries), then there is no overhead, since it will just get |
24 |
>> compiled/installed for one ABI, even if multiple ABI flags are enabled. |
25 |
> |
26 |
> I suppose that's just for ease of implementation? Not having to |
27 |
> special-case packages that don't install binaries. |
28 |
|
29 |
I dont follow. Did you think about only having additional ABI flags for |
30 |
certain cases? |
31 |
|
32 |
>>> For mips, we'd like to have gcc built as an n64 binary, which would |
33 |
>>> require its run-time dependencies (mpfr, mpc, gmp, etc.) to be |
34 |
>>> available as n64 as well, but the rest of the system to be n32 |
35 |
>>> binaries. Does this fit with your understanding (and proposed |
36 |
>>> solution) of the problem? |
37 |
>> |
38 |
>> I guess, you require additional n64 libs for gcc dependencies like mpfr, |
39 |
>> mpc and others, while your default ABI will be n32. |
40 |
>> |
41 |
>> This should work fine with my proposal, you just have the (already |
42 |
>> default enabled) n32 ABI flag enabled, which results in everything being |
43 |
>> built just for n32. For the packages, where you require additional n64 |
44 |
>> libs, you just enable the n64 ABI flag in addition. And if you need n64 |
45 |
>> binaries too, you enable the abiwrapper USE flag for them. |
46 |
> |
47 |
> One follow-on question. Consider having a package dev-libs/libpkg |
48 |
> already installed for ABI="n32 -n64" and wanting to emerge another |
49 |
> package that depends on it with ABI="-n32 n64". Will dev-libs/libpkg |
50 |
> have to be rebuilt twice (once for the existing n32 ABI and again for |
51 |
> the newly needed n64), or can we optimize this case by recognizing |
52 |
> that building for multiple ABIs means entirely separate builds? |
53 |
|
54 |
Those ABI flags behave the same as other USE flags: When you change |
55 |
them, you have to recompile the package including all the content, that |
56 |
has been compiled previously. |
57 |
If you want the compile for each ABI seperate, then you would have to |
58 |
handle them more like SLOTS, but with a new syntax, with a collision |
59 |
handler for the common content and how to handle that in the user UI. I |
60 |
fear, that this would be way more complicated to implement in a sane |
61 |
way, so i dont plan to go that route. |
62 |
|
63 |
|
64 |
-- |
65 |
|
66 |
Thomas Sachau |
67 |
Gentoo Linux Developer |