diff --git a/tools/ci/bsp_buildings.py b/tools/ci/bsp_buildings.py index 8ffd2d9849..ab731c5cad 100644 --- a/tools/ci/bsp_buildings.py +++ b/tools/ci/bsp_buildings.py @@ -1,5 +1,6 @@ import os import shutil +import re import multiprocessing @@ -17,6 +18,7 @@ def run_cmd(cmd, output_info=True): print('\033[1;32m' + cmd + '\033[0m') output_str_list = [] + res = 0 if output_info: res = os.system(cmd + " > output.txt 2>&1") @@ -34,7 +36,7 @@ def run_cmd(cmd, output_info=True): return output_str_list, res -def build_bsp(bsp): +def build_bsp(bsp, scons_args=''): """ build bsp. @@ -46,7 +48,7 @@ def build_bsp(bsp): pkgs --list cd {rtt_root} - scons -C bsp/{bsp} -j{nproc} + scons -C bsp/{bsp} -j{nproc} {scons_args} cd {rtt_root}/bsp/{bsp} scons -c > /dev/null @@ -65,7 +67,8 @@ def build_bsp(bsp): nproc = multiprocessing.cpu_count() os.chdir(rtt_root) - __, res = run_cmd(f'scons -C bsp/{bsp} -j{nproc}', output_info=False) + cmd = f'scons -C bsp/{bsp} -j{nproc} {scons_args}' + __, res = run_cmd(cmd, output_info=False) if res != 0: success = False @@ -89,6 +92,16 @@ def append_file(source_file, destination_file): destination.write(line) +def check_scons_args(file_path): + args = [] + with open(file_path, 'r') as file: + for line in file: + match = re.search(r'#\s*scons:\s*(.*)', line) + if match: + args.append(match.group(1).strip()) + return ' '.join(args) + + def build_bsp_attachconfig(bsp, attach_file): """ build bsp with attach config. @@ -111,7 +124,9 @@ def build_bsp_attachconfig(bsp, attach_file): append_file(attach_path, config_file) - res = build_bsp(bsp) + scons_args = check_scons_args(attach_path) + + res = build_bsp(bsp, scons_args) shutil.copyfile(config_bacakup, config_file) os.remove(config_bacakup)