aboutsummaryrefslogtreecommitdiffhomepage
path: root/internal/rosa
diff options
context:
space:
mode:
authorOphestra <cat@gensokyo.uk>2026-04-15 16:18:02 +0900
committerOphestra <cat@gensokyo.uk>2026-04-15 18:49:36 +0900
commit520c36db6debd3e51b4d21395179b72a5b81cda2 (patch)
treebb1fcb075b085af8443ad31c4ae5135000919184 /internal/rosa
parent3352bb975bca696c8c4d2ed2f129c97514e013a4 (diff)
internal/rosa: respect preferred job count
This discontinues use of nproc, and also overrides detection behaviour in ninja. Signed-off-by: Ophestra <cat@gensokyo.uk>
Diffstat (limited to 'internal/rosa')
-rw-r--r--internal/rosa/cmake.go6
-rw-r--r--internal/rosa/curl.go4
-rw-r--r--internal/rosa/git.go2
-rw-r--r--internal/rosa/gnu.go6
-rw-r--r--internal/rosa/kernel.go4
-rw-r--r--internal/rosa/llvm.go4
-rw-r--r--internal/rosa/make.go4
-rw-r--r--internal/rosa/ninja.go2
-rw-r--r--internal/rosa/openssl.go2
-rw-r--r--internal/rosa/perl.go2
-rw-r--r--internal/rosa/rosa.go11
11 files changed, 28 insertions, 19 deletions
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)