Richard Crowley’s blog


Yesterday, Noah Campbell started a discussion about autoconf(1) on the devops-toolchain mailing list and his followup caught my attention:

I have a makefile and an rpm spec files that I'd like to generate on behalf of the user provide some very simple input, i.e. a name, etc.

Think of it as a quick way to generate the necessary scaffolding to build and package a project.  I think autoconf does this, but I'm not experienced with that tool chain and I'm looking for a few pointers on how to start.

Here’s my response:

Apologies that this is built on Debian packages and you're after RPMs but your problem seems so similar that it gave me the final push to open-source Debra:

I use debra-makefile(1) (along with manskeleton(1) from but that's tangential) when starting any new project and the generated Makefile to build Debian packages far more easily than with dpkg-deb(1) alone.

GNU autoconf alone leaves you with source packages, which can be the right way to go but proper packages give tools like Puppet the ability to only install/upgrade what is actually missing/out-of-date.

Part of the motivation for building this tool was to attempt to standardize on our system's package management, avoiding RubyGems and the like wherever possible.  If it doesn't help you directly, I hope you can steal anything that's useful.


Debra is a tool I wrote to build Debian packages, my preferred method of distributing code these days.  It contains a set of tools that roughly add up to a bridge between Makefiles and Debian packages.  The manual pages are available online:

If you’re using Puppet, Chef, or something similar for configuration management, I highly recommend packaging your software.  Package managers make configuration management smarter and generally save themselves quite a bit of work.  Beyond that, I have become a big fan of pushing as much as possible into the system package manager and out of the isolated hands of RubyGems and the like.

Last but not least, code: