Path: blob/master/Tools/scripts/build_peripherals.py
9451 views
#!/usr/bin/env python312# flake8: noqa34"""5script to test build all of our peripheral firmwares6"""78import os9import shutil10import subprocess11import sys12import fnmatch13import board_list1415# get command line arguments16from argparse import ArgumentParser17parser = ArgumentParser(description='build_peripherals')18parser.add_argument("pattern", type=str, default='*', help="board wildcard pattern")19parser.add_argument("--debug", action='store_true', default=False, help="build with debug symbols")20parser.add_argument("--stop", action='store_true', default=False, help="stop on a failed build")21parser.add_argument("--configure-only", action='store_true', default=False, help="only run configure")22parser.add_argument("--noclean", action='store_true', default=False, help="don't run waf clean")23args = parser.parse_args()2425os.environ['PYTHONUNBUFFERED'] = '1'2627failed_boards = set()2829def run_program(cmd_list):30print("Running (%s)" % " ".join(cmd_list))31retcode = subprocess.call(cmd_list)32if retcode != 0:33print("Build failed: %s" % ' '.join(cmd_list))34return False35return True3637def build_board(board):38configure_args = "--board %s --no-submodule-update --Werror" % board39configure_args = configure_args.split()40if args.debug:41print("Building with debug symbols")42configure_args.append("--debug")43if not run_program(["./waf", "configure"] + configure_args):44return False45if args.configure_only:46return True47if not args.noclean and not run_program(["./waf", "clean"]):48return False49if not run_program(["./waf", "AP_Periph"]):50return False51return True5253boards = board_list.BoardList().find_ap_periph_boards()5455for board in boards:56if not fnmatch.fnmatch(board, args.pattern):57continue58print("Building for %s" % board)59if not build_board(board):60failed_boards.add(board)61if args.stop:62break63continue6465if len(failed_boards):66print("Failed boards: %s" % list(failed_boards))67else:68print("No failed builds")69707172