[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

emchain: Automated toolchain builder



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/

Attachment: pgp7qsQgNwtwv.pgp
Description: PGP signature


Reply to: