Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Choosing between Scons and Waf in Large Projects

We are thinking about converting a really large project from using GNU Make to some more modern build tool. My current suggestion is to use SCons or Waf.

Currently:

  • Build times are around 15 minutes.
  • Around 100 developers.
  • About 10 percent of code is C/C++/Fortran rest is Ada (using gnatmake).

Potential hopes/gains on improvements are

  • Shared Compiler Cache to cut down build times and requires disk space
  • Easier maintenance

Does SCons scale well for this task? I've seen comments on it not scaling aswell as Waf. Those are however a couple of years old. Have scons gained in performanced the last years? If not, what is the reason for its bad performance compared to Waf.

like image 556
Nordlöw Avatar asked Sep 24 '12 16:09

Nordlöw


People also ask

Is Scons dead?

Scons is effectively dead, and I wish people would start removing it from the Python build systems web pages. Meson is written in Python and isn't dead. However, Meson requires a partner to actually build things--something like cmake or ninja.

What is SConscript?

It is Open Source software using Python scripts to create configuration files. SConscript files are the equivalent of the requirements files currently used with CMT, and they define the targets that Scons will create during the build process. (For a more detailed introduction, go to http://scons.org/.)

What is WAF build tool?

Waf is a build automation tool designed to assist in the automatic compilation and installation of computer software. It is written in Python and maintained by Thomas Nagy.


2 Answers

I have been developing a tool chain for our company that is built around waf. It targets Fedora, Ubuntu, Arch, Windows, Mac OSX and will be rolled out to our embedded devices doing cross-compilation on various hosts.

We have found the way that waf allows contained extensibility through the tools, features and other methods has made it incredibly easy to customise and extend for our projects.

Personally, I think it is brilliant and find it nicely abstracts the interfaces to different tools that are integrated.

Unfortunately, I have no in-depth experience with Scons but lots with GNU Make/Autotools. Our decision to go with waf after evaluating build tools was that we needed something that worked well everywhere which made our build tool being backed by python and that it was fast. I based my decision on these results and went from there.

like image 164
Matt Clarkson Avatar answered Sep 30 '22 17:09

Matt Clarkson


In the past, SCons wasnt as performant, but lots of improvements have been added since then.

I like both options and had to make the same decision about 6 months ago. I went with SCons since it appears to have a larger user and support base.

Here is a helpful link that compares SCons to other build tools.

like image 28
Brady Avatar answered Sep 30 '22 18:09

Brady