From 66ba1f10c7ce3492d6e374d5aa57bc245f018664 Mon Sep 17 00:00:00 2001 From: Carlo Cabrera <30379873+carlocab@users.noreply.github.com> Date: Sun, 8 Sep 2024 19:57:25 +0800 Subject: [PATCH] shims/super/ninja: respect Homebrew parallelism `ninja` currently doesn't respect `HOMEBREW_MAKE_JOBS` or `ENV.deparallelize`. This change fixes that. --- Library/Homebrew/extend/ENV/super.rb | 10 +++++++--- Library/Homebrew/shims/super/ninja | 8 +++++++- 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/Library/Homebrew/extend/ENV/super.rb b/Library/Homebrew/extend/ENV/super.rb index b4fbd56e8d..89f7ecfa5e 100644 --- a/Library/Homebrew/extend/ENV/super.rb +++ b/Library/Homebrew/extend/ENV/super.rb @@ -75,6 +75,7 @@ module Superenv self["HOMEBREW_TEMP"] = HOMEBREW_TEMP.to_s self["HOMEBREW_OPTFLAGS"] = determine_optflags self["HOMEBREW_ARCHFLAGS"] = "" + self["HOMEBREW_MAKE_JOBS"] = determine_make_jobs.to_s self["CMAKE_PREFIX_PATH"] = determine_cmake_prefix_path self["CMAKE_FRAMEWORK_PATH"] = determine_cmake_frameworks_path self["CMAKE_INCLUDE_PATH"] = determine_cmake_include_path @@ -313,16 +314,19 @@ module Superenv # When passed a block, MAKEFLAGS is removed only for the duration of the block and is restored after its completion. sig { params(block: T.nilable(T.proc.returns(T.untyped))).returns(T.untyped) } def deparallelize(&block) - old = delete("MAKEFLAGS") + old_makeflags = delete("MAKEFLAGS") + old_make_jobs = delete("HOMEBREW_MAKE_JOBS") + self["HOMEBREW_MAKE_JOBS"] = "1" if block begin yield ensure - self["MAKEFLAGS"] = old + self["MAKEFLAGS"] = old_makeflags + self["HOMEBREW_MAKE_JOBS"] = old_make_jobs end end - old + old_makeflags end sig { returns(Integer) } diff --git a/Library/Homebrew/shims/super/ninja b/Library/Homebrew/shims/super/ninja index 5e5da7581c..bee8ac53f6 100755 --- a/Library/Homebrew/shims/super/ninja +++ b/Library/Homebrew/shims/super/ninja @@ -11,9 +11,15 @@ fi source "${HOMEBREW_LIBRARY}/Homebrew/shims/utils.sh" +parallel_args=() +if [[ -n "${HOMEBREW_MAKE_JOBS}" ]] +then + parallel_args+=(-j "${HOMEBREW_MAKE_JOBS}") +fi + # shellcheck disable=SC2154 export HOMEBREW_CCCFG="O${HOMEBREW_CCCFG}" -try_exec_non_system "ninja" "$@" +try_exec_non_system "ninja" "${parallel_args[@]}" "$@" echo "ninja: Shim failed to find ninja in PATH." exit 1