* [gentoo-dev] The gx86 multilib project -- masterplan @ 2013-01-27 15:12 Michał Górny 2013-01-27 16:07 ` Ciaran McCreesh ` (3 more replies) 0 siblings, 4 replies; 16+ messages in thread From: Michał Górny @ 2013-01-27 15:12 UTC (permalink / raw To: Gentoo Developer Mailing List [-- Attachment #1: Type: text/plain, Size: 5470 bytes --] Hello, Following the success of python-r1, the batch of patches I was sending recently and some random testing, I'd like to introduce my ideas and plans on how multilib could be introduced to gx86 in a simple and sane manner. My major goal with this mail is to summarize the ideas, the problems and all the work that has been done already. 1. The USE flags and profiles ----------------------------- The first step in introducing multilib would be to provide the USE flags necessary to control building for respective ABIs in profiles. The current proposed patches based on simple amd64 multilib are available in [1]. From profiles PoV: 1. Each multilib-capable arch set provides USE_EXPAND with relevant multilib profiles. ABI_X86="32 x32 64" ABI_MIPS="o32 n32 n64" 2. All the USE_EXPAND variables are hidden in the base profile, and all the flags are masked. 3. Every arch relevant to the particular set of multilib flags unmasks and forces the flag for default ABI. x86 -> unmasks & forces abi_x86_32 amd64 -> unmasks & forces abi_x86_64 4. Every multilib profile unmasks the flags for remaining supported ABIs and unhides the variable. amd64 multilib -> unmasks abi_x86_32, unhides ABI_X86 [1]:http://thread.gmane.org/gmane.linux.gentoo.devel/83341 2. The USE flags and packages ----------------------------- The packages requesting multilib support either inherit the multilib-build [2] or its derivative (e.g. autotools-multilib), or implement the necessary facilities by hand. The following common rules apply (they are all handled by the eclass): 1. Each multilib-capable ebuilds adds multilib flags for all arches to IUSE (IUSE must be constant). 2. The relevant set of flags is enforced through profile flag masking, forcing and USE_EXPAND hiding. Therefore, the user only sees the flags which are really relevant. x86, amd64 no-multilib -> no flags (hidden) amd64 multilib -> ABI_X86="32 (64)" (latter forced) 3. The enabled set of ABIs is further filtered through MULTILIB_ABIS set by profile. Therefore, even with users mangling the masks they won't be able to build something irrelevant to the profile. 4. All the build and libdir details are handled by the multilib.eclass. Therefore, all ebuilds should be ready for it already. 5. If no relevant USE flags are selected (bug-case), fallback to default ABI is done. [2]:http://thread.gmane.org/gmane.linux.gentoo.devel/83322 3. Inter-package dependencies ----------------------------- The inter-package dependencies are done the best way possible -- explicitly ;). The package developers are supposed to know best which of the dependencies need having same ABIs enabled and which don't. 1. The 'regular' multilib packages are supposed to use ${MULTILIB_USEDEP} from multilib-build.eclass on all dependencies which need multilib. RDEPEND="dev-libs/libfoo[${MULTILIB_USEDEP}] dev-libs/libbar[ssl,${MULTILIB_USEDEP}]" The dependencies will be required to have the same ABIs enabled as the package in question. 2. The specific cases can use the USE flags directly. For example, binary x86 packages can depend on abi_x86_32 unconditionally: RDEPEND="dev-libs/libfoo[abi_x86_32]" Due to proper profile USE flag forcing/masking, that dependency is valid both for amd64 multilib & real x86 system. 4. ABI-specific content ----------------------- The gx86 multilib assumes that the majority of multilib packages will install only 32-bit libraries and pkg-config files. 1. The installation of 32-bit data in libdir is done implicitly through multilib.eclass and econf awareness of ABI variable. 2. Any other content which needs to be ABI-aware (includes, *-config programs) need be handled by ebuilds explicitly. 3. Additionally, the autotools-multilib.eclass will ensure that headers installed to /usr/include are consistent between ABIs. 5. Solutions to specific problems --------------------------------- 1. x11-proto packages Those packages install headers to /usr/include and pkg-config files to /usr/lib64. This supposedly means that the headers could be ABI-specific; however, so far I haven't seen a single difference. Possible solutions: a) check the headers by hand, move pkg-config files to /usr/share, b) make the proto packages multilib. This will cause identical .pc files to be installed to lib32 & lib64 but will also enable eclass checks for header consistency. 2. packages which install ABI-dependent headers e.g. libogg. The issue needs to be fixed in the specific ebuild. a) fix the headers, e.g.: typedef short ogg_int16_t; typedef unsigned short ogg_uint16_t; typedef int ogg_int32_t; to: #include <stdint.h> typedef int16_t ogg_int16_t; ... b) install the header(s) in an alternate location. With packages using pkg-config, that would be easy. 3. packages which still reinvent pkg-config with their *-config e.g. llvm. Really painful to solve; probably will require action both on llvm ebuild side and consumer side. a) long-term solution: convince upstream to use pkg-config. b) short-term: rename the llvm-config script and use the renamed version for 32-bit build. What are your thoughts? -- Best regards, Michał Górny [-- Attachment #2: signature.asc --] [-- Type: application/pgp-signature, Size: 316 bytes --] ^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [gentoo-dev] The gx86 multilib project -- masterplan 2013-01-27 15:12 [gentoo-dev] The gx86 multilib project -- masterplan Michał Górny @ 2013-01-27 16:07 ` Ciaran McCreesh 2013-01-27 16:30 ` Michał Górny 2013-01-27 16:08 ` Pacho Ramos ` (2 subsequent siblings) 3 siblings, 1 reply; 16+ messages in thread From: Ciaran McCreesh @ 2013-01-27 16:07 UTC (permalink / raw To: gentoo-dev [-- Attachment #1: Type: text/plain, Size: 307 bytes --] On Sun, 27 Jan 2013 16:12:37 +0100 Michał Górny <mgorny@gentoo.org> wrote: > RDEPEND="dev-libs/libfoo[${MULTILIB_USEDEP}] > dev-libs/libbar[ssl,${MULTILIB_USEDEP}]" This looks like it might be a bit fragile. Is it something better addressed by an EAPI extension? -- Ciaran McCreesh [-- Attachment #2: signature.asc --] [-- Type: application/pgp-signature, Size: 198 bytes --] ^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [gentoo-dev] The gx86 multilib project -- masterplan 2013-01-27 16:07 ` Ciaran McCreesh @ 2013-01-27 16:30 ` Michał Górny 2013-01-27 18:04 ` Sergei Trofimovich 0 siblings, 1 reply; 16+ messages in thread From: Michał Górny @ 2013-01-27 16:30 UTC (permalink / raw To: gentoo-dev; +Cc: ciaran.mccreesh [-- Attachment #1: Type: text/plain, Size: 537 bytes --] On Sun, 27 Jan 2013 16:07:48 +0000 Ciaran McCreesh <ciaran.mccreesh@googlemail.com> wrote: > On Sun, 27 Jan 2013 16:12:37 +0100 > Michał Górny <mgorny@gentoo.org> wrote: > > RDEPEND="dev-libs/libfoo[${MULTILIB_USEDEP}] > > dev-libs/libbar[ssl,${MULTILIB_USEDEP}]" > > This looks like it might be a bit fragile. Is it something better > addressed by an EAPI extension? I have no idea. This one's clear and simple. Not sure how you could be able to do that better in EAPI. -- Best regards, Michał Górny [-- Attachment #2: signature.asc --] [-- Type: application/pgp-signature, Size: 316 bytes --] ^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [gentoo-dev] The gx86 multilib project -- masterplan 2013-01-27 16:30 ` Michał Górny @ 2013-01-27 18:04 ` Sergei Trofimovich 2013-01-27 18:11 ` Michał Górny 0 siblings, 1 reply; 16+ messages in thread From: Sergei Trofimovich @ 2013-01-27 18:04 UTC (permalink / raw To: gentoo-dev; +Cc: mgorny, ciaran.mccreesh [-- Attachment #1: Type: text/plain, Size: 714 bytes --] On Sun, 27 Jan 2013 17:30:22 +0100 Michał Górny <mgorny@gentoo.org> wrote: > On Sun, 27 Jan 2013 16:07:48 +0000 > Ciaran McCreesh <ciaran.mccreesh@googlemail.com> wrote: > > > On Sun, 27 Jan 2013 16:12:37 +0100 > > Michał Górny <mgorny@gentoo.org> wrote: > > > RDEPEND="dev-libs/libfoo[${MULTILIB_USEDEP}] > > > dev-libs/libbar[ssl,${MULTILIB_USEDEP}]" > > > > This looks like it might be a bit fragile. Is it something better > > addressed by an EAPI extension? > > I have no idea. This one's clear and simple. Not sure how you could be > able to do that better in EAPI. EAPI might allow lib[multiple?][use?][flags?] as an alias of [multiple?,use?,flags?]. -- Sergei [-- Attachment #2: signature.asc --] [-- Type: application/pgp-signature, Size: 198 bytes --] ^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [gentoo-dev] The gx86 multilib project -- masterplan 2013-01-27 18:04 ` Sergei Trofimovich @ 2013-01-27 18:11 ` Michał Górny 2013-01-30 0:39 ` Maciej Mrozowski 0 siblings, 1 reply; 16+ messages in thread From: Michał Górny @ 2013-01-27 18:11 UTC (permalink / raw To: gentoo-dev; +Cc: slyfox, ciaran.mccreesh [-- Attachment #1: Type: text/plain, Size: 1204 bytes --] On Sun, 27 Jan 2013 21:04:14 +0300 Sergei Trofimovich <slyfox@gentoo.org> wrote: > On Sun, 27 Jan 2013 17:30:22 +0100 > Michał Górny <mgorny@gentoo.org> wrote: > > > On Sun, 27 Jan 2013 16:07:48 +0000 > > Ciaran McCreesh <ciaran.mccreesh@googlemail.com> wrote: > > > > > On Sun, 27 Jan 2013 16:12:37 +0100 > > > Michał Górny <mgorny@gentoo.org> wrote: > > > > RDEPEND="dev-libs/libfoo[${MULTILIB_USEDEP}] > > > > dev-libs/libbar[ssl,${MULTILIB_USEDEP}]" > > > > > > This looks like it might be a bit fragile. Is it something better > > > addressed by an EAPI extension? > > > > I have no idea. This one's clear and simple. Not sure how you could be > > able to do that better in EAPI. > > EAPI might allow lib[multiple?][use?][flags?] as an alias of [multiple?,use?,flags?]. I still don't think that would be really helpful. dev-libs/libfoo[ssl][${MULTILIB_USEDEP}] is IMO just more confusing than the usual [ssl,...] -- people start thinking 'does it mean something special?' Unless you mean adding the brackets to the variable itself -- but that will be just scary... dev-libs/libfoo${MULTILIB_USEDEP} -- Best regards, Michał Górny [-- Attachment #2: signature.asc --] [-- Type: application/pgp-signature, Size: 316 bytes --] ^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [gentoo-dev] The gx86 multilib project -- masterplan 2013-01-27 18:11 ` Michał Górny @ 2013-01-30 0:39 ` Maciej Mrozowski 2013-01-30 9:54 ` Michał Górny 0 siblings, 1 reply; 16+ messages in thread From: Maciej Mrozowski @ 2013-01-30 0:39 UTC (permalink / raw To: gentoo-dev [-- Attachment #1: Type: text/plain, Size: 1749 bytes --] On Sunday 27 of January 2013 19:11:16 Micha³ Górny wrote: > On Sun, 27 Jan 2013 21:04:14 +0300 > > Sergei Trofimovich <slyfox@gentoo.org> wrote: > > On Sun, 27 Jan 2013 17:30:22 +0100 > > > > Micha³ Górny <mgorny@gentoo.org> wrote: > > > On Sun, 27 Jan 2013 16:07:48 +0000 > > > > > > Ciaran McCreesh <ciaran.mccreesh@googlemail.com> wrote: > > > > On Sun, 27 Jan 2013 16:12:37 +0100 > > > > > > > > Micha³ Górny <mgorny@gentoo.org> wrote: > > > > > RDEPEND="dev-libs/libfoo[${MULTILIB_USEDEP}] > > > > > > > > > > dev-libs/libbar[ssl,${MULTILIB_USEDEP}]" > > > > > > > > This looks like it might be a bit fragile. Is it something better > > > > addressed by an EAPI extension? > > > > > > I have no idea. This one's clear and simple. Not sure how you could be > > > able to do that better in EAPI. > > > > EAPI might allow lib[multiple?][use?][flags?] as an alias of > > [multiple?,use?,flags?]. > I still don't think that would be really helpful. > > dev-libs/libfoo[ssl][${MULTILIB_USEDEP}] > > is IMO just more confusing than the usual [ssl,...] -- people start > thinking 'does it mean something special?' > > Unless you mean adding the brackets to the variable itself -- but that > will be just scary... > > dev-libs/libfoo${MULTILIB_USEDEP} Alternatively, less fragile but more verbose would be eclass function to produce dependency string. While it may sound as overkill - we already do it in KDE: 'add_kdebase_dep': http://sources.gentoo.org/cgi-bin/viewvc.cgi/gentoo-x86/eclass/kde4- functions.eclass?view=markup Example usage: http://sources.gentoo.org/cgi-bin/viewvc.cgi/gentoo-x86/kde- base/pykde4/pykde4-4.9.5.ebuild?view=markup -- regards MM [-- Attachment #2: This is a digitally signed message part. --] [-- Type: application/pgp-signature, Size: 198 bytes --] ^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [gentoo-dev] The gx86 multilib project -- masterplan 2013-01-30 0:39 ` Maciej Mrozowski @ 2013-01-30 9:54 ` Michał Górny 0 siblings, 0 replies; 16+ messages in thread From: Michał Górny @ 2013-01-30 9:54 UTC (permalink / raw To: gentoo-dev; +Cc: reavertm [-- Attachment #1: Type: text/plain, Size: 1805 bytes --] On Wed, 30 Jan 2013 01:39:16 +0100 Maciej Mrozowski <reavertm@gmail.com> wrote: > On Sunday 27 of January 2013 19:11:16 Micha³ Górny wrote: > > On Sun, 27 Jan 2013 21:04:14 +0300 > > > > Sergei Trofimovich <slyfox@gentoo.org> wrote: > > > On Sun, 27 Jan 2013 17:30:22 +0100 > > > > > > Micha³ Górny <mgorny@gentoo.org> wrote: > > > > On Sun, 27 Jan 2013 16:07:48 +0000 > > > > > > > > Ciaran McCreesh <ciaran.mccreesh@googlemail.com> wrote: > > > > > On Sun, 27 Jan 2013 16:12:37 +0100 > > > > > > > > > > Micha³ Górny <mgorny@gentoo.org> wrote: > > > > > > RDEPEND="dev-libs/libfoo[${MULTILIB_USEDEP}] > > > > > > > > > > > > dev-libs/libbar[ssl,${MULTILIB_USEDEP}]" > > > > > > > > > > This looks like it might be a bit fragile. Is it something better > > > > > addressed by an EAPI extension? > > > > > > > > I have no idea. This one's clear and simple. Not sure how you could be > > > > able to do that better in EAPI. > > > > > > EAPI might allow lib[multiple?][use?][flags?] as an alias of > > > [multiple?,use?,flags?]. > > I still don't think that would be really helpful. > > > > dev-libs/libfoo[ssl][${MULTILIB_USEDEP}] > > > > is IMO just more confusing than the usual [ssl,...] -- people start > > thinking 'does it mean something special?' > > > > Unless you mean adding the brackets to the variable itself -- but that > > will be just scary... > > > > dev-libs/libfoo${MULTILIB_USEDEP} > > Alternatively, less fragile but more verbose would be eclass function to > produce dependency string. While it may sound as overkill - we already do it > in KDE: And in ruby, and in arfrever's python.... add_foo_dep $(add_bar_dep ...) ... oh wait, it doesn't work like that. -- Best regards, Michał Górny [-- Attachment #2: signature.asc --] [-- Type: application/pgp-signature, Size: 316 bytes --] ^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [gentoo-dev] The gx86 multilib project -- masterplan 2013-01-27 15:12 [gentoo-dev] The gx86 multilib project -- masterplan Michał Górny 2013-01-27 16:07 ` Ciaran McCreesh @ 2013-01-27 16:08 ` Pacho Ramos 2013-01-30 8:35 ` Multilib approach(es) " Michael Weber 2013-01-27 16:11 ` Alexis Ballier 2013-01-27 19:14 ` Matt Turner 3 siblings, 1 reply; 16+ messages in thread From: Pacho Ramos @ 2013-01-27 16:08 UTC (permalink / raw To: gentoo-dev [-- Attachment #1: Type: text/plain, Size: 1289 bytes --] El dom, 27-01-2013 a las 16:12 +0100, Michał Górny escribió: [...] > 5. Solutions to specific problems > --------------------------------- > > 1. x11-proto packages > > Those packages install headers to /usr/include and pkg-config files > to /usr/lib64. This supposedly means that the headers could be > ABI-specific; however, so far I haven't seen a single difference. > > Possible solutions: > > a) check the headers by hand, move pkg-config files to /usr/share, > > b) make the proto packages multilib. This will cause identical .pc > files to be installed to lib32 & lib64 but will also enable eclass > checks for header consistency. > Currently, emul packages can install /usr/lib32/pkgconfig files (when enabling "development" USE flag). This was added because, as emul sets tend to be obsolete in a few weeks, people compiling packages against its lib32 provided libs were getting build failures due "native" pkgconfig files (usually from newer libs) were being used. Regarding /usr/include, it looks harder to solve, current emul packages simply don't provide headers at all, but it caused issues like this in the past: https://bugs.gentoo.org/show_bug.cgi?id=299490 Maybe installing headers in other place would be interesting :/ [-- Attachment #2: This is a digitally signed message part --] [-- Type: application/pgp-signature, Size: 198 bytes --] ^ permalink raw reply [flat|nested] 16+ messages in thread
* Multilib approach(es) Re: [gentoo-dev] The gx86 multilib project -- masterplan 2013-01-27 16:08 ` Pacho Ramos @ 2013-01-30 8:35 ` Michael Weber 2013-01-30 8:52 ` Michael Weber 2013-01-30 9:58 ` Michał Górny 0 siblings, 2 replies; 16+ messages in thread From: Michael Weber @ 2013-01-30 8:35 UTC (permalink / raw To: gentoo-dev -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA256 Hi, What's the primary Idea behind multilib at all? Isn't it just a workaround to keep prebuild software from lazy/incapable/dead upstreams working (skype, ...)? Is there any other real use besides bragging about processor capabilities and compiling an stage1 boot loader? Please don't get me wrong. I honor the whole effort done to bring this magic into portage/..., but I see limits in the underlying file system. The current solution suggested by FHS-2.3 [1] is to use /lib<qual> and /usr/lib<qual>, which works for runtime emul- packages, since software either installed to /opt/{${PN},bin} or had no alternative in /bin or /usr/bin. On 01/27/2013 02:40 PM, Thomas Sachau wrote:> 2. How do you handle other abi-specific files like headers or binaries > and cases like binaries with abi-specific content? Is it possible > to preserve them for all requested abis or to preserve them for an > non-default abi? On 01/27/2013 05:08 PM, Pacho Ramos wrote:> Maybe installing headers in other place would be interesting :/ This is getting wired now, when we get an x86, x86_64 and x86_32 (srsly?) implementation of cp(1). Either we avoid collision python style with /bin/${PN}-<qual> and some link magic, to select the "best" <qual> according to moon phases. In the spirit of FHS, I thought about introducing /bin<qual> for some time, but this continues with other dirs. We would need /var/lib<qual> as well (/var/lib/munin/ has ABI specific .rrd files), /usr/include<qual>/ ... wait a minute. What about separating these ABIs on top dir and keeping the respective sub-trees clean, like /<qual>/{,usr/}{bin,lib}? /<qual>/ could be realised by one of these systems - - chroot (just like /<any-other-distro> chroots), needs root. - - Gentoo/PREFIX style - - modified runtime linker to pic correct LD_LIBRARY_PATH. These /<qual>/ can be anything, like different ABIs, different libc implementations, different keyword (stable, testing), different Distros, - as long as it runs with the current kernel. Well, thin-provisioning, qemu, *random virtualization*. One ABI, maybe the one that can run/chroot all others sould be defined as qual="", just like non-multilib systems. Replication of /<qual>/{home,usr/portage} can be avoided by symlinks or bind-mounts, or hardlinks. (Srsly, /usr/portage/"ebuilds,profiles,metadata,caches" has to be in /var/portage.) It'd be a pretty good solution for restraining mentioned (malicious) software, /skype/ for example. Some roundups have to be made for exhausive $PATH, X11 .desktop files, to enable starting other /<qual>/ Comments? [1] http://www.pathname.com/fhs/pub/fhs-2.3.html - -- Michael Weber Gentoo Developer web: https://xmw.de/ mailto: Michael Weber <xmw@gentoo.org> -----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.19 (GNU/Linux) Comment: Using GnuPG with Thunderbird - http://www.enigmail.net/ iF4EAREIAAYFAlEI20AACgkQknrdDGLu8JAGBAD+MPkmNxKSCrHcAnj5PUaxyTM1 Hhymj3cHaxBuTFHlK78A/2t5qJNyg1c0nc6FSePKXq+MXWp/RVDWMb5XCpfEh4dR =xmPN -----END PGP SIGNATURE----- ^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: Multilib approach(es) Re: [gentoo-dev] The gx86 multilib project -- masterplan 2013-01-30 8:35 ` Multilib approach(es) " Michael Weber @ 2013-01-30 8:52 ` Michael Weber 2013-01-30 9:58 ` Michał Górny 1 sibling, 0 replies; 16+ messages in thread From: Michael Weber @ 2013-01-30 8:52 UTC (permalink / raw To: gentoo-dev -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA256 On 01/30/2013 09:35 AM, Michael Weber wrote: > These /<qual>/ can be anything, like different ABIs, different libc > implementations, different keyword (stable, testing), different > Distros, - as long as it runs with the current kernel. Well, > thin-provisioning, qemu, *random virtualization*. Did I ever mention, you can boot into these /<qual>/!?! initrd context: "mount root partition $ROOTDEV at $TARGET" mkdir /fun mount -o bind $TARGET/<qual> /fun exec switch_root /fun /sbin/init Mount output get's confusing about multiple lines mentioning $ROOTDEV, esp. for init.d/fsck, but IMHO fsck should be done in initrd, and not single-user mode with read-only mount and with binaries from that broken partition. - - other story. Or have it on separate partition - like the traditional "I switch distros" aproach. - -- Michael Weber Gentoo Developer web: https://xmw.de/ mailto: Michael Weber <xmw@gentoo.org> -----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.19 (GNU/Linux) Comment: Using GnuPG with Thunderbird - http://www.enigmail.net/ iF4EAREIAAYFAlEI3zEACgkQknrdDGLu8JBrLgEAgI2m92etcKYF7/5wWEmJc1DZ 3apcjuDokN3WxUcxDdIA/A67DJBV5OKmVxX9wSaeomakg8Ql5oCqETXM6b9n1uy+ =Lkq3 -----END PGP SIGNATURE----- ^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: Multilib approach(es) Re: [gentoo-dev] The gx86 multilib project -- masterplan 2013-01-30 8:35 ` Multilib approach(es) " Michael Weber 2013-01-30 8:52 ` Michael Weber @ 2013-01-30 9:58 ` Michał Górny 2013-01-30 11:30 ` Michael Weber 1 sibling, 1 reply; 16+ messages in thread From: Michał Górny @ 2013-01-30 9:58 UTC (permalink / raw To: gentoo-dev; +Cc: xmw -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA256 On Wed, 30 Jan 2013 09:35:12 +0100 Michael Weber <xmw@gentoo.org> wrote: > What's the primary Idea behind multilib at all? > Isn't it just a workaround to keep prebuild software > from lazy/incapable/dead upstreams working (skype, ...)? Yes. And 32-bit wine for 32-bit Windows apps which are common. > On 01/27/2013 02:40 PM, Thomas Sachau wrote:> 2. How do you handle > other abi-specific files like headers or binaries > > and cases like binaries with abi-specific content? Is it possible > > to preserve them for all requested abis or to preserve them for an > > non-default abi? > > On 01/27/2013 05:08 PM, Pacho Ramos wrote:> Maybe installing headers > in other place would be interesting :/ > > This is getting wired now, when we get an x86, x86_64 and x86_32 > (srsly?) implementation of cp(1). > > Either we avoid collision python style with /bin/${PN}-<qual> and some > link magic, to select the "best" <qual> according to moon phases. We don't want 32-bit cp. Thomas likes to support every weird idea coming from a random user, I don't. > In the spirit of FHS, I thought about introducing /bin<qual> for some > time, but this continues with other dirs. > We would need /var/lib<qual> as well (/var/lib/munin/ has ABI specific > .rrd files), > /usr/include<qual>/ ... wait a minute. > > What about separating these ABIs on top dir and keeping the respective > sub-trees clean, like /<qual>/{,usr/}{bin,lib}? > > /<qual>/ could be realised by one of these systems > - - chroot (just like /<any-other-distro> chroots), needs root. > - - Gentoo/PREFIX style > - - modified runtime linker to pic correct LD_LIBRARY_PATH. > > These /<qual>/ can be anything, like different ABIs, > different libc implementations, different keyword (stable, testing), > different Distros, - as long as it runs with the current kernel. > Well, thin-provisioning, qemu, *random virtualization*. No. 32-bit chroot is an old idea and has nothing to do with multilib. It's an alternative to multilib and there's no point in reinventing it. - -- Best regards, Michał Górny -----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.19 (GNU/Linux) iJwEAQEIAAYFAlEI7rsACgkQfXuS5UK5QB02KAP7BLGGggDrHYeO4gC+nW3sKUEr LI9Gr/D8ag8eGXpAtYphlZgQYQ1uXWk50MHOiPyO6x6blKV+wUtaH3oyc62POU2W w3hsadhzVW6YRekzbUAKqdyhLqjgcliyWfoQQ6GGkRXAgKq4FcdTet972xd4omPQ vyiTx+1LJ/yUyKIIArI= =0uAW -----END PGP SIGNATURE----- ^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: Multilib approach(es) Re: [gentoo-dev] The gx86 multilib project -- masterplan 2013-01-30 9:58 ` Michał Górny @ 2013-01-30 11:30 ` Michael Weber 2013-01-30 11:46 ` Michał Górny 0 siblings, 1 reply; 16+ messages in thread From: Michael Weber @ 2013-01-30 11:30 UTC (permalink / raw To: gentoo-dev -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA256 On 01/30/2013 10:58 AM, Michał Górny wrote: > On Wed, 30 Jan 2013 09:35:12 +0100 Michael Weber <xmw@gentoo.org> > wrote: > We don't want 32-bit cp. Thomas likes to support every weird idea > coming from a random user, I don't. What is wrong with "random" or "user"? Should I take "random user" personally? Honestly, I have no idea. Where do you want to draw the line? How would you handle library packages shipping binaries? Just `rm "${D}"/usr/bin`? >> In the spirit of FHS, I thought about introducing /bin<qual> for >> some time, but this continues with other dirs. > >> What about separating these ABIs on top dir and keeping the >> respective sub-trees clean, like /<qual>/{,usr/}{bin,lib}? > No. 32-bit chroot is an old idea and has nothing to do with > multilib. Right, that was the intent of my mail. Not to question some multilib internal stupidity like how to handle clashing pkg-config files but to question the approach in common. Maybe FatELF would work with this multilib/USE approch w/o cluttering the file system [1]. Multilib: funny clashes all over the tree, partial blessed by FHS. Emul- packages, frozen, incapable of compiling and adding additional stuff - collision avoidance by upstream. Separated trees/chroots/... to be merged in $PATH et. al. Is there any consent on how to proceed? I support an slim solution, but as it turns out "architecture independent" from FHS is just a lie. Or handled very badly. [1] http://en.wikipedia.org/wiki/Fat_binary > It's an alternative to multilib and there's no point in reinventing > it. Yeah, did not reinvent it, just want to re-think it's validity. - -- Michael Weber Gentoo Developer web: https://xmw.de/ mailto: Michael Weber <xmw@gentoo.org> -----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.19 (GNU/Linux) Comment: Using GnuPG with Thunderbird - http://www.enigmail.net/ iF4EAREIAAYFAlEJBGsACgkQknrdDGLu8JDMWAD+Ksp5FmqOKgHxuLtR/smWJCgU SjnM/V64GFnGrCtSqdoA/32BHJdFrO/6YzUZTMhHp+o9u/QgAEjgbKRutdptqZwQ =dSTv -----END PGP SIGNATURE----- ^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: Multilib approach(es) Re: [gentoo-dev] The gx86 multilib project -- masterplan 2013-01-30 11:30 ` Michael Weber @ 2013-01-30 11:46 ` Michał Górny 0 siblings, 0 replies; 16+ messages in thread From: Michał Górny @ 2013-01-30 11:46 UTC (permalink / raw To: gentoo-dev; +Cc: xmw -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA256 On Wed, 30 Jan 2013 12:30:51 +0100 Michael Weber <xmw@gentoo.org> wrote: > -----BEGIN PGP SIGNED MESSAGE----- > Hash: SHA256 > > On 01/30/2013 10:58 AM, Michał Górny wrote: > > On Wed, 30 Jan 2013 09:35:12 +0100 Michael Weber <xmw@gentoo.org> > > wrote: > > > We don't want 32-bit cp. Thomas likes to support every weird idea > > coming from a random user, I don't. > What is wrong with "random" or "user"? Should I take "random user" > personally? Honestly, I have no idea. Sorry, I didn't meant to offend anyone. I'm just saying that if nobody shows a real need for having a 32-bit 'cp', then there's no point in having that. How would you benefit from having it? > Where do you want to draw the line? > How would you handle library packages shipping binaries? > Just `rm "${D}"/usr/bin`? 64-bit executables overwrite 32-bit ones. Correct order and the problem solves itself. > >> In the spirit of FHS, I thought about introducing /bin<qual> for > >> some time, but this continues with other dirs. > > > >> What about separating these ABIs on top dir and keeping the > >> respective sub-trees clean, like /<qual>/{,usr/}{bin,lib}? > > No. 32-bit chroot is an old idea and has nothing to do with > > multilib. > > Right, that was the intent of my mail. > Not to question some multilib internal stupidity like how to handle > clashing pkg-config files but to question the approach in common. I don't understand the problem with pkg-config files. pkg-config lies in lib32/lib64, so the files are separate and don't clash. > Multilib: funny clashes all over the tree, partial blessed by FHS. Clashes are mostly people's faults. I keep my headers tidy; sadly, many people believe that constant API is not an important thing and you end up really bad. - -- Best regards, Michał Górny -----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.19 (GNU/Linux) iJwEAQEIAAYFAlEJCB0ACgkQfXuS5UK5QB2VMwP/bjCt2BI8hn6QGN4ff03vBx1P hmyUzw4DKKbNI5S5XYz6VprVTjh3YAm8oq8gZs3NuySNe81oyHdjn9xWO8mPOvk5 z0MxbQvrvem+HxSNEqmNtO5jxMUgMx+se6ysazn8TTd6UXXAT73mPHNoMDByznWX 3nnrELQUG4dKFxPYXDE= =vMqF -----END PGP SIGNATURE----- ^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [gentoo-dev] The gx86 multilib project -- masterplan 2013-01-27 15:12 [gentoo-dev] The gx86 multilib project -- masterplan Michał Górny 2013-01-27 16:07 ` Ciaran McCreesh 2013-01-27 16:08 ` Pacho Ramos @ 2013-01-27 16:11 ` Alexis Ballier 2013-01-27 19:14 ` Matt Turner 3 siblings, 0 replies; 16+ messages in thread From: Alexis Ballier @ 2013-01-27 16:11 UTC (permalink / raw To: gentoo-dev; +Cc: mgorny On Sun, 27 Jan 2013 16:12:37 +0100 Michał Górny <mgorny@gentoo.org> wrote: > 5. Solutions to specific problems > --------------------------------- > > 1. x11-proto packages > > Those packages install headers to /usr/include and pkg-config files > to /usr/lib64. This supposedly means that the headers could be > ABI-specific; however, so far I haven't seen a single difference. > > Possible solutions: > > a) check the headers by hand, move pkg-config files to /usr/share, > > b) make the proto packages multilib. This will cause identical .pc > files to be installed to lib32 & lib64 but will also enable eclass > checks for header consistency. b) sounds like what we should do by default while lobbying upstream to do a) :) > 2. packages which install ABI-dependent headers > > e.g. libogg. The issue needs to be fixed in the specific ebuild. > > a) fix the headers, e.g.: > > typedef short ogg_int16_t; > typedef unsigned short ogg_uint16_t; > typedef int ogg_int32_t; > > to: > > #include <stdint.h> > > typedef int16_t ogg_int16_t; > ... > > b) install the header(s) in an alternate location. With packages using > pkg-config, that would be easy. b) is not an option: this will break those that do not use pkg-config a) is the correct solution, in cooperation with upstream of course, and it shouldn't be that hard for the libogg example since, as far as I can see, they already have such typedefs for other OSes. > 3. packages which still reinvent pkg-config with their *-config > > e.g. llvm. Really painful to solve; probably will require action both > on llvm ebuild side and consumer side. > > a) long-term solution: convince upstream to use pkg-config. > > b) short-term: rename the llvm-config script and use the renamed > version for 32-bit build. yes, but b) is a mess as there will be no generic solution :( ^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [gentoo-dev] The gx86 multilib project -- masterplan 2013-01-27 15:12 [gentoo-dev] The gx86 multilib project -- masterplan Michał Górny ` (2 preceding siblings ...) 2013-01-27 16:11 ` Alexis Ballier @ 2013-01-27 19:14 ` Matt Turner 2013-01-27 20:20 ` Michał Górny 3 siblings, 1 reply; 16+ messages in thread From: Matt Turner @ 2013-01-27 19:14 UTC (permalink / raw To: gentoo-dev On Sun, Jan 27, 2013 at 7:12 AM, Michał Górny <mgorny@gentoo.org> wrote: > 5. Solutions to specific problems > --------------------------------- > > 1. x11-proto packages > > Those packages install headers to /usr/include and pkg-config files > to /usr/lib64. This supposedly means that the headers could be > ABI-specific; however, so far I haven't seen a single difference. > > Possible solutions: > > a) check the headers by hand, move pkg-config files to /usr/share, > > b) make the proto packages multilib. This will cause identical .pc > files to be installed to lib32 & lib64 but will also enable eclass > checks for header consistency. See http://lists.x.org/archives/xorg-devel/2012-September/033715.html In short, there seem to be a couple cases of platform-dependent substitutions in headers, but for the most part they're platform independent. ^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [gentoo-dev] The gx86 multilib project -- masterplan 2013-01-27 19:14 ` Matt Turner @ 2013-01-27 20:20 ` Michał Górny 0 siblings, 0 replies; 16+ messages in thread From: Michał Górny @ 2013-01-27 20:20 UTC (permalink / raw To: gentoo-dev; +Cc: mattst88 [-- Attachment #1: Type: text/plain, Size: 1388 bytes --] On Sun, 27 Jan 2013 11:14:27 -0800 Matt Turner <mattst88@gentoo.org> wrote: > On Sun, Jan 27, 2013 at 7:12 AM, Michał Górny <mgorny@gentoo.org> wrote: > > 5. Solutions to specific problems > > --------------------------------- > > > > 1. x11-proto packages > > > > Those packages install headers to /usr/include and pkg-config files > > to /usr/lib64. This supposedly means that the headers could be > > ABI-specific; however, so far I haven't seen a single difference. > > > > Possible solutions: > > > > a) check the headers by hand, move pkg-config files to /usr/share, > > > > b) make the proto packages multilib. This will cause identical .pc > > files to be installed to lib32 & lib64 but will also enable eclass > > checks for header consistency. > > See http://lists.x.org/archives/xorg-devel/2012-September/033715.html > > In short, there seem to be a couple cases of platform-dependent > substitutions in headers, but for the most part they're platform > independent. Yes, I have seen the substitutions but so far, it seems that they give the same values for both amd64 ABIs. I'm not sure if other platforms have the same characteristics. I'd prefer just using b) now and getting back to this whenever the header check starts to fail for some platform. Then we would have to move the headers. -- Best regards, Michał Górny [-- Attachment #2: signature.asc --] [-- Type: application/pgp-signature, Size: 316 bytes --] ^ permalink raw reply [flat|nested] 16+ messages in thread
end of thread, other threads:[~2013-01-30 11:46 UTC | newest] Thread overview: 16+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2013-01-27 15:12 [gentoo-dev] The gx86 multilib project -- masterplan Michał Górny 2013-01-27 16:07 ` Ciaran McCreesh 2013-01-27 16:30 ` Michał Górny 2013-01-27 18:04 ` Sergei Trofimovich 2013-01-27 18:11 ` Michał Górny 2013-01-30 0:39 ` Maciej Mrozowski 2013-01-30 9:54 ` Michał Górny 2013-01-27 16:08 ` Pacho Ramos 2013-01-30 8:35 ` Multilib approach(es) " Michael Weber 2013-01-30 8:52 ` Michael Weber 2013-01-30 9:58 ` Michał Górny 2013-01-30 11:30 ` Michael Weber 2013-01-30 11:46 ` Michał Górny 2013-01-27 16:11 ` Alexis Ballier 2013-01-27 19:14 ` Matt Turner 2013-01-27 20:20 ` Michał Górny
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox