Waf (build system)

Last updated
Developer(s) Thomas Nagy
Stable release
2.0.25 / January 1, 2023;8 months ago (2023-01-01)
Repository
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.

Contents

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.[ citation needed ]

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

Related Research Articles

<span class="mw-page-title-main">Ghostscript</span> Interpreter for the PostScript language

Ghostscript is a suite of software based on an interpreter for Adobe Systems' PostScript and Portable Document Format (PDF) page description languages. Its main purposes are the rasterization or rendering of such page description language files, for the display or printing of document pages, and the conversion between PostScript and PDF files.

GNU Autoconf is a tool for producing configure scripts for building, installing, and packaging software on computer systems where a Bourne shell is available.

<span class="mw-page-title-main">GNU Autotools</span> Suite of programming tools

The GNU Autotools, also known as the GNU Build System, is a suite of programming tools designed to assist in making source code packages portable to many Unix-like systems.

<span class="mw-page-title-main">KDevelop</span> Integrated development environment

KDevelop is a free and open-source integrated development environment (IDE) for Unix-like computer operating systems and Windows. It provides editing, navigation and debugging features for several programming languages, and integration with build automation and version-control systems, using a plugin-based architecture.

<span class="mw-page-title-main">Doxygen</span> Free software for generating software documentation from source code

Doxygen is a documentation generator and static analysis tool for software source trees. When used as a documentation generator, Doxygen extracts information from specially-formatted comments within the code. When used for analysis, Doxygen uses its parse tree to generate diagrams and charts of the code structure. Doxygen can cross reference documentation and code, so that the reader of a document can easily refer to the actual code.

The Debian Free Software Guidelines (DFSG) is a set of guidelines that the Debian Project uses to determine whether a software license is a free software license, which in turn is used to determine whether a piece of software can be included in Debian. The DFSG is part of the Debian Social Contract.

<span class="mw-page-title-main">SCons</span>

SCons is a computer software build tool that automatically analyzes source code file dependencies and operating system adaptation requirements from a software project description and generates final binary executables for installation on the target operating system platform. Its function is analogous to the traditional GNU build system based on the make utility and the autoconf tools.

This comparison only covers software licenses which have a linked Wikipedia article for details and which are approved by at least one of the following expert groups: the Free Software Foundation, the Open Source Initiative, the Debian Project and the Fedora Project. For a list of licenses not specifically intended for software, see List of free-content licences.

<span class="mw-page-title-main">CMake</span> Cross-platform, compiler-independent build system generator

In software development, CMake is cross-platform free and open-source software for build automation, testing, packaging and installation of software by using a compiler-independent method. CMake is not a build system itself; it generates another system's build files. It supports directory hierarchies and applications that depend on multiple libraries. It is used in conjunction with native build environments such as Make, Qt Creator, Ninja, Android Studio, Apple's Xcode, and Microsoft Visual Studio. It has minimal dependencies, requiring only a C++ compiler on its own build system.

<span class="mw-page-title-main">Linux</span> Family of Unix-like operating systems

Linux is a family of open-source Unix-like operating systems based on the Linux kernel, an operating system kernel first released on September 17, 1991, by Linus Torvalds. Linux is typically packaged as a Linux distribution (distro), which includes the kernel and supporting system software and libraries, many of which are provided by the GNU Project. Many Linux distributions use the word "Linux" in their name, but the Free Software Foundation uses and recommends the name "GNU/Linux" to emphasize the use and importance of GNU software in many distributions, causing some controversy.

<span class="mw-page-title-main">History of free and open-source software</span> Aspect of history

In the 1950s and 1960s, computer operating software and compilers were delivered as a part of hardware purchases without separate fees. At the time, source code, the human-readable form of software, was generally distributed with the software providing the ability to fix bugs or add new functions. Universities were early adopters of computing technology. Many of the modifications developed by universities were openly shared, in keeping with the academic principles of sharing knowledge, and organizations sprung up to facilitate sharing. As large-scale operating systems matured, fewer organizations allowed modifications to the operating software, and eventually such operating systems were closed to modification. However, utilities and other added-function applications are still shared and new organizations have been formed to promote the sharing of software.

<span class="mw-page-title-main">GNU IceCat</span> Firefox derivative recommending only free software

GNU IceCat, formerly known as GNU IceWeasel, is a completely free version of the Mozilla Firefox web browser distributed by the GNU Project. It is compatible with Linux, Windows, Android and macOS.

<span class="mw-page-title-main">GNU Affero General Public License</span> Free software license based on the AGPLv1 and GPLv3

The GNU Affero General Public License is a free, copyleft license published by the Free Software Foundation in November 2007, and based on the GNU GPL version 3 and the Affero General Public License.

Debbugs is the software powering the Debian project's issue tracking system. Uniquely it doesn't have any form of web-interface to edit bug reports – all modification is done through email. Debbugs was mainly written by Ian Jackson, former Debian project leader.

<span class="mw-page-title-main">GNU Free Documentation License</span> Copyleft license primarily for free software documentation

The GNU Free Documentation License is a copyleft license for free documentation, designed by the Free Software Foundation (FSF) for the GNU Project. It is similar to the GNU General Public License, giving readers the rights to copy, redistribute, and modify a work and requires all copies and derivatives to be available under the same license. Copies may also be sold commercially, but, if produced in larger quantities, the original document or source code must be made available to the work's recipient.

<span class="mw-page-title-main">KVIrc</span> IRC Client

KVIrc is a graphical IRC client for Linux, Unix, Mac OS and Windows. The name is an acronym of K Visual IRC in which the K stands for a dependency to KDE, which became optional from version 2.0.0. The software is based on the Qt framework and its code is released under a modified GNU General Public License.

GYP is an obsolete build automation tool created in 2011 by Google. Its purpose was to generate native IDE project files for building the Chromium web browser and is licensed as open source software using the BSD software license.

<span class="mw-page-title-main">Meson (software)</span> Build automation system

Meson is a software tool for automating the building (compiling) of software. The overall goal for Meson is to promote programmer productivity. Meson is free and open-source software written in Python, under the Apache License 2.0.

<span class="mw-page-title-main">KDE Projects</span>

KDE Projects are projects maintained by the KDE community, a group of people developing and advocating free software for everyday use, for example KDE Plasma and KDE Frameworks or applications such as Amarok, Krita or Digikam. There are also non-coding projects like designing the Breeze desktop theme and iconset, which is coordinated by KDE's Visual Design Group. Even non-Qt applications like GCompris, which started as a GTK-based application, or web-based projects like WikiToLearn are officially part of KDE.

References

  1. "Waf". Analysis Summary. Ohloh. Retrieved 2010-12-19.
  2. Riddell, Jonathan (11 September 2005). "KDE to Migrate to bksys/SCons Build System". KDE Dot News. Retrieved 9 May 2012.
  3. Unrau, Troy (22 February 2007). "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).
  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.