Gentoo Archives: gentoo-dev

From: Pacho Ramos <pacho@g.o>
To: gentoo-dev@l.g.o
Subject: Re: [gentoo-dev] MULTI_ABI support addition to main tree portage
Date: Thu, 02 Dec 2010 12:54:17
Message-Id: 1291294407.6751.1.camel@localhost.localdomain
In Reply to: [gentoo-dev] MULTI_ABI support addition to main tree portage by Thomas Sachau
1 El mié, 01-12-2010 a las 19:57 +0100, Thomas Sachau escribió:
2 > Hi,
3 >
4 > i have already written about this some months ago and updated the code in relation to the comments
5 > especially from vapier.
6 >
7 > Basicly, it does now first set abi-specific vars (like CC, CFLAGS and others (setup_abi_env function
8 > in bin/auto-multilib.sh contains the full list), then does build the package as usual. If additional
9 > ABIs are requested, it checks after src_install, if there are possible ABI-specific files (libs,
10 > headers or, if requested for every ABI, also binaries). If those are found, the image dir is moved
11 > away and a new run is started, where again at start abic-specific vars are set and then the complete
12 > src* phases are run. Once all requested ABIs are done, the image dirs are merged into the final
13 > image dir. The following pkg_* phases are each running for every ABI.
14 > Currently, only different libs and headers are installed by default, binaries will be the ones from
15 > the default ABI, unless you tell portage to install binaries for all requested ABIs, in which case a
16 > wrapper will select the ABI-specific binary depending on the environment.
17 > The current implementation uses a USE-dep like way internally to satisfy the needed dependencies, so
18 > that e.g. 32bit libs on a 64bit platform get their required dependencies built with 32bit libs
19 > installed. For the rare case, where the crosscompile does fail and there is only a need for the
20 > binary and no linking against the libs, i have also a var, which disables this auto-dependency
21 > calculation for specified packages.
22 >
23 > For the user interface, portage shows a USE_EXPANDed var, which contains the avaidable ABIs, as an
24 > example for "emerge -pv media-libs/jpeg":
25 >
26 > [ebuild R ] media-libs/jpeg-8b USE="-static-libs" MULTILIB_ABI="amd64 x86"
27 >
28 > Those ABIs can be handled like USE flags, in this case, they are "multilib_abi_amd64" and
29 > "multilib_abi_x86", so you can use those USE flags to enable/disable specific possible ABIs either
30 > globally or per package.
31 >
32 > The basic implementation can be used without changing main tree ebuilds or eclasses, but e.g. for
33 > the replacement of emul-* libs, this will require EAPI-support for ABI-specific USE-deps for
34 > binary-only packages or packages like wine.
35 >
36 > I would first like to see, if there are any bigger concerns especially with the implementation and
37 > how it is supposed to work.
38 >
39 > If there are no such concerns or if they have been resolved, i would like to request some help for
40 > the documentation and PMS-patch related work.
41 >
42 > For install instructions, please have a look at [1], the code can be found in the multilib branch of
43 > portage git repo at [2].
44 >
45 > While i did not yet get to the implementation of it, i would also like to propose something similiar
46 > for languages (like python, ruby or others), so that the basic parts are inside the PM and we can
47 > drop the different ways of implementation and allow users a much more fine-grained control on a per
48 > package base (in relation to the current way python eclass based very complex implementation works).
49 >
50 > [1]: http://github.com/sjnewbury/multilib-overlay/tree/portage-multilib/doc
51 > [2]: http://git.overlays.gentoo.org/gitweb/?p=proj/portage.git;a=shortlog;h=refs/heads/multilib
52 >
53
54
55 Nice to see progress on this, it's a headache to have to make emul
56 packages grow forever when any application (usually wine) requires
57 it :-S, and this would allow much more flexibility
58
59 Thanks a lot :-D

Attachments

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