From 82e52d3090504b6ce1ee2df854221e81fd3949d1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mikolai=20G=C3=BCtschow?= Date: Wed, 4 Jun 2025 11:20:02 +0200 Subject: [PATCH 1/2] dist/tools/compile_test: allow specifying toolchain --- dist/tools/compile_test/compile_like_murdock.py | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/dist/tools/compile_test/compile_like_murdock.py b/dist/tools/compile_test/compile_like_murdock.py index 13a61aca78ce..204248f51fc3 100755 --- a/dist/tools/compile_test/compile_like_murdock.py +++ b/dist/tools/compile_test/compile_like_murdock.py @@ -194,9 +194,9 @@ def _modules_packages(app, board, jobs, env, cwd, args): _print_module_or_pkg_mismatch(app, board, lines, args) -def _build(app, board, jobs, env, cwd, args): +def _build(app, board, toolchain, jobs, env, cwd, args): cmd = (f'/bin/bash -c "source .murdock; JOBS={jobs} ' - f'compile {app} {board}:gnu"') + f'compile {app} {board}:{toolchain}"') try: out = __exec_cmd(cmd, shell=True, env=env, cwd=cwd, stderr=subprocess.STDOUT) @@ -235,6 +235,8 @@ def main(): parser.add_argument("-a", "--apps", nargs="+", help=("A list of apps to test on the supported boards." " If empty we will choose what is tested.")) + parser.add_argument("-t", "--toolchain", choices=["gnu", "llvm"], default="gnu", + help=("Toolchain to use")) parser.add_argument("-d", "--dry-run", action="store_true", help=("Show each of the boards and apps to be compiled" " without spending super long to compile them")) @@ -281,7 +283,8 @@ def main(): _modules_packages(app, board, args.jobs, full_env, riot_dir, args) else: - _build(app, board, args.jobs, full_env, riot_dir, args) + _build(app, board, args.toolchain, args.jobs, full_env, + riot_dir, args) elapse_time = datetime.datetime.now() - start_time _end(elapse_time.total_seconds(), args.jobs) From 3a3f1157981bf5a5ab924b28dc05dba7e202ee86 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mikolai=20G=C3=BCtschow?= Date: Wed, 4 Jun 2025 11:25:34 +0200 Subject: [PATCH 2/2] dist/tools/compile_test: error exit code on any failed build --- dist/tools/compile_test/compile_like_murdock.py | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/dist/tools/compile_test/compile_like_murdock.py b/dist/tools/compile_test/compile_like_murdock.py index 204248f51fc3..4eeb4fee1e42 100755 --- a/dist/tools/compile_test/compile_like_murdock.py +++ b/dist/tools/compile_test/compile_like_murdock.py @@ -203,6 +203,7 @@ def _build(app, board, toolchain, jobs, env, cwd, args): if args.very_very_verbose: print(out) print(f"{app: <30} {board: <30} PASS") + return True except subprocess.CalledProcessError as err: err.output = err.output.decode("utf-8", errors="replace") lines = err.output.split("\n") @@ -215,6 +216,7 @@ def _build(app, board, toolchain, jobs, env, cwd, args): print(f"{app: <30} {board: <30} FAIL: Kconfig hash mismatch") else: print(f"{app: <30} {board: <30} FAIL") + return False def main(): @@ -263,6 +265,7 @@ def main(): if 'all' in apps: apps = _all_apps(riot_dir) + ret = 0 for app in apps: test_dir = str(pathlib.PurePath(riot_dir, app)) if not pathlib.Path(test_dir).exists(): @@ -283,10 +286,12 @@ def main(): _modules_packages(app, board, args.jobs, full_env, riot_dir, args) else: - _build(app, board, args.toolchain, args.jobs, full_env, - riot_dir, args) + if not _build(app, board, args.toolchain, args.jobs, full_env, + riot_dir, args): + ret = -1 elapse_time = datetime.datetime.now() - start_time _end(elapse_time.total_seconds(), args.jobs) + exit(ret) if __name__ == '__main__':