wiki:ubuildd

ubuildd

ubuildd is a (prospective) buildsystem for IPlinux, with the following characteristics:

  • ubuildd builds host, target packages and also toolchains in clean environment for various architectures
  • ubuildd is integrated with git to get source packages and also to track the status of builds

Theory of operation

ubuildd tries to have built every package present in git repository.

host packages

Host packages are build in standard Debian way. The only change is added IPlinux 'host/tools' repository section.

target packages

Target packages are built for every supported architecture. This includes passing architecture to pbuilder, and using IPlinux 'host/tools' and 'host/cross' repository sections.

Built packages are added to 'target/*' repository sections. Every package build is to be converted by dpkg-cross with results added to 'host/cross' repository section.

toolchains

Toolchains are built every time one of toolchain packages is changed (currently: binutils, linux-libc-dev, gcc, glibc|uclibc). This includes running a custom build script (mktpkg).

Resulting packages are added to 'host/tools', 'host/closs' and 'target/*' repositories.

Tools

pbuilder

ubuildd uses pbuilder for building packages. pbuilder is modified for building target packages (passing architecture, converting XCS-Cross-* dependencies into real ones) and toolchains (new command, using mktpkg).

git integration

Source package in IPlinux is not a Debian source package (.dsc + .orig.tar.gz + .diff.gz), but a signed tag in git repository. Such tag must obey the following restrictions:

  • Tag name must be oi/<suite>/<version>, where <suite> is a name of IPlinux suite (zelazny for unstable distribution), and <version> is a Debian version of package.
  • debian/control and debian/changelog must be present in the commit correspoding to the tag
  • Last version in debian/changelog must match version in tag name.
  • Tag must be signed by the GPG key of IPlinux developer
  • Author (name and email) of last change in debian/changelog must match the signer.
  • File tree corresponding to the tag must be acceptable by the git-buildpackage tool.