Re: next generation apt/dpkg-cross
- To: Goswin von Brederlow <firstname.lastname@example.org>
- Cc: email@example.com
- Subject: Re: next generation apt/dpkg-cross
- From: Goswin von Brederlow <firstname.lastname@example.org>
- Date: Mon, 25 Jan 2010 00:03:46 +0100
- Message-id: <email@example.com>
- In-reply-to: <firstname.lastname@example.org> (Goswin von Brederlow's message of "Tue, 19 Jan 2010 20:57:19 +0100")
- References: <email@example.com>
I've uploaded a preliminary package to mentors. Ignore all the
lintian warnings. To be safe try this in a chroot. You've been warned.
I called the package "apt-ma-emu" (multiarch emulation) now. For it to
work you need a patched apt and need to recompile aptitude and synaptic
if you want to use them. The source contains the neccessary patch
(apt.patch). This is just a perliminary package since I didn't have time
to get everything done yet.
What is there:
- README.Debian - MUST read
- hook into apt so "apt-get update" renames in Packages.gz as needed
- hook into apt so "apt-get install" converts packages as needed
- /usr/lib/apt-ma-emu/dpkg wraper to call dpkg extend PATH (use by apt)
- /usr/lib/apt-ma-emu/dpkg-deb wrapper to convert during install
+ Actual conversion of data.tar.gz uses dpkg-cross so it only works
for cross compile use
So when you install apt-ma-emu, configure i386 as foreign
architecture and run apt-get update you can run
mrvn@frosties:~% sudo apt-get install libgtk2.0-dev-i386-cross
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following extra packages will be installed:
lib32ncurses5 lib32z1 lib32z1-dev liba52-0.7.4-i386-cross
libatk1.0-0-i386-cross libatk1.0-dev-i386-cross libavahi-client3-i386-cross
libavahi-common-data-i386-cross libavahi-common3-i386-cross libc6-dev-i386
libcairo2-dev-i386-cross libcairo2-i386-cross libcomerr2-i386-cross
libcups2-i386-cross libdatrie1-i386-cross libdbus-1-3-i386-cross
libdirectfb-extra-i386-cross libexpat1-dev-i386-cross libexpat1-i386-cross
0 upgraded, 97 newly installed, 0 to remove and 5 not upgraded.
Need to get 26.6MB of archives.
After this operation, 73.7MB of additional disk space will be used.
Do you want to continue [Y/n]?
If you say yes there it will download those 97 packages, convert each
with dpkg-cross and install them.
Note: The control.tar.gz is converted by me and not dpkg-cross. That
results in slightly different meta information. For example versions
have ~0.0 appended (the apt-ma-emu version) so that an apt-ma-emu update
with converion fixes will show all -cross packages as newer and
Note2: maintainer scripts (postinst, postrm, ...) are left as is and
might be dangerous.
What is not there:
- Sources.gz are not converted yet to include source-<arch>-cross
+ I had some trouble there so I removed that function for the sake of
releasing something that works.
- Hook support for control.tar.gz or data.tar.gz
- internal conversion of data.tar.gz to work for both execution and
cross compile use
- passthrough of multiarch packages
- support for dummy debs needed for multi-arch packages
- Only append the major version so minor apt-ma-emu updates don't
reinstall every -cross deb
- Replace maintainer scripts and let package.controll restore them if
But (other than the first) that is nothing you need for cross compile
use right now. I probably have some more time on tuesday to get the
Sources.gz support working.