[arch-general] Question about automated builder

Allan McRae allan at archlinux.org
Thu Jan 27 18:53:28 EST 2011


On 28/01/11 03:36, Thomas S Hatch wrote:
> I have been passively working on a similar project called quarters, but I
> must admit that my motivation is somewhat low not knowing if the project is
> in demand. So here is my question, do we think that something like this
> would be a benefit to Arch? Is this the type of project that should merit my
> attention?

An automated build system, in particular for the big rebuilds we do, has 
been discussed among the developers many times.  So there is definitely 
interest in such a system.

> Also, if we do think that this would be a good thing to have for Arch, I
> would like feedback on what types of features the system would have and how
> it would behave. Right now I am following the idea of supporting a
> distributed build system so that we can have any number of build servers in
> the fray working away to produce Arch packages for us. I am also attempting
> to build it in such a way that a database is not required and that the
> interface would be amazingly simple (this is Arch after all). This would
> mean that by mearly checking into svn a package would be built, and then an
> interface would pop up for the right people to sign it off, and once it has
> been signed off it would move over.

I have never liked the idea of automatic building after a SVN commit. 
There a plenty of times that commits are made to SVN in preparation for 
an update at a later time.  Instead, I would prefer a command-line queue 
submission tool (local or remote...).  You could have it flexible enough 
to take a "makepkg --source" tarball, or allow configuration for 
updating then building from a SVN/git/etc repo.

Thinking about what I do in packaging (and as someone who does not use 
the AUR), I see the following situations that need to be covered:


1) single package build:  This would probably be the majority use case


2) multi-package build:  Sometimes packages come in pairs/groups where 
updating one requires updating the next.  e.g. tcl and tk.  That 
requires building tcl, adding the new package to the chroot and then 
building tk.

Note there could be cases where this is more complicated...   e.g. 
Updating package A,B,C,D.   A is required for B, B is required for C and 
B is required for D.   Note that installing C in the chroot after 
building would be unclean for the build of D.  Think updates to desktop 
environments as an example of this.

makechrootpkg has the facility to add packages to a local repo after 
being built, so that could be used to implement this.


3) big rebuild:  e.g. for library soname bump.  There are two types of 
builds here.   A) the initial builds and B) all the packages requiring 
rebuild because of those in A.   For B, automatic pkgrel bumping would 
be good.  Also, some automatic determination of the build order for B 
would be very helpful.  This would require error handling as if a 
package low in the dependency chain fails, the rest of that chain should 
not be built.  Again, adding the packages to a local repo as the rebuild 
progresses will allow to build packages cleanly against those that are 
already rebuilt.   Also not that there could be no packages in list A 
(e.g. if we just want to rebuild all of [core]).


4) flexibility to add makepkg paramaters:  I'm not sure how widespread 
use this would get...
e.g. the toolchain is built in the following order:
linux-api-headers->glibc->binutils->gcc->binutils->glibc
The first glibc and binutils builds will be built with the --nocheck 
option in the future.  The gcc and final binutils and glibc builds are 
built with -L to save the testsuite build logs.  I guess you would make 
-L the default anyway and have them available at the end of the build 
for inspection.


Anyway, #3 is what I consider most important in an automated build 
system designed to make the job of packaging in Arch easier.  It is also 
the level where I would start using such a system....   Building a 
single package locally is a two "makechrootpkg" commands (one per 
architecture) and I do not have to transfer the resultant package to 
test.  So I doubt I would use a build system for that (unless build time 
was massive) as I can not see the automated build being more efficient 
for me.

Allan


More information about the arch-general mailing list