2
0
mirror of https://gitlab.com/ita1024/waf.git synced 2024-11-16 06:57:21 +01:00
Go to file
Wynn Wilkes 84ba1e9da0 Fix possible crash in ctx.cmd_and_log() when verbose mode is on
- When waf is run with -v, and it runs a call to context.cmd_and_log() with an argument list,
  argument[0] is a relative path, and a cwd **kwarg is passed so that the argument[0] resolves
  correctly, then the call will crash saying the program could not be found. For example, the
  caller may be wrapping calls using a nodejs environment like:

  ctx.cmd_and_log("./node_modules/bin/webpack", cwd="webui")

  and this will fail with "Program ./node_modules/.bin/webpack not found!"
  if waf is run with -v. The user friendly check for usable programs still
  stays in place for shell calls and absolute paths, but allows the caller
  to use this pattern even when verbose mode is on. This same fix was
  previously made for context.exec_command().
2024-01-12 14:28:29 +01:00
.pipelines Update the CI pipelines 2021-12-04 10:22:00 +01:00
build_system_kit Fix a few deprecation warnings 2019-01-16 06:51:14 +01:00
demos Switch to nonstopmode for latex prompts #2421 2023-12-07 21:14:05 +01:00
docs Update the documentation 2023-07-15 15:29:53 +02:00
playground Haxe Toolkit support 2023-03-28 22:57:14 +00:00
tests Sort visual studio versions by version number #2352 2022-05-22 11:30:52 +02:00
utils Update the public key from the main branch 2023-10-21 10:36:54 +02:00
waflib Fix possible crash in ctx.cmd_and_log() when verbose mode is on 2024-01-12 14:28:29 +01:00
zip
.gitignore Ignore VIM temporary files and Windows waf unpacks 2019-12-10 04:55:31 +01:00
ChangeLog Ensure ConfigurationContext.load/Context.load have the same interface 2021-05-09 10:32:16 +02:00
configure
DEVEL
LICENSE Duplicate the license to a file #2357 2023-10-21 10:17:57 +02:00
README.md Update the documentation 2023-07-15 15:29:53 +02:00
TODO Ensure ConfigurationContext.load/Context.load have the same interface 2021-05-09 10:32:16 +02:00
waf-light The future version will be 2.1.0 2019-11-03 10:45:20 +01:00
wscript Support SOURCE_DATE_EPOCH in some places 2023-02-12 10:42:11 +01:00

ABOUT WAF

Waf is a Python-based framework for configuring, compiling and installing applications. Here are perhaps the most important features of Waf:

  • Automatic build order: the build order is computed from input and output files, among others
  • Automatic dependencies: tasks to execute are detected by hashing files and commands
  • Performance: tasks are executed in parallel automatically, the startup time is meant to be fast (separation between configuration and build)
  • Flexibility: new commands and tasks can be added very easily through subclassing, bottlenecks for specific builds can be eliminated through dynamic method replacement
  • Extensibility: though many programming languages and compilers are already supported by default, many others are available as extensions
  • IDE support: Eclipse, Visual Studio and Xcode project generators (waflib/extras/)
  • Documentation: the application is based on a robust model documented in The Waf Book and in the API docs
  • Python compatibility: cPython 2.5 to 3.x, Jython 2.5, IronPython, and Pypy

Learn more about Waf by reading The Waf Book. For researchers and build system writers, Waf also provides a framework and examples for creating custom build systems and package distribution systems.

Download the project from our page on waf.io, consult the manual, the API documentation and the showcases and experiments.

HOW TO CREATE THE WAF SCRIPT

Python >= 2.7 is required to generate the waf script:

$ python ./waf-light configure build

CUSTOMIZATION

The Waf tools in waflib/extras are not added to the waf script. To add some of them, use the --tools switch. An absolute path can be passed if the module does not exist under the 'extras' folder:

$ ./waf-light --tools=swig

To customize the initialization, pass the parameter 'prelude'. Here is for example how to create a waf file using the compat15 module:

$ ./waf-light --tools=compat15 --prelude=$'\tfrom waflib.extras import compat15\n'

Although any kind of initialization is possible, using the build system kit may be easier (folder build_system_kit):

$ ./waf-light --make-waf --tools=compat15,/comp/waf/aba.py --prelude=$'\tfrom waflib.extras import compat15\n\tprint("ok")'

To avoid regenerating the waf file all the time, just set the WAFDIR environment variable to the directory containing "waflib".

HOW TO RUN THE EXAMPLES

Try this:

cp waf demos/c/
cd demos/c/
./waf configure build