Home Explore Blog Models CI



nixpkgs

doc/hooks/waf.section.md
086105c6cdbf568763c2c8a3f7b06b8b1939ec409e611bca00000003000007d3
# wafHook {#waf-hook}

[Waf](https://waf.io) is a Python-based software building system.

In Nixpkgs, `wafHook` overrides the default configure, build, and install phases.

## Variables controlling wafHook {#waf-hook-variables-controlling}

### `wafHook` Exclusive Variables {#waf-hook-exclusive-variables}

The variables below are exclusive of `wafHook`.

#### `wafPath` {#waf-path}

Location of the `waf` tool. It defaults to `./waf`, to honor software projects that include it directly inside their source trees.

If the file pointed by `wafPath` doesn't exist, then `waf` provided by Nixpkgs will be used.

#### `wafFlags` {#waf-flags}

Controls the flags passed to waf tool during build and install phases. For settings specific to build or install phases, use `wafBuildFlags` or `wafInstallFlags`, respectively.

#### `dontUseWafConfigure` {#dont-use-waf-configure}

When set to true, don't use the predefined `wafConfigurePhase`.

#### `dontUseWafBuild` {#dont-use-waf-build}

When set to true, don't use the predefined `wafBuildPhase`.

#### `dontUseWafInstall` {#dont-use-waf-install}

When set to true, don't use the predefined `wafInstallPhase`.

### Similar variables {#waf-hook-similar-variables}

The following variables are similar to their `stdenv.mkDerivation` counterparts.

| `wafHook` Variable    | `stdenv.mkDerivation` Counterpart |
|-----------------------|-----------------------------------|
| `wafConfigureFlags`   | `configureFlags`                  |
| `wafConfigureTargets` | `configureTargets`                |
| `wafBuildFlags`       | `buildFlags`                      |
| `wafBuildTargets`     | `buildTargets`                    |
| `wafInstallFlags`     | `installFlags`                    |
| `wafInstallTargets`   | `installTargets`                  |

### Honored variables {#waf-hook-honored-variables}

The following variables commonly used by `stdenv.mkDerivation` are honored by `wafHook`.

- `prefixKey`
- `enableParallelBuilding`
- `enableParallelInstalling`

Chunks
64908b4e (1st chunk of `doc/hooks/waf.section.md`)
Title: wafHook in Nixpkgs: Controlling Waf Builds
Summary
The `wafHook` in Nixpkgs is designed to override the default `configure`, `build`, and `install` phases for software projects that use Waf, a Python-based software building system. It provides several variables for customization: * **Exclusive `wafHook` variables** like `wafPath` (defaulting to `./waf` for local `waf` tools), `wafFlags` (for general flags), and `dontUseWafConfigure`, `dontUseWafBuild`, `dontUseWafInstall` to disable specific predefined phases. * **Variables similar to `stdenv.mkDerivation` counterparts** such as `wafConfigureFlags`, `wafBuildFlags`, and `wafInstallFlags`, which control flags and targets for their respective phases. * **Honored common variables** from `stdenv.mkDerivation`, including `prefixKey`, `enableParallelBuilding`, and `enableParallelInstalling`.