I’ve been playing with SCons for the past couple of days. It’s intended to be a replacement for Make, and probably sounds similar enough with Ant or Maven, for those familiar with these tools from the Java world.
It’s pretty powerful in that it lets you use the boilerplate builders or you can build your own builders (and nodes!) too. It also allows you to write custom “freshness checks”. make usually verifies if a node is out of date by comparing the timestamps for the source and target nodes. This can get you in trouble when using CVS, for instance, because clocks are not synchronized. It’s also not very useful when what you build doesn’t live on the filesystem.
I will post some examples shortly. I am currently creating nodes for Mercurial checkouts and they work pretty well. CVC (Conary) nodes will follow shortly.
And yes, it’s written in Python…
Good idea! I’ve been using SCons for a couple of years now. Works well for C, C++ and custom tool work. The Java world is more familiar with Ant. I hear that VMWare has moved some (all?) of their builds to it from make. However, there’s usually a lot of momentum to continue using make, and it doesn’t do autoconfig as well as the autotools yet (it’s there, just not as widely used). Particularly nice is being able to put an:
import pdb
pdb.set_trace()
somewhere in a build file and using scons –debug=pdb to step through non-obvious issues in a real debugger.
~Matt