buildomat.

what

buildomat is a not-too-mangled mess of Perl and Bourne shell scripts. It provides command-line tools to manage building and deploying multiple different builds of FreeBSD, including some basic batch job management. It also provides a handy webpage from which those builds can be started and monitored.

why?

I work on a bunch of different platforms and need to do builds rather a lot of the time, often wasting large amounts of time waiting for a build to complete only to find that it failed in the interim or whatever. The solution for me is to have an easy way to find out in what state various builds are and to launch them without having to resort to the righ incantations.

The issue of right incantation is not a trivial one. I have lost days of development time in the past to testing against the wrong build. Because my builds are often cross-builds with a wide set of options passed on the command line, I would have "build" and "install" scripts with the relevant build profiles in them. But I would sometimes build for one profile and install another, since the scripts were similarly-named. And errors fixed in one profile would not quickly be fixed in others. Explicit build profiles in buildomat, and a focus on host-oriented configuration are a solution to that.

And host orientation, too, can be a point of difficulty. For instance, I have a number of Cavium Octeon systems (six at current count) among my horde, and some of them need different kernels. But they share the same userland. In buildomat, it's easy for me to say that e.g. the Lanner MR-320 needs a special kernel to get its switch PHY driver, but the Lanner MR-730 just needs the generic kernel, but that they use the same userland. So the userland gets built only once, I can queue up the kernel builds to happen whenever the userland is done, and make the best use of my resources.

get.

You can download buildomat: buildomat-0.5.tar.gz.

Profiles are in the conf subdirectory, organized by type:

You'll also want to modify bom.sh to point to your development tree, where you want host builds deployed to, etc.


Copyright © 2010 Juli Mallett. All rights reserved.