diff options
| author | Nathan Chancellor <nathan@kernel.org> | 2026-09-27 20:35:45 +0200 |
|---|---|---|
| committer | Nathan Chancellor <nathan@kernel.org> | 2026-09-27 20:35:45 +0200 |
| commit | 01e47164eab74535152431cfe239926ccd8d98f1 (patch) | |
| tree | 84390c0074ff93cb54ef00f0a927dbf1acf5bb35 /tools/lib/python | |
| parent | cfcc465018818fb4f08148a28adb5b0cb40a9ec1 (diff) | |
| parent | a98db7418797bc27bef53c861b97ac748f598414 (diff) | |
| download | linux-next-01e47164eab74535152431cfe239926ccd8d98f1.tar.gz linux-next-01e47164eab74535152431cfe239926ccd8d98f1.zip | |
Merge branch 'kbuild-next-speedups' into kbuild-for-next
Signed-off-by: Nathan Chancellor <nathan@kernel.org>
Diffstat (limited to 'tools/lib/python')
| -rwxr-xr-x | tools/lib/python/jobserver.py | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/tools/lib/python/jobserver.py b/tools/lib/python/jobserver.py index 0b1ffdf9f7a3..7e94635bf7d9 100755 --- a/tools/lib/python/jobserver.py +++ b/tools/lib/python/jobserver.py @@ -29,6 +29,10 @@ $claim child to do the actual work. The end goal here is to keep the total number of build tasks under the limit established by the initial ``make -j$n_proc`` call. +A command that takes its thread count on the command line rather than from +the environment can use the ``%PARALLELISM%`` token in its arguments, which +is replaced by the count, or by 1 when there is no jobserver. + See: https://www.gnu.org/software/make/manual/html_node/POSIX-Jobserver.html#POSIX-Jobserver """ @@ -38,6 +42,8 @@ import os import subprocess import sys +PARALLELISM_TOKEN = "%PARALLELISM%" + def warn(text, *args): print(f'WARNING: {text}', *args, file = sys.stderr) @@ -182,6 +188,9 @@ class JobserverExec: Run a command setting PARALLELISM env variable to the number of available job slots (claim) + 1, e.g. it will reserve claim slots to do the actual build work, plus one to monitor its children. + + Any %PARALLELISM% in the command's arguments is replaced by the same + number, or by 1 when there is no jobserver. """ self.open() # Ensure that self.claim is set @@ -192,4 +201,8 @@ class JobserverExec: if self.claim: os.environ["PARALLELISM"] = str(self.claim) + if not isinstance(cmd, str): + parallelism = str(self.claim or 1) + cmd = [arg.replace(PARALLELISM_TOKEN, parallelism) for arg in cmd] + return subprocess.call(cmd, *args, **pwargs) |
