diff options
| author | Ha Thach <[email protected]> | 2020-03-10 14:33:26 +0700 |
|---|---|---|
| committer | GitHub <[email protected]> | 2020-03-10 14:33:26 +0700 |
| commit | 41d9ab5056c63dc0ecf4b60d55a5f653b561a0c5 (patch) | |
| tree | 1427e6e4bc21eec52ca591665ba3a73d4a7d93e4 /tools | |
| parent | cddbc86dc9403b26b9dda7f0cf141a593e4e89ab (diff) | |
| parent | 9a0c02236e1647bbbeaf3284ab9ba4da0caf56f1 (diff) | |
Merge pull request #295 from hathach/develop
add webserver into ci build
Diffstat (limited to 'tools')
| -rw-r--r-- | tools/build_all.py | 79 | ||||
| -rw-r--r-- | tools/build_success.sh | 10 |
2 files changed, 58 insertions, 31 deletions
diff --git a/tools/build_all.py b/tools/build_all.py index 97294a9a3..4f3e28747 100644 --- a/tools/build_all.py +++ b/tools/build_all.py @@ -1,18 +1,18 @@ import os -import shutil +import glob import sys import subprocess import time success_count = 0 fail_count = 0 +skip_count = 0 exit_status = 0 total_time = time.monotonic() +# 1st Argument is Example, build all examples if not existed all_examples = [] - -# build all example if input not existed if len(sys.argv) > 1: all_examples.append(sys.argv[1]) else: @@ -22,11 +22,17 @@ else: # TODO update freeRTOS example to work with all boards (only nrf52840 now) all_examples.remove("cdc_msc_hid_freertos") +all_examples.sort() +# 2nd Argument is Board, build all boards if not existed all_boards = [] -for entry in os.scandir("hw/bsp"): - if entry.is_dir(): - all_boards.append(entry.name) +if len(sys.argv) > 2: + all_boards.append(sys.argv[2]) +else: + for entry in os.scandir("hw/bsp"): + if entry.is_dir(): + all_boards.append(entry.name) +all_boards.sort() def build_example(example, board): @@ -35,29 +41,60 @@ def build_example(example, board): return subprocess.run("make -j 4 -C examples/device/{} BOARD={} all".format(example, board), shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT) +def build_size(example, board): + elf_file = 'examples/device/{}/_build/build-{}/{}-firmware.elf'.format(example, board, board) + size_output = subprocess.run('size {}'.format(elf_file), shell=True, stdout=subprocess.PIPE).stdout.decode("utf-8") + size_list = size_output.split('\n')[1].split('\t') + flash_size = int(size_list[0]) + sram_size = int(size_list[1]) + int(size_list[2]) + return (flash_size, sram_size) + +def skip_example(example, board): + ex_dir = 'examples/device/' + example + board_mk = 'hw/bsp/{}/board.mk'.format(board) + for skip_file in glob.iglob(ex_dir + '/.skip.MCU_*'): + mcu_cflag = '-DCFG_TUSB_MCU=OPT_' + os.path.basename(skip_file).split('.')[2] + with open(board_mk) as mk: + if mcu_cflag in mk.read(): + return 1 + + return 0 -build_format = '| {:30} | {:30} | {:9} ' -build_separator = '-' * 87 +build_format = '| {:20} | {:30} | {:9} | {:5} | {:6} | {:6} |' +build_separator = '-' * 95 print(build_separator) -print((build_format + '| {:5} |').format('Example', 'Board', 'Result', 'Time')) +print(build_format.format('Example', 'Board', 'Result', 'Time', 'Flash', 'SRAM')) + for example in all_examples: print(build_separator) for board in all_boards: start_time = time.monotonic() - build_result = build_example(example, board) - build_duration = time.monotonic() - start_time - if build_result.returncode == 0: - success = "\033[32msucceeded\033[0m" - success_count += 1 + flash_size = "-" + sram_size = "-" + + # Check if board is skipped + if skip_example(example, board): + success = "\033[33mskipped\033[0m " + skip_count += 1 + print(build_format.format(example, board, success, '-', flash_size, sram_size)) else: - exit_status = build_result.returncode - success = "\033[31mfailed\033[0m " - fail_count += 1 + build_result = build_example(example, board) + + if build_result.returncode == 0: + success = "\033[32msucceeded\033[0m" + success_count += 1 + (flash_size, sram_size) = build_size(example, board) + else: + exit_status = build_result.returncode + success = "\033[31mfailed\033[0m " + fail_count += 1 + + build_duration = time.monotonic() - start_time + print(build_format.format(example, board, success, "{:.2f}".format(build_duration), flash_size, sram_size)) - print((build_format + '| {:.2f}s |').format(example, board, success, build_duration)) - if build_result.returncode != 0: - print(build_result.stdout.decode("utf-8")) + if build_result.returncode != 0: + print(build_result.stdout.decode("utf-8")) # FreeRTOS example # example = 'cdc_msc_hid_freertos' @@ -66,7 +103,7 @@ for example in all_examples: total_time = time.monotonic() - total_time print(build_separator) -print("Build Sumamary: {} \033[32msucceeded\033[0m, {} \033[31mfailed\033[0m and took {:.2f}s".format(success_count, fail_count, total_time)) +print("Build Sumamary: {} \033[32msucceeded\033[0m, {} \033[31mfailed\033[0m, {} \033[33mskipped\033[0m and took {:.2f}s".format(success_count, fail_count, skip_count, total_time)) print(build_separator) sys.exit(exit_status) diff --git a/tools/build_success.sh b/tools/build_success.sh deleted file mode 100644 index df725bdce..000000000 --- a/tools/build_success.sh +++ /dev/null @@ -1,10 +0,0 @@ -#!/usr/bin/env bash - -# Trigger mynewt-tinyusb-example repo each push -curl -s -X POST \ - -H "Content-Type: application/json" \ - -H "Accept: application/json" \ - -H "Travis-API-Version: 3" \ - -H "Authorization: token $TRAVIS_TOKEN" \ - -d '{ "request": { "branch":"master" }}' \ - https://api.travis-ci.com/repo/hathach%2Fmynewt-tinyusb-example/requests
\ No newline at end of file |
