From 69d1151bfabc005febf6f5f6a628072602a17f06 Mon Sep 17 00:00:00 2001 From: Matthew Bauer Date: Fri, 16 Nov 2018 16:22:11 -0600 Subject: [PATCH] ninja: make setup-hook.sh closer to setup.sh MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Things changed in the Ninja setup-hook: - Respect installFlags - Automatically add checkPhase (can be disabled with dontUseNinjaCheck in the same way as dontUseNinjaBuild and dontUseNinjaInstall). Tests are only run when "ninja test" exists. - Error in build phase when build.ninja is missing. We don’t have a way to fall back to other build methods, so it’s best to be very clear when we aren’t able to build with ninja - Set -l flag to 1 when enableParallelBuilding is disabled --- .../tools/build-managers/ninja/setup-hook.sh | 78 +++++++++++++------ 1 file changed, 56 insertions(+), 22 deletions(-) diff --git a/pkgs/development/tools/build-managers/ninja/setup-hook.sh b/pkgs/development/tools/build-managers/ninja/setup-hook.sh index d9ad7460931..61670ec9ebb 100644 --- a/pkgs/development/tools/build-managers/ninja/setup-hook.sh +++ b/pkgs/development/tools/build-managers/ninja/setup-hook.sh @@ -1,27 +1,23 @@ ninjaBuildPhase() { runHook preBuild - if [[ -z "$ninjaFlags" && ! ( -e build.ninja ) ]]; then - echo "no build.ninja, doing nothing" - else - local buildCores=1 + local buildCores=1 - # Parallel building is enabled by default. - if [ "${enableParallelBuilding-1}" ]; then - buildCores="$NIX_BUILD_CORES" - fi - - # shellcheck disable=SC2086 - local flagsArray=( \ - -j"$buildCores" -l"$NIX_BUILD_CORES" \ - $ninjaFlags "${ninjaFlagsArray[@]}" \ - $buildFlags "${buildFlagsArray[@]}") - - echoCmd 'build flags' "${flagsArray[@]}" - ninja "${flagsArray[@]}" - unset flagsArray + # Parallel building is enabled by default. + if [ "${enableParallelBuilding-1}" ]; then + buildCores="$NIX_BUILD_CORES" fi + local flagsArray=( + -j$buildCores -l$buildCores + $ninjaFlags "${ninjaFlagsArray[@]}" + $buildFlags "${buildFlagsArray[@]}" + ) + + echoCmd 'build flags' "${flagsArray[@]}" + ninja "${flagsArray[@]}" + unset flagsArray + runHook postBuild } @@ -32,11 +28,12 @@ fi ninjaInstallPhase() { runHook preInstall - installTargets="${installTargets:-install}" - # shellcheck disable=SC2086 - local flagsArray=( $installTargets \ - $ninjaFlags "${ninjaFlagsArray[@]}") + local flagsArray=( + $ninjaFlags "${ninjaFlagsArray[@]}" + $installFlags "${installFlagsArray[@]}" + ${installTargets:-install} + ) echoCmd 'install flags' "${flagsArray[@]}" ninja "${flagsArray[@]}" @@ -48,3 +45,40 @@ ninjaInstallPhase() { if [ -z "$dontUseNinjaInstall" -a -z "$installPhase" ]; then installPhase=ninjaInstallPhase fi + +ninjaCheckPhase() { + runHook preCheck + + if [ -z "${checkTarget:-}" ]; then + if ninja -n test >/dev/null 2>&1; then + checkTarget=test + fi + fi + + if [ -z "${checkTarget:-}" ]; then + echo "no check/test target in ${makefile:-Makefile}, doing nothing" + else + local buildCores=1 + + if [ "${enableParallelChecking-1}" ]; then + buildCores="$NIX_BUILD_CORES" + fi + + local flagsArray=( + -j$buildCores -l$buildCores + $ninjaFlags "${ninjaFlagsArray[@]}" + $checkFlags "${checkFlagsArray[@]}" + $checkTarget + ) + + echoCmd 'check flags' "${flagsArray[@]}" + ninja "${flagsArray[@]}" + unset flagsArray + fi + + runHook postCheck +} + +if [ -z "$dontUseNinjaCheck" -a -z "$checkPhase" ]; then + checkPhase=ninjaCheckPhase +fi