diff --git a/internal/rosa/cmake.go b/internal/rosa/cmake.go index 6aa47fbd..52948669 100644 --- a/internal/rosa/cmake.go +++ b/internal/rosa/cmake.go @@ -91,7 +91,7 @@ index 2ead810437..f85cbb8b1c 100644 ConfigureName: "/usr/src/cmake/bootstrap", Configure: []KV{ {"prefix", "/system"}, - {"parallel", `"$(nproc)"`}, + {"parallel", jobsE}, {"--"}, {"-DCMAKE_USE_OPENSSL", "OFF"}, {"-DCMake_TEST_NO_NETWORK", "ON"}, @@ -170,10 +170,8 @@ func (attr *CMakeHelper) script(name string) string { } generate := "Ninja" - jobs := "" if attr.Make { generate = "'Unix Makefiles'" - jobs += ` "--parallel=$(nproc)"` } return ` @@ -191,7 +189,7 @@ cmake -G ` + generate + ` \ }), " \\\n\t") + ` \ -DCMAKE_INSTALL_PREFIX=/system \ '/usr/src/` + name + `/` + filepath.Join(attr.Append...) + `' -cmake --build .` + jobs + ` +cmake --build . --parallel=` + jobsE + ` cmake --install . --prefix=/work/system ` + attr.Script } diff --git a/internal/rosa/curl.go b/internal/rosa/curl.go index 4d411a02..4efd1c59 100644 --- a/internal/rosa/curl.go +++ b/internal/rosa/curl.go @@ -15,7 +15,7 @@ func (t Toolchain) newCurl() (pkg.Artifact, string) { // remove broken test Writable: true, ScriptEarly: ` -chmod +w tests/data && rm tests/data/test459 +chmod +w tests/data && rm -f tests/data/test459 `, }, &MakeHelper{ Configure: []KV{ @@ -25,7 +25,7 @@ chmod +w tests/data && rm tests/data/test459 {"disable-smb"}, }, Check: []string{ - `TFLAGS="-j$(expr "$(nproc)" '*' 2)"`, + "TFLAGS=" + jobsLFlagE, "test-nonflaky", }, }, diff --git a/internal/rosa/git.go b/internal/rosa/git.go index e1e68b98..76e22330 100644 --- a/internal/rosa/git.go +++ b/internal/rosa/git.go @@ -58,7 +58,7 @@ disable_test t2200-add-update "prove", }, Install: `make \ - "-j$(nproc)" \ + ` + jobsFlagE + ` \ DESTDIR=/work \ NO_INSTALL_HARDLINKS=1 \ install`, diff --git a/internal/rosa/gnu.go b/internal/rosa/gnu.go index 2b93506d..0385fd5e 100644 --- a/internal/rosa/gnu.go +++ b/internal/rosa/gnu.go @@ -103,7 +103,7 @@ func (t Toolchain) newAutoconf() (pkg.Artifact, string) { Flag: TExclusive, }, &MakeHelper{ Check: []string{ - `TESTSUITEFLAGS="-j$(nproc)"`, + "TESTSUITEFLAGS=" + jobsFlagE, "check", }, }, @@ -185,7 +185,7 @@ func (t Toolchain) newLibtool() (pkg.Artifact, string) { pkg.TarGzip, ), nil, &MakeHelper{ Check: []string{ - `TESTSUITEFLAGS="-j$(nproc)"`, + "TESTSUITEFLAGS=" + jobsFlagE, "check", }, }, @@ -732,7 +732,7 @@ func (t Toolchain) newTar() (pkg.Artifact, string) { // very expensive "TARTEST_SKIP_LARGE_FILES=1", - `TESTSUITEFLAGS="-j$(nproc)"`, + "TESTSUITEFLAGS=" + jobsFlagE, "check", }, }, diff --git a/internal/rosa/kernel.go b/internal/rosa/kernel.go index 508c52d5..d253a0dc 100644 --- a/internal/rosa/kernel.go +++ b/internal/rosa/kernel.go @@ -1221,7 +1221,7 @@ install -Dm0500 \ /sbin/depmod make \ - "-j$(nproc)" \ + ` + jobsFlagE + ` \ -f /usr/src/kernel/Makefile \ O=/tmp/kbuild \ LLVM=1 \ @@ -1309,7 +1309,7 @@ func (t Toolchain) newFirmware() (pkg.Artifact, string) { "install-zst", }, SkipCheck: true, // requires pre-commit - Install: `make "-j$(nproc)" DESTDIR=/work/system dedup`, + Install: "make " + jobsFlagE + " DESTDIR=/work/system dedup", }, Parallel, Rdfind, diff --git a/internal/rosa/llvm.go b/internal/rosa/llvm.go index 88ba915c..0d3c993b 100644 --- a/internal/rosa/llvm.go +++ b/internal/rosa/llvm.go @@ -190,7 +190,7 @@ ln -s ld.lld /work/system/bin/ld ln -s clang /work/system/bin/cc ln -s clang++ /work/system/bin/c++ -ninja check-all +ninja ` + jobsFlagE + ` check-all `, }, Python, @@ -230,7 +230,7 @@ func (t Toolchain) newLibclc() (pkg.Artifact, string) { {"LIBCLC_TARGETS_TO_BUILD", "all"}, }, - Script: "ninja test", + Script: "ninja " + jobsFlagE + " test", }), llvmVersion } func init() { diff --git a/internal/rosa/make.go b/internal/rosa/make.go index 5a7cc420..0c5a4982 100644 --- a/internal/rosa/make.go +++ b/internal/rosa/make.go @@ -185,7 +185,7 @@ func (attr *MakeHelper) script(name string) string { scriptMake := ` make \ - "-j$(nproc)"` + ` + jobsFlagE if len(attr.Make) > 0 { scriptMake += " \\\n\t" + strings.Join(attr.Make, " \\\n\t") } @@ -193,7 +193,7 @@ make \ if !attr.SkipCheck { scriptMake += attr.ScriptCheckEarly + `make \ - "-j$(nproc)" \ + ` + jobsFlagE + ` \ ` if len(attr.Check) > 0 { scriptMake += strings.Join(attr.Check, " \\\n\t") diff --git a/internal/rosa/ninja.go b/internal/rosa/ninja.go index 9302ba4d..ff0e739c 100644 --- a/internal/rosa/ninja.go +++ b/internal/rosa/ninja.go @@ -15,7 +15,7 @@ cd "$(mktemp -d)" python3 /usr/src/ninja/configure.py \ --bootstrap \ --gtest-source-dir=/usr/src/googletest -./ninja all +./ninja `+jobsFlagE+` all ./ninja_test mkdir -p /work/system/bin/ diff --git a/internal/rosa/openssl.go b/internal/rosa/openssl.go index 6c79019b..79e5917d 100644 --- a/internal/rosa/openssl.go +++ b/internal/rosa/openssl.go @@ -27,7 +27,7 @@ func (t Toolchain) newOpenSSL() (pkg.Artifact, string) { {"openssldir", "etc/ssl"}, }, Check: []string{ - `HARNESS_JOBS="$(expr "$(nproc)" '*' 2)"`, + "HARNESS_JOBS=" + jobsLE, "test", }, }, diff --git a/internal/rosa/perl.go b/internal/rosa/perl.go index acfebfa1..2776dc6f 100644 --- a/internal/rosa/perl.go +++ b/internal/rosa/perl.go @@ -43,7 +43,7 @@ rm -f /system/bin/ps # perl does not like toybox ps {"Duseshrplib"}, }, Check: []string{ - "TEST_JOBS=256", + "TEST_JOBS=" + jobsLE, "test_harness", }, Install: `LD_LIBRARY_PATH="$PWD" ./perl -Ilib -I. installperl --destdir=/work`, diff --git a/internal/rosa/rosa.go b/internal/rosa/rosa.go index ab230b31..8f664f7d 100644 --- a/internal/rosa/rosa.go +++ b/internal/rosa/rosa.go @@ -602,6 +602,17 @@ cd '/usr/src/` + name + `/' ) } +const ( + // jobsE is expression for preferred job count set by [pkg]. + jobsE = `"$` + pkg.EnvJobs + `"` + // jobsE is expression for flag with preferred job count. + jobsFlagE = `"-j$` + pkg.EnvJobs + `"` + // jobsLE is expression for twice of preferred job count set by [pkg]. + jobsLE = `"$(expr ` + jobsE + ` '*' 2)"` + // jobsE is expression for flag with double of preferred job count. + jobsLFlagE = `"-j$(expr ` + jobsE + ` '*' 2)"` +) + // newTar wraps [pkg.NewHTTPGetTar] with a simpler function signature. func newTar(url, checksum string, compression uint32) pkg.Artifact { return pkg.NewHTTPGetTar(nil, url, mustDecode(checksum), compression)