Gentoo Archives: gentoo-user

From: Enrico Weigelt <weigelt@×××××.de>
To: gentoo-user@l.g.o
Subject: Re: [gentoo-user] Re: emerge 32bits on 64bits platform
Date: Fri, 20 Aug 2010 16:06:29
Message-Id: 20100820155605.GA21342@nibiru.local
In Reply to: [gentoo-user] Re: emerge 32bits on 64bits platform by Nikos Chantziaras
1 * Nikos Chantziaras <realnc@×××××.de> wrote:
2
3 > Welcome to hell. No, that's possible, as others pointed out. There was
4 > an initiative to bring true multilib to Gentoo a year or so back (maybe
5 > more) but it seems it died and no one's working on it.
6 >
7 > For your browser this is probably not so problematic. But imagine
8 > someone running the latest graphics stack (libdrm, mesa, etc.) on his
9 > 64bit machine, but its totally useless because proprietary Linux games
10 > are 32bit and thus won't run.
11
12 The problem here is that this essentially means having two systems
13 in one, 32bit and a 64bit one. To make it really clean, we'd actually
14 need two separate installations (eg. using jails). But that makes
15 administration quite complex.
16
17 Perhaps portage could be extended to support a concept of subsystems,
18 which are fully self-conftained for the runtime stuff only (but no
19 portage, toolchains, etc). Everything that's not required for booting
20 and building (so, the essential base-packages) is now sitting within
21 a subsystem (maybe that's even a jail). Each subsystem of course
22 also has its own /var/db/pkg etc (maybe even own /etc/portage stuff).
23
24 Portage would now compute an internal portage tree for all subsystems
25 using namespaces. The actual build then runs in an sysroot environment
26 for the actual subsystem.
27
28 Let's take an example: mc
29
30
31 On an fresh system, `emerge -peqt app-misc/mc` looks like this:
32
33 [ebuild N ] app-misc/mc-4.7.0.3 USE="edit gpm -X -nls -samba -slang"
34 [ebuild N ] sys-libs/gpm-1.20.5 USE="(-selinux)"
35 [ebuild N ] app-arch/xz-utils-4.999.9_beta USE="threads -nls -static-libs"
36 [ebuild N ] dev-libs/glib-2.24.1-r1 USE="-debug -doc -fam -hardened (-selinux) -xattr"
37 [ebuild N ] sys-devel/gettext-0.17-r1 USE="-acl -doc -emacs -nls -nocxx -openmp"
38 [ebuild N ] dev-util/gtk-doc-am-1.15
39 [ebuild N ] app-text/docbook-xml-dtd-4.3-r1
40 [ebuild N ] dev-libs/libxslt-1.1.26 USE="-crypt -debug -python"
41 [ebuild N ] dev-libs/libxml2-2.7.7 USE="-debug -doc -examples -ipv6 -python -readline -test"
42 [nomerge ] app-text/docbook-xml-dtd-4.3-r1
43 [ebuild N ] app-text/sgml-common-0.6.3-r5
44 [ebuild N ] app-arch/unzip-6.0-r1 USE="bzip2 -unicode"
45 [nomerge ] app-misc/mc-4.7.0.3 USE="edit gpm -X -nls -samba -slang"
46 [ebuild N ] dev-util/pkgconfig-0.25-r2 USE="-hardened"
47 [nomerge ] app-text/docbook-xml-dtd-4.3-r1
48 [ebuild N ] app-text/docbook-xsl-stylesheets-1.75.2
49 [ebuild N ] app-text/build-docbook-catalog-1.4
50
51 Now on the new model it would be: `emerge -peqt x86_32::app-misc/mc`
52
53 [ebuild N ] x86_32::app-misc/mc-4.7.0.3 USE="edit gpm -X -nls -samba -slang"
54 [ebuild N ] x86_32::sys-libs/gpm-1.20.5 USE="(-selinux)"
55 [ebuild N ] main::app-arch/xz-utils-4.999.9_beta USE="threads -nls -static-libs"
56 [ebuild N ] x86_32::dev-libs/glib-2.24.1-r1 USE="-debug -doc -fam -hardened (-selinux) -xattr"
57 [ebuild N ] main::sys-devel/gettext-0.17-r1 USE="-acl -doc -emacs -nls -nocxx -openmp"
58 [ebuild N ] x86_32::sys-devel/gettext-0.17-r1 USE="-acl -doc -emacs -nls -nocxx -openmp"
59 [ebuild N ] x86_32::dev-util/gtk-doc-am-1.15
60 [ebuild N ] main::app-text/docbook-xml-dtd-4.3-r1
61 [ebuild N ] x86_32::dev-libs/libxslt-1.1.26 USE="-crypt -debug -python"
62 [ebuild N ] x86_32::dev-libs/libxml2-2.7.7 USE="-debug -doc -examples -ipv6 -python -readline -test"
63 [nomerge ] main::app-text/docbook-xml-dtd-4.3-r1
64 [ebuild N ] main::app-text/sgml-common-0.6.3-r5
65 [ebuild N ] main::app-arch/unzip-6.0-r1 USE="bzip2 -unicode"
66 [nomerge ] x86_32::app-misc/mc-4.7.0.3 USE="edit gpm -X -nls -samba -slang"
67 [ebuild N ] main::dev-util/pkgconfig-0.25-r2 USE="-hardened"
68 [nomerge ] main::app-text/docbook-xml-dtd-4.3-r1
69 [ebuild N ] main::app-text/docbook-xsl-stylesheets-1.75.2
70 [ebuild N ] main::app-text/build-docbook-catalog-1.4
71
72
73 Note that here portage into which subsystem a package has to go in.
74 That's done by a new kind of depdendencies: buildtool. So a plain system
75 (w/o subsystems at all), these simply would be silently added to $DEPEND
76 (prefixed w/ "main::").
77
78 Of course, this requires all packages to be fully crosscompilable
79 in sysroot, and here's yet some work to do (essentially, that's what
80 oss-qm is doing all the day ;-p).
81
82 Ah, and this approach can also supersede crossdev (at least most of it)
83 and provide a fine tool for managing tiny containers which don't need
84 their own toolchain and portage stuff.
85
86
87
88 cu
89 --
90 ----------------------------------------------------------------------
91 Enrico Weigelt, metux IT service -- http://www.metux.de/
92
93 phone: +49 36207 519931 email: weigelt@×××××.de
94 mobile: +49 151 27565287 icq: 210169427 skype: nekrad666
95 ----------------------------------------------------------------------
96 Embedded-Linux / Portierung / Opensource-QM / Verteilte Systeme
97 ----------------------------------------------------------------------