Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
Ardupilot
GitHub Repository: Ardupilot/ardupilot
Path: blob/master/Tools/scripts/build_peripherals.py
9451 views
1
#!/usr/bin/env python3
2
3
# flake8: noqa
4
5
"""
6
script to test build all of our peripheral firmwares
7
"""
8
9
import os
10
import shutil
11
import subprocess
12
import sys
13
import fnmatch
14
import board_list
15
16
# get command line arguments
17
from argparse import ArgumentParser
18
parser = ArgumentParser(description='build_peripherals')
19
parser.add_argument("pattern", type=str, default='*', help="board wildcard pattern")
20
parser.add_argument("--debug", action='store_true', default=False, help="build with debug symbols")
21
parser.add_argument("--stop", action='store_true', default=False, help="stop on a failed build")
22
parser.add_argument("--configure-only", action='store_true', default=False, help="only run configure")
23
parser.add_argument("--noclean", action='store_true', default=False, help="don't run waf clean")
24
args = parser.parse_args()
25
26
os.environ['PYTHONUNBUFFERED'] = '1'
27
28
failed_boards = set()
29
30
def run_program(cmd_list):
31
print("Running (%s)" % " ".join(cmd_list))
32
retcode = subprocess.call(cmd_list)
33
if retcode != 0:
34
print("Build failed: %s" % ' '.join(cmd_list))
35
return False
36
return True
37
38
def build_board(board):
39
configure_args = "--board %s --no-submodule-update --Werror" % board
40
configure_args = configure_args.split()
41
if args.debug:
42
print("Building with debug symbols")
43
configure_args.append("--debug")
44
if not run_program(["./waf", "configure"] + configure_args):
45
return False
46
if args.configure_only:
47
return True
48
if not args.noclean and not run_program(["./waf", "clean"]):
49
return False
50
if not run_program(["./waf", "AP_Periph"]):
51
return False
52
return True
53
54
boards = board_list.BoardList().find_ap_periph_boards()
55
56
for board in boards:
57
if not fnmatch.fnmatch(board, args.pattern):
58
continue
59
print("Building for %s" % board)
60
if not build_board(board):
61
failed_boards.add(board)
62
if args.stop:
63
break
64
continue
65
66
if len(failed_boards):
67
print("Failed boards: %s" % list(failed_boards))
68
else:
69
print("No failed builds")
70
71
72