http://buildd.emdebian.org/repos/tools/emchain/
emchain implements the EmdebianSlind toolchain build process for
the latest versions of gcc, binutils and libc. To build toolchains
for older compilers, see the Emdebian website: www.emdebian.org
emchain uses dpkg-cross and apt-cross to determine the latest
versions of toolchain packages, downloads the source for each missing
package, builds the package using EmdebianSlind options and commands,
then installs the cross-built packages and toolchain packages.
(emchain therefore requires 'sudo').
emchain needs to be run from a consistent working directory so that it
can check if it needs to download any new versions. I will look at a
command for emchain to set and change to this location in future
versions.
buildcross is for developers who may need more than one version of gcc
available for cross-building.
emchain is intended for automated chroot builds along the lines of
pbuilder.
In a pbuilder chroot (e.g. amd64 native), only gcc-4.1 is available.
When I run pdebuild it is gcc-4.1 that gets called (or whatever is the
current Debian default). emchain reflects this situation: it looks for
the current Debian compiler as would be used on the buildd itself.
## Pseudo-code:
## In each case, version numbers are always reset to the current
Debian ones.
# $ apt-get source gcc-3.4 binutils libc
# $ cd binutils-2.17
# $ TARGET=arch-linux fakeroot debian/rules binary-cross (replace arch
by arm, alpha,...)
# dpkg -i built-package
# apt-cross -i libdb1-compat libc6 libc6-dev linux-kernel-headers
# $ export GCC_TARGET=$arch
# $ cd gcc-3.4-3.4.2
# $ debian/rules control
# $ dpkg-buildpackage -b -rfakeroot
i.e. the method from "Building your own" at
http://www.emdebian.org/tools/crosstools.html
emchain can be easily automated - it is intended to work with cron-apt
so that as soon as a new toolchain package reaches the main Debian
archive, the cross-built toolchain can be updated.
Future versions will incorporate this behaviour so that if an update
is needed, the cross-built packages can be removed after cron-apt runs
'apt-get update', 'apt-get upgrade' is therefore allowed to complete
normally (because the new Debian versions will require the removal of
the cross-built emdebian packages) and then emchain run again to get,
build and install the updated cross-built toolchain. In this manner,
it should take a maximum of 48hrs for emdebian toolchains to update
after the availability of updated packages in Debian.
By doing it all via cron we could gain:
1) Transparent updates of the toolchains, dictated by Debian updates.
2) email notification, via cron, of any failure messages
3) ability to use emchain on the buildd itself.
I'll dput my latest amd64 builds to the emdebian repository later.
--
Neil Williams
=============
http://www.data-freedom.org/
http://www.nosoftwarepatents.com/
http://www.linux.codehelp.co.uk/