@@ -17,7 +17,7 @@ from buildbot.changes.filter import ChangeFilter
1717from buildbot .config import BuilderConfig
1818from buildbot .locks import WorkerLock
1919from buildbot .process .factory import BuildFactory
20- from buildbot .process .properties import Interpolate , Property , Transform
20+ from buildbot .process .properties import Interpolate , Property , Transform , renderer
2121from buildbot .reporters .generators .build import BuildStartEndStatusGenerator
2222from buildbot .reporters .github import GitHubStatusPush
2323from buildbot .reporters .message import MessageFormatterRenderable
@@ -50,6 +50,20 @@ def Merge(prop, *args):
5050# a shorter alias to save typing.
5151c = BuildmasterConfig = {}
5252
53+
54+ @renderer
55+ def jobs_per_build (props ):
56+ worker_info = props .getBuild ().getWorkerInfo ()
57+ numcpus = int (worker_info .get ("numcpus" , 1 ))
58+ workername = props .getProperty ("workername" , "" )
59+ max_builds = 1
60+ for w in c ["workers" ]:
61+ if w .name == workername :
62+ max_builds = w .max_builds or 1
63+ break
64+ return str (max (1 , numcpus // max_builds ))
65+
66+
5367# SERVER SETTINGS
5468
5569REPO_DIR = Path (__file__ ).parent .parent .resolve ()
@@ -512,7 +526,7 @@ def get_cmake_definitions(builder_type, halide_target="host", wasm_jit="wabt", e
512526
513527
514528def get_build_command (build_dir , targets = None ):
515- cmd = ["cmake" , "--build" , build_dir ]
529+ cmd = ["cmake" , "--build" , build_dir , "-j" , jobs_per_build ]
516530
517531 if targets :
518532 cmd .append ("--target" )
@@ -1098,7 +1112,7 @@ def add_test_steps(factory, builder_type):
10981112 timeout = 3600 ,
10991113 labels = parallel_test_labels ,
11001114 exclude_tests = exclude_tests ,
1101- jobs = Interpolate ( "%(worker:numcpus)s" ) ,
1115+ jobs = jobs_per_build ,
11021116 ** get_ctest_options (builder_type ),
11031117 )
11041118 )
0 commit comments