Waf

For other uses, see WAF.
Waf
Developer(s) Thomas Nagy
Stable release
1.9.5 / October 9, 2016 (2016-10-09)
Written in Python[1]
Operating system MS Windows, POSIX
Type Software development tools
License New BSD License (source code), CC-BY-NC-ND (documentation)
Website waf.io

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.

Waf's source code is open source software, released under the terms of the New BSD License, though its accompanying documentation is under the CC-BY-NC-ND license, which forbids both modification and commercial redistribution: this prevents vendors such as the Debian project from including Waf documentation in their distributions.

History

Thomas Nagy created a build automation tool called BKsys which was designed to sit on top of SCons, providing higher-level functionality similar to that of Autotools. This was part of an effort for switching KDE away from Autotools to a more modern build system in the beginning stages of the KDE 4 development cycle. BKsys/SCons was chosen by the KDE community as their new standard build system.[2] When Thomas Nagy decided that SCons's fundamental issues (most notably the poor scalability) were too complex and time-consuming to fix, he started a complete rewrite which he named Waf. With BKsys being recognized as a dead end, KDE decided to switch to CMake instead;[3] however, Waf continued to be maintained as an individual project and has since seen prolific development and adoption by other communities.

Features

Waf features:

Waf supports:

Waf is written in Python. Rather than being intended to be installed as a prerequisite piece of system software, as with build systems such as GNU make, it is distributed as a script including an embedded archive file, intended to be run to unpack the Waf sources within a project's own source tree.

License

Waf's source code is released under the terms of the New BSD License. However, Nagy's intent is that Waf is to be included as part of an individual software project rather than installed as a system-wide build system. To that effect, the documentation which is shipped as part of the Waf release is under the CC-BY-NC-ND license, which forbids both modification and commercial redistribution: this change was made in order to obstruct the Debian project from including Waf as a system-wide software package.[4] While Debian initially simply refrained from including documentation, a direct request from Nagy made Debian remove Waf and discourage its use as a build system.[5]

Debian developer Ian Jackson opined that using Waf as distributed in a build system for software under the terms of the GNU General Public License (GNU GPL) would be in breach of the terms of that license, as the unpacking script produces an obfuscated copy of its original source code rather than the "preferred form for modification", as is required by the GPL's wording on build systems.[6]

See also

References

  1. "Waf". Analysis Summary. Ohloh. Retrieved 2010-12-19.
  2. Riddell, Jonathan. "KDE to Migrate to bksys/SCons Build System". KDE Dot News. Retrieved 9 May 2012.
  3. Unrau, Troy. "The Road to KDE 4: CMake, a New Build System for KDE". KDE Dot News. Retrieved 9 May 2012.
  4. Nagy, Thomas (2 Oct 2009), "Configuration environment in custom targets", Waf users (mailing list), Google.
  5. Falavigna, Luca (27 Feb 2010), "Intent to remove waf from Debian", Debian devel (mailing list), Debian.
  6. Jackson, Ian (7 Feb 2012), "Doesn't contain source for waf binary code", Debian devel (mailing list), Debian.
This article is issued from Wikipedia - version of the 10/13/2016. The text is available under the Creative Commons Attribution/Share Alike but additional terms may apply for the media files.