summaryrefslogtreecommitdiff
path: root/tools
diff options
context:
space:
mode:
authorhathach <[email protected]>2024-12-11 16:41:11 +0700
committerhathach <[email protected]>2024-12-11 16:41:11 +0700
commitaa1bab769af601304eb62fcdc5241e7b94d4b935 (patch)
treeb6707fa5bea9a5af3b98d0a88d95966c99c98046 /tools
parent91799b0df5d3a33499a798af07f5dfd18d8dba3b (diff)
limit parallel for circleci
Diffstat (limited to 'tools')
-rwxr-xr-xtools/build.py13
1 files changed, 7 insertions, 6 deletions
diff --git a/tools/build.py b/tools/build.py
index bbc98e9c4..633d2b582 100755
--- a/tools/build.py
+++ b/tools/build.py
@@ -110,12 +110,13 @@ def cmake_board(board, toolchain, build_flags_on):
f'-DTOOLCHAIN={toolchain} {build_flags}')
if rcmd.returncode == 0:
cmd = f"cmake --build {build_dir}"
- # Due to IAR capability, limit parallel build to 4 (medium+) or 6 (large) docker
- if toolchain == 'iar' and os.getenv('CIRCLECI'):
- if 'large' in os.getenv('CIRCLE_JOB'):
- cmd += ' --parallel 6'
- else:
- cmd += ' --parallel 4'
+ # circleci docker return $nproc as 36 core, limit parallel according to resource class. Required for IAR, also prevent crashed/killed by docker
+ if os.getenv('CIRCLECI'):
+ resource_class = { 'small': 1, 'medium': 2, 'medium+': 3, 'large': 4 }
+ for rc in resource_class:
+ if rc in os.getenv('CIRCLE_JOB'):
+ cmd += f' --parallel {resource_class[rc]}'
+ break
rcmd = run_cmd(cmd)
ret[0 if rcmd.returncode == 0 else 1] += 1