diff options
| author | Nathan Chancellor <nathan@kernel.org> | 2026-10-17 15:20:23 -0700 |
|---|---|---|
| committer | Nathan Chancellor <nathan@kernel.org> | 2026-10-17 15:20:23 -0700 |
| commit | 997208ce9f43f01febac956cf9aeffe89945e3c1 (patch) | |
| tree | d4231d4fd038bb85afba855543686ceb5cafc0f6 /tools/lib/python | |
| parent | 2b358510d5cc56164f83110ca1499c95a5a352cd (diff) | |
| parent | ae5f6044c4cdffe2b3361b15c1d6fc67b339f2a4 (diff) | |
| download | lwn-997208ce9f43f01febac956cf9aeffe89945e3c1.tar.gz lwn-997208ce9f43f01febac956cf9aeffe89945e3c1.zip | |
Merge branch 'kbuild-next-speedups' into kbuild-next
This is the first round of commits and fix-ups from Lorenzo's Kbuild
speed up series.
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) |
