[Numpy-discussion] Waf or scons/numscons for a C/Fortran/Cython/Python project -- what's your recommendation?

Kurt Smith kwmsmith at gmail.com
Sat Jan 16 14:12:04 EST 2010

My questions here concern those familiar with configure/build/install
systems such as distutils, setuptools, scons/numscons or waf
(particularly David Cournapeau).

I'm creating a tool known as 'fwrap' that has a component that needs
to do essentially what f2py does now -- take fortran source code and
compile it into a python extension module.  It uses Cython to create
the extension module, and the current configure/build/install system
is a very kludgy monkeypatched Cython.distutils and numpy.distutils
setup.py script.  The setup.py script works for testing on my system
here, but for going prime time, I dread using it.  David has made his
critiques of distutils known for scientific software, and I agree.
What's the best alternative?

More specifically: what are the pros/cons between waf and
scons/numscons for configure/build/install of a
Fortran-C-Cython-Python project?

Is scons capable of handling the configure and install stages, or is
it only a build system?  As I understand it, numscons is called from
distutils; distutils handles the configure/install stages.
Scons/numscons have more fortran support that waf, from what I can
see.  The main downside of using scons is that I'd still have to mess
around with distutils.

It looks like waf has explicit support for all three stages, and could
be just what I'm looking for.  David has a few threads on the
waf-users list about getting fortran working with waf.  Has that
progressed much?  I want to contribute to this, for the benefit of
scipy and my project, and to limit duplicated work.  From what I
gather, the fortran configuration stuff in numscons is separated
nicely from the scon-specific stuff :-)  Would it be a matter of
porting the numscons fortran stuff into waf?

Any comments you have on using waf/scons for numerical projects would
be welcome!


More information about the NumPy-Discussion mailing list