Skip to content

Commit

Permalink
{stdenv,ninja}: add support for NIX_LOAD_LIMIT
Browse files Browse the repository at this point in the history
  • Loading branch information
emilazy committed Jul 20, 2024
1 parent dfefabb commit f76f312
Show file tree
Hide file tree
Showing 2 changed files with 25 additions and 6 deletions.
3 changes: 3 additions & 0 deletions pkgs/by-name/ni/ninja/setup-hook.sh
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ ninjaBuildPhase() {

local flagsArray=(
-j$buildCores
${NIX_LOAD_LIMIT:+-l${NIX_LOAD_LIMIT}}
$ninjaFlags "${ninjaFlagsArray[@]}"
)

Expand Down Expand Up @@ -39,6 +40,7 @@ ninjaCheckPhase() {

local flagsArray=(
-j$buildCores
${NIX_LOAD_LIMIT:+-l${NIX_LOAD_LIMIT}}
$ninjaFlags "${ninjaFlagsArray[@]}"
$checkTarget
)
Expand All @@ -63,6 +65,7 @@ ninjaInstallPhase() {
# shellcheck disable=SC2086
local flagsArray=(
-j$buildCores
${NIX_LOAD_LIMIT:+-l${NIX_LOAD_LIMIT}}
$ninjaFlags "${ninjaFlagsArray[@]}"
${installTargets:-install}
)
Expand Down
28 changes: 22 additions & 6 deletions pkgs/stdenv/generic/setup.sh
Original file line number Diff line number Diff line change
Expand Up @@ -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.
Expand Down Expand Up @@ -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

Expand Down Expand Up @@ -1429,6 +1442,7 @@ checkPhase() {
local flagsArray=(
${enableParallelChecking:+-j${NIX_BUILD_CORES}}
SHELL="$SHELL"
${NIX_LOAD_LIMIT:+-l${NIX_LOAD_LIMIT}}
)

_accumFlagsArray makeFlags makeFlagsArray
Expand Down Expand Up @@ -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
Expand Down Expand Up @@ -1560,6 +1575,7 @@ installCheckPhase() {
local flagsArray=(
${enableParallelChecking:+-j${NIX_BUILD_CORES}}
SHELL="$SHELL"
${NIX_LOAD_LIMIT:+-l${NIX_LOAD_LIMIT}}
)

_accumFlagsArray makeFlags makeFlagsArray \
Expand Down

0 comments on commit f76f312

Please sign in to comment.