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 |
---------------------------------------------------------------------- |