diff options
author | Alyssa Ross <hi@alyssa.is> | 2019-01-07 02:18:36 +0000 |
---|---|---|
committer | Alyssa Ross <hi@alyssa.is> | 2019-01-07 02:18:47 +0000 |
commit | 36f56d99fa0a0765c9f1de4a5f17a9b05830c3f2 (patch) | |
tree | b3faaf573407b32aa645237a4d16b82778a39a92 /nixpkgs/pkgs/development/tools/build-managers/ninja | |
parent | 4e31070265257dc67d120c27e0f75c2344fdfa9a (diff) | |
parent | abf060725d7614bd3b9f96764262dfbc2f9c2199 (diff) | |
download | nixlib-36f56d99fa0a0765c9f1de4a5f17a9b05830c3f2.tar nixlib-36f56d99fa0a0765c9f1de4a5f17a9b05830c3f2.tar.gz nixlib-36f56d99fa0a0765c9f1de4a5f17a9b05830c3f2.tar.bz2 nixlib-36f56d99fa0a0765c9f1de4a5f17a9b05830c3f2.tar.lz nixlib-36f56d99fa0a0765c9f1de4a5f17a9b05830c3f2.tar.xz nixlib-36f56d99fa0a0765c9f1de4a5f17a9b05830c3f2.tar.zst nixlib-36f56d99fa0a0765c9f1de4a5f17a9b05830c3f2.zip |
Add 'nixpkgs/' from commit 'abf060725d7614bd3b9f96764262dfbc2f9c2199'
git-subtree-dir: nixpkgs git-subtree-mainline: 4e31070265257dc67d120c27e0f75c2344fdfa9a git-subtree-split: abf060725d7614bd3b9f96764262dfbc2f9c2199
Diffstat (limited to 'nixpkgs/pkgs/development/tools/build-managers/ninja')
-rw-r--r-- | nixpkgs/pkgs/development/tools/build-managers/ninja/default.nix | 49 | ||||
-rw-r--r-- | nixpkgs/pkgs/development/tools/build-managers/ninja/setup-hook.sh | 78 |
2 files changed, 127 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/development/tools/build-managers/ninja/default.nix b/nixpkgs/pkgs/development/tools/build-managers/ninja/default.nix new file mode 100644 index 000000000000..bb08ae2f3af5 --- /dev/null +++ b/nixpkgs/pkgs/development/tools/build-managers/ninja/default.nix @@ -0,0 +1,49 @@ +{ stdenv, fetchFromGitHub, python, buildDocs ? true, asciidoc, docbook_xml_dtd_45, docbook_xsl, libxslt, re2c }: + +with stdenv.lib; + +stdenv.mkDerivation rec { + name = "ninja-${version}"; + version = "1.8.2"; + + src = fetchFromGitHub { + owner = "ninja-build"; + repo = "ninja"; + rev = "v${version}"; + sha256 = "16scq9hcq6c5ap6sy8j4qi75qps1zvrf3p79j1vbrvnqzp928i5f"; + }; + + nativeBuildInputs = [ python ] ++ optionals buildDocs [ asciidoc docbook_xml_dtd_45 docbook_xsl libxslt.bin re2c ]; + + buildPhase = '' + python configure.py --bootstrap + '' + optionalString buildDocs '' + # "./ninja -vn manual" output copied here to support cross compilation. + asciidoc -b docbook -d book -o build/manual.xml doc/manual.asciidoc + xsltproc --nonet doc/docbook.xsl build/manual.xml > doc/manual.html + ''; + + installPhase = '' + install -Dm555 -t $out/bin ninja + install -Dm444 misc/bash-completion $out/share/bash-completion/completions/ninja + install -Dm444 misc/zsh-completion $out/share/zsh/site-functions/_ninja + '' + optionalString buildDocs '' + install -Dm444 -t $out/share/doc/ninja doc/manual.asciidoc doc/manual.html + ''; + + setupHook = ./setup-hook.sh; + + meta = { + description = "Small build system with a focus on speed"; + longDescription = '' + Ninja is a small build system with a focus on speed. It differs from + other build systems in two major respects: it is designed to have its + input files generated by a higher-level build system, and it is designed + to run builds as fast as possible. + ''; + homepage = https://ninja-build.org/; + license = licenses.asl20; + platforms = platforms.unix; + maintainers = with maintainers; [ thoughtpolice bjornfor orivej ]; + }; +} diff --git a/nixpkgs/pkgs/development/tools/build-managers/ninja/setup-hook.sh b/nixpkgs/pkgs/development/tools/build-managers/ninja/setup-hook.sh new file mode 100644 index 000000000000..e3c67bd139dd --- /dev/null +++ b/nixpkgs/pkgs/development/tools/build-managers/ninja/setup-hook.sh @@ -0,0 +1,78 @@ +ninjaBuildPhase() { + runHook preBuild + + local buildCores=1 + + # Parallel building is enabled by default. + if [ "${enableParallelBuilding-1}" ]; then + buildCores="$NIX_BUILD_CORES" + fi + + local flagsArray=( + -j$buildCores -l$NIX_BUILD_CORES + $ninjaFlags "${ninjaFlagsArray[@]}" + ) + + echoCmd 'build flags' "${flagsArray[@]}" + ninja "${flagsArray[@]}" + + runHook postBuild +} + +if [ -z "$dontUseNinjaBuild" -a -z "$buildPhase" ]; then + buildPhase=ninjaBuildPhase +fi + +ninjaInstallPhase() { + runHook preInstall + + # shellcheck disable=SC2086 + local flagsArray=( + $ninjaFlags "${ninjaFlagsArray[@]}" + ${installTargets:-install} + ) + + echoCmd 'install flags' "${flagsArray[@]}" + ninja "${flagsArray[@]}" + + runHook postInstall +} + +if [ -z "$dontUseNinjaInstall" -a -z "$installPhase" ]; then + installPhase=ninjaInstallPhase +fi + +ninjaCheckPhase() { + runHook preCheck + + if [ -z "${checkTarget:-}" ]; then + if ninja -t query test >/dev/null 2>&1; then + checkTarget=test + fi + fi + + if [ -z "${checkTarget:-}" ]; then + echo "no test target found in ninja, doing nothing" + else + local buildCores=1 + + if [ "${enableParallelChecking-1}" ]; then + buildCores="$NIX_BUILD_CORES" + fi + + local flagsArray=( + -j$buildCores -l$NIX_BUILD_CORES + $ninjaFlags "${ninjaFlagsArray[@]}" + $checkTarget + ) + + echoCmd 'check flags' "${flagsArray[@]}" + ninja "${flagsArray[@]}" + fi + + runHook postCheck +} + +if [ -z "$dontUseNinjaCheck" -a -z "$checkPhase" ]; then + checkPhase=ninjaCheckPhase +fi |