= 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//`, where `` is a name of IPlinux suite (`zelazny` for unstable distribution), and `` 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.