Skip to content

Commit b84e2a8

Browse files
committed
clean up ci build script
1 parent 27c462a commit b84e2a8

File tree

1 file changed

+21
-14
lines changed

1 file changed

+21
-14
lines changed

tools/build_all.py

Lines changed: 21 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -2,19 +2,24 @@
22
import glob
33
import sys
44
import subprocess
5+
from subprocess import Popen, PIPE
56
import time
67

8+
SUCCEEDED = "\033[32msucceeded\033[0m"
9+
FAILED = "\033[31mfailed\033[0m"
10+
SKIPPED = "\033[33mskipped\033[0m"
11+
WARNING = "\033[31mwarnings\033[0m"
12+
713
all_warnings = False
814
exit_status = 0
915
success_count = 0
1016
fail_count = 0
1117
skip_count = 0
1218

13-
build_format = '| {:20} | {:35} | {:9} | {:6} |'
19+
build_format = '| {:20} | {:35} | {:18} | {:6} |'
1420
build_separator = '-' * 83
1521

1622
default_boards = [ 'cluenrf52840', 'cplaynrf52840', 'feather52832', 'feather52840', 'feather52840sense', 'itsybitsy52840' ]
17-
1823
build_boards = []
1924

2025
# build all variants if input not existed
@@ -23,6 +28,9 @@
2328
else:
2429
build_boards = default_boards
2530

31+
all_examples = list(glob.iglob('libraries/**/*.ino', recursive=True))
32+
all_examples.sort()
33+
2634
def errorOutputFilter(line):
2735
if len(line) == 0:
2836
return False
@@ -39,29 +47,29 @@ def build_examples(variant):
3947
print(build_separator)
4048
print('| {:^79} |'.format('Board ' + variant))
4149
print(build_separator)
42-
print(build_format.format('Library', 'Example', 'Result', 'Time'))
50+
print(build_format.format('Library', 'Example', '\033[39mResult\033[0m', 'Time'))
4351
print(build_separator)
4452

4553
fqbn = "adafruit:nrf52:{}:softdevice={},debug=l0".format(variant, 's140v6' if variant != 'feather52832' else 's132v6')
4654

47-
for sketch in glob.iglob('libraries/**/*.ino', recursive=True):
55+
for sketch in all_examples:
4856
start_time = time.monotonic()
4957

5058
# Skip if contains: ".board.test.skip" or ".all.test.skip"
5159
# Skip if not contains: ".board.test.only" for a specific board
5260
sketchdir = os.path.dirname(sketch)
5361
if os.path.exists(sketchdir + '/.all.test.skip') or os.path.exists(sketchdir + '/.' + variant + '.test.skip'):
54-
success = "\033[33mskipped\033[0m "
62+
success = SKIPPED
5563
elif glob.glob(sketchdir+"/.*.test.only") and not os.path.exists(sketchdir + '/.' + variant + '.test.only'):
56-
success = "\033[33mskipped\033[0m "
64+
success = SKIPPED
5765
else:
5866
# TODO - preferably, would have STDERR show up in **both** STDOUT and STDERR.
5967
# preferably, would use Python logging handler to get both distinct outputs and one merged output
6068
# for now, split STDERR when building with all warnings enabled, so can detect warning/error output.
6169
if all_warnings:
62-
build_result = subprocess.run("arduino-cli compile --warnings all --fqbn {} {}".format(fqbn, sketch), shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
70+
build_result = subprocess.run("arduino-cli compile --warnings all --fqbn {} {}".format(fqbn, sketch), shell=True, stdout=PIPE, stderr=PIPE)
6371
else:
64-
build_result = subprocess.run("arduino-cli compile --warnings default --fqbn {} {}".format(fqbn, sketch), shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
72+
build_result = subprocess.run("arduino-cli compile --warnings default --fqbn {} {}".format(fqbn, sketch), shell=True, stdout=PIPE, stderr=PIPE)
6573

6674
# get stderr into a form where len(warningLines) indicates a true warning was output to stderr
6775
warningLines = [];
@@ -71,21 +79,21 @@ def build_examples(variant):
7179

7280
if build_result.returncode != 0:
7381
exit_status = build_result.returncode
74-
success = "\033[31mfailed\033[0m "
82+
success = FAILED
7583
fail_count += 1
7684
elif len(warningLines) != 0:
7785
exit_status = -1
78-
success = "\033[31mwarnings\033[0m "
86+
success = WARNING
7987
fail_count += 1
8088
else:
81-
success = "\033[32msucceeded\033[0m"
89+
success = SUCCEEDED
8290
success_count += 1
8391

8492
build_duration = time.monotonic() - start_time
8593

8694
print(build_format.format(sketch.split(os.path.sep)[1], os.path.basename(sketch), success, '{:5.2f}s'.format(build_duration)))
8795

88-
if success != "\033[33mskipped\033[0m ":
96+
if success != SKIPPED:
8997
if build_result.returncode != 0:
9098
print(build_result.stdout.decode("utf-8"))
9199
if (build_result.stderr):
@@ -96,15 +104,14 @@ def build_examples(variant):
96104
else:
97105
skip_count += 1
98106

99-
100107
build_time = time.monotonic()
101108

102109
for board in build_boards:
103110
build_examples(board)
104111

105112
print(build_separator)
106113
build_time = time.monotonic() - build_time
107-
print("Build Summary: {} \033[32msucceeded\033[0m, {} \033[31mfailed\033[0m, {} \033[33mskipped\033[0m and took {:.2f}s".format(success_count, fail_count, skip_count, build_time))
114+
print("Build Summary: {} {}, {} {}, {} {} and took {:.2f}s".format(success_count, SUCCEEDED, fail_count, FAILED, skip_count, SKIPPED, build_time))
108115
print(build_separator)
109116

110117
sys.exit(exit_status)

0 commit comments

Comments
 (0)