pandora-build - make your software compile as pedantically as ours!

I've been working on cleanups to the Drizzle autoconf and automake system. Actually, to be fair, I've been doing this work on Drizzle, Gearmand, libdrizzle and libmemcached.

In all of those projects, we have the same set of build ideas:

  1. Warnings == Errors
  2. As many warnings as we can enable
  3. Lots of people will be building directly from bzr

As it turns out, I'm pretty lazy, and I got tired of remember to port the latest m4 macro fix that we made in one project across to the other three. O, hai - code reuse!

So I did some refactoring and split the several macros and large portions of the configure.ac files out into a set of m4 macro files. These now live in their own project, which you can grab from bzr via:

 bzr branch lp:pandora-build

Although each of the macros is useful by itself, the fun part is that you can just put:

 PANDORA_CANONICAL_TARGET

at the top of your configure.ac file right after AC_INIT  and the normal AC_CONFIG macros. It will set up libtool, automake, run some standard tests, and turn on assloads of warnings, etc.. essentially setting your build env up to be just like we're running for all of our projects. There are a few parameters that you can pass to control some optional features (drizzle, for instance, is the only one of our projects that uses gnulib)

To add the macros to your project, you can do one of two things. First, you can just copy all of the m4 files in to your m4 dir, but that will make Robert Collins sad. The better way is that you can do:

 autoreconf

 ./configure

 make install

in the pandora-build tree, which will add all of these macros to /usr/share/aclocal.

I welcome folks to start using them in their projects and to give me feedback. I'm sure feedback #1 will be "better documentation"... 

2 Comments

  1. [1]   Matt Ingenthron
    July 16, 2009 at 12:17 PM

    Seems like a good idea... I've just started experiementing with it. One thing which I can cope with but may be a bit of a barrier to others is shipping only via bzr. There are times having a tarball with a 'cooked' release, no matter the stability level of that release, is useful.
  2. [2]   Monty Taylor
    July 16, 2009 at 12:32 PM

    Totally agree. I'll start posting tarballs any ol' second now...
Comment on this post