From f76f312b9c4f435c35ba7a86f6bb79ec16643fb6 Mon Sep 17 00:00:00 2001 From: Emily Date: Thu, 18 Jul 2024 14:26:22 +0100 Subject: [PATCH] {stdenv,ninja}: add support for `NIX_LOAD_LIMIT` See: https://github.com/NixOS/nix/pull/11143 --- pkgs/by-name/ni/ninja/setup-hook.sh | 3 +++ pkgs/stdenv/generic/setup.sh | 28 ++++++++++++++++++++++------ 2 files changed, 25 insertions(+), 6 deletions(-) diff --git a/pkgs/by-name/ni/ninja/setup-hook.sh b/pkgs/by-name/ni/ninja/setup-hook.sh index 7fa5e4675f39b..267af764ab1c9 100644 --- a/pkgs/by-name/ni/ninja/setup-hook.sh +++ b/pkgs/by-name/ni/ninja/setup-hook.sh @@ -10,6 +10,7 @@ ninjaBuildPhase() { local flagsArray=( -j$buildCores + ${NIX_LOAD_LIMIT:+-l${NIX_LOAD_LIMIT}} $ninjaFlags "${ninjaFlagsArray[@]}" ) @@ -39,6 +40,7 @@ ninjaCheckPhase() { local flagsArray=( -j$buildCores + ${NIX_LOAD_LIMIT:+-l${NIX_LOAD_LIMIT}} $ninjaFlags "${ninjaFlagsArray[@]}" $checkTarget ) @@ -63,6 +65,7 @@ ninjaInstallPhase() { # shellcheck disable=SC2086 local flagsArray=( -j$buildCores + ${NIX_LOAD_LIMIT:+-l${NIX_LOAD_LIMIT}} $ninjaFlags "${ninjaFlagsArray[@]}" ${installTargets:-install} ) diff --git a/pkgs/stdenv/generic/setup.sh b/pkgs/stdenv/generic/setup.sh index 40bf6554183c6..812f281850260 100644 --- a/pkgs/stdenv/generic/setup.sh +++ b/pkgs/stdenv/generic/setup.sh @@ -858,16 +858,28 @@ unset _HOST_PATH unset _XDG_DATA_DIRS -# Normalize the NIX_BUILD_CORES variable. The value might be 0, which -# means that we're supposed to try and auto-detect the number of -# available CPU cores at run-time. +# Normalize the NIX_BUILD_CORES and NIX_LOAD_LIMIT variables. The value +# might be 0, which means that we're supposed to try and auto-detect +# the number of available CPU cores at run-time. + +_guessCores() { + guess=$(nproc 2>/dev/null || true) + if test "$guess" -le 0; then + printf 1 + else + printf '%d' "$guess" + fi +} NIX_BUILD_CORES="${NIX_BUILD_CORES:-1}" -if ((NIX_BUILD_CORES <= 0)); then - guess=$(nproc 2>/dev/null || true) - ((NIX_BUILD_CORES = guess <= 0 ? 1 : guess)) +if test "$NIX_BUILD_CORES" -le 0; then + NIX_BUILD_CORES=$(_guessCores) +fi +if test "${NIX_LOAD_LIMIT:-1}" -le 0; then + NIX_LOAD_LIMIT=$(_guessCores) fi export NIX_BUILD_CORES +export NIX_LOAD_LIMIT # Prevent SSL libraries from using certificates in /etc/ssl, unless set explicitly. @@ -1391,6 +1403,7 @@ buildPhase() { local flagsArray=( ${enableParallelBuilding:+-j${NIX_BUILD_CORES}} SHELL="$SHELL" + ${NIX_LOAD_LIMIT:+-l${NIX_LOAD_LIMIT}} ) _accumFlagsArray makeFlags makeFlagsArray buildFlags buildFlagsArray @@ -1429,6 +1442,7 @@ checkPhase() { local flagsArray=( ${enableParallelChecking:+-j${NIX_BUILD_CORES}} SHELL="$SHELL" + ${NIX_LOAD_LIMIT:+-l${NIX_LOAD_LIMIT}} ) _accumFlagsArray makeFlags makeFlagsArray @@ -1472,6 +1486,7 @@ installPhase() { local flagsArray=( ${enableParallelInstalling:+-j${NIX_BUILD_CORES}} SHELL="$SHELL" + ${NIX_LOAD_LIMIT:+-l${NIX_LOAD_LIMIT}} ) _accumFlagsArray makeFlags makeFlagsArray installFlags installFlagsArray if [ -n "$__structuredAttrs" ]; then @@ -1560,6 +1575,7 @@ installCheckPhase() { local flagsArray=( ${enableParallelChecking:+-j${NIX_BUILD_CORES}} SHELL="$SHELL" + ${NIX_LOAD_LIMIT:+-l${NIX_LOAD_LIMIT}} ) _accumFlagsArray makeFlags makeFlagsArray \