tags:

views:

156

answers:

2

What are the benefits and problems with the various Python make-like systems?

note We're using the denotations '(+)' and '(-)' respectively at the beginning of list items to indicate benefits and problems.

So far I'm aware of

  • buildit
    • was previously known as pymake
    • (-) seems to be obsolescing: last release was in late 2007
  • zc.buildout
    • (+) currently active as of 2010-07-20
    • uses rc-file-like syntax with [sections]
    • (-) python code cannot (?) readily be integrated into config files.
    • seems to place a lot of emphasis on working with .egg files.
  • scons
    • (+) currently active as of 2010-07-20
    • configuration files are written in pure Python
    • (+) python code can readily be integrated into config files
    • (-)? use of Python for config files may entail extra verbosity
  • waf
    • (+)? Mark says "Benefits as scons but faster"
    • Any downsides? Why are people still using scons?
A: 

When I used waf about 1.5-2 years ago, it had really sparse and poor documentation which greatly limited its utility. I haven't used waf in a while, though, so maybe that situation has changed.

mipadi
+1  A: 

One quirk of waf is that it's supposed to be copied into the source tree of the program. Scons is a lot more like make in that it's installed once on the system, and then you have essentially just a data file (in the form of a python program) in the source tree.

As a consequence, Scons is packaged on Ubuntu/Debian and waf is not.

It's possible but a bit hard in Scons to do metaprogramming that manipulates the dependency graph or adds new concepts for derivation. Apparently waf is better at that.

I have used Scons happily many times; for my next compiled project I will probably at least try waf.

You can read about Samba's experience with waf. They report that going from autoconf to Waf got the rpaths set correctly and shrunk the binaries by linking the necessary object files exactly once per program.

poolie