Saturday 29 August 2009

$ make distro

That's what the OBS does for us.

The openSuse builder  provides Mer with an incredibly powerful tool for building packages.

It gives us:
  • over 150 build cores !!
  • powerful monitoring and control tools - web and cli
  • total access - it's all GPL
  • proven capability - openSUSE and SLE are built using it
  • distribution neutrality
OBS is a GPL, distro-neutral build system; it works by creating a totally empty virtual machine (or chroot), bootstrapping a minimal version of a distribution and then driving the distro's own build tools to pull in the build dependencies from the official distribution repository. Finally it calls the native tools (eg dpkg-buildpackage) to build the package

Think of it as a wrapper around the distribution's standard build tools which provides queue management and a good web interface.

What's good about that then?
  • No wheels being re-invented - it uses the 'standard' tools
  • Quality control - packages must specify exactly what they depend on to build; and a build installs clean packages and builds from clean source
  • Management wrappers - more about this later

And it does this around multiple base distributions inclding Debian/Ubuntu/Redhat/Centos/Moblin and of course SUSE and openSUSE.
Just try building a Redhat package on the Debian build system - or vice versa.

What makes it particularly interesting for Mer is that it also does this with multiple architectures including ARM.

So what Mer essentially does is to feed it a large number (~200) standard debian format source packages and wait for it to spit out .deb files in an sources.list compatible repository.

Doing this correctly means it needs to analyse build dependencies and, make-like, consider the freshness of those dependencies to determine if a rebuild is required. So if a change is needed in  libhildonfm2 then all the packages that depend on it will be rebuilt - nice.

If you'd like to read a bit more about how Mer uses it then start on the Mer Build pages.