From a1db6c4379c787124d7ee825adbcc76d2069a3c6 Mon Sep 17 00:00:00 2001 From: C47D Date: Fri, 19 Jul 2019 10:01:35 -0500 Subject: [PATCH 01/16] [Draft] Add check to travis to make sure new boards are built, fix #1886 --- tools/travis_new_boards_check.py | 42 ++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 tools/travis_new_boards_check.py diff --git a/tools/travis_new_boards_check.py b/tools/travis_new_boards_check.py new file mode 100644 index 0000000000..b12f6d1274 --- /dev/null +++ b/tools/travis_new_boards_check.py @@ -0,0 +1,42 @@ +#! /usr/bin/env python3 + +import os +import re +import json + +import build_board_info + +# Get boards in json format +boards_info_json = build_board_info.get_board_mapping() +# print(boards_info_json) + +# TODO (Carlos) Find all the boards on the json format + +# We need to know the path of the .travis.yml file +base_path = os.path.dirname(__file__) +travis_path = os.path.abspath(os.path.join(base_path, '..', '.travis.yml')) + +# Loading board list based on TRAVIS_BOARDS env variable on .travis.yml +travis_boards = [] +with open(travis_path, 'r') as travis: + + # Get all lines that contain the substring 'TRAVIS_BOARDS' + for line in travis: + line = travis.readline() + + if 'TRAVIS_BOARDS' in line: + print('TRAVIS_BOARDS found') + print(line) + # TODO (Carlos) Store the line content + + # We've reached the end of the env: section + elif 'addons' in line: + break + else: + pass + + # TODO (Carlos) Getting all the boards on TRAVIS_BOARDS using regex matching + # Tranks sommersoft for the pattern + pattern = '(.+)' + +# TODO (Carlos) Comparing boards listed in TRAVIS_BOARDS and boards got from get_board_mapping From b279d6b335f6968c1cca281ef2ad250e68a688c2 Mon Sep 17 00:00:00 2001 From: C47D Date: Fri, 19 Jul 2019 12:11:16 -0500 Subject: [PATCH 02/16] [travis new boards check] We now have two lists that contain the boards based on board_info and TRAVIS_BOARDS --- tools/travis_new_boards_check.py | 21 ++++++++++----------- 1 file changed, 10 insertions(+), 11 deletions(-) diff --git a/tools/travis_new_boards_check.py b/tools/travis_new_boards_check.py index b12f6d1274..0d6d4ebf92 100644 --- a/tools/travis_new_boards_check.py +++ b/tools/travis_new_boards_check.py @@ -8,9 +8,9 @@ import build_board_info # Get boards in json format boards_info_json = build_board_info.get_board_mapping() -# print(boards_info_json) -# TODO (Carlos) Find all the boards on the json format +# Get all the boards out of the json format +info_boards = boards_info_json.keys() # We need to know the path of the .travis.yml file base_path = os.path.dirname(__file__) @@ -22,12 +22,15 @@ with open(travis_path, 'r') as travis: # Get all lines that contain the substring 'TRAVIS_BOARDS' for line in travis: - line = travis.readline() - if 'TRAVIS_BOARDS' in line: - print('TRAVIS_BOARDS found') - print(line) - # TODO (Carlos) Store the line content + # Get the lines with TRAVIS_BOARDS= in it + if line.find('TRAVIS_BOARDS=') is not -1: + # Store all the boards names into travis_boards + begin_of_names = line.find('TRAVIS_BOARDS=') + len('TRAVIS_BOARDS=') + 1 + end_of_names = line.rfind('"') + boards = line[begin_of_names:end_of_names] + boards = boards.split(' ') + travis_boards.extend(boards) # We've reached the end of the env: section elif 'addons' in line: @@ -35,8 +38,4 @@ with open(travis_path, 'r') as travis: else: pass - # TODO (Carlos) Getting all the boards on TRAVIS_BOARDS using regex matching - # Tranks sommersoft for the pattern - pattern = '(.+)' - # TODO (Carlos) Comparing boards listed in TRAVIS_BOARDS and boards got from get_board_mapping From ae41bb369f23169a79c8b4164f2eebb46b1771fb Mon Sep 17 00:00:00 2001 From: C47D Date: Fri, 19 Jul 2019 12:36:13 -0500 Subject: [PATCH 03/16] [travis new boards check] sort both lists of boards --- tools/travis_new_boards_check.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/tools/travis_new_boards_check.py b/tools/travis_new_boards_check.py index 0d6d4ebf92..389c2a2376 100644 --- a/tools/travis_new_boards_check.py +++ b/tools/travis_new_boards_check.py @@ -11,6 +11,8 @@ boards_info_json = build_board_info.get_board_mapping() # Get all the boards out of the json format info_boards = boards_info_json.keys() +# Turn the dict_keys into a list +info_boards = list(info_boards) # We need to know the path of the .travis.yml file base_path = os.path.dirname(__file__) @@ -38,4 +40,6 @@ with open(travis_path, 'r') as travis: else: pass -# TODO (Carlos) Comparing boards listed in TRAVIS_BOARDS and boards got from get_board_mapping +# All the travis_boards elements must be on info_boards +info_boards.sort() +travis_boards.sort() From fc1594104b4c09ab7576da2f87a98bb76f0fe6d2 Mon Sep 17 00:00:00 2001 From: C47D Date: Fri, 19 Jul 2019 12:59:04 -0500 Subject: [PATCH 04/16] [travis new boards check] Exit with failure if a board in info isn't in travis --- tools/travis_new_boards_check.py | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/tools/travis_new_boards_check.py b/tools/travis_new_boards_check.py index 389c2a2376..568df50ae9 100644 --- a/tools/travis_new_boards_check.py +++ b/tools/travis_new_boards_check.py @@ -1,5 +1,6 @@ #! /usr/bin/env python3 +import sys import os import re import json @@ -43,3 +44,17 @@ with open(travis_path, 'r') as travis: # All the travis_boards elements must be on info_boards info_boards.sort() travis_boards.sort() + +exit_status = 0 + +missing_boards = list(set(info_boards) - set(travis_boards)) + +if len(missing_boards) is not 0: + exit_status = 1 + +if exit_status is 1: + print('Boards missing in TRAVIS_BOARDS:') + for board in missing_boards: + print(board) + +sys.exit(exit_status) From 22c265b170ec57fc78e9b2eb01ed2120e0116e95 Mon Sep 17 00:00:00 2001 From: C47D Date: Fri, 19 Jul 2019 16:54:42 -0500 Subject: [PATCH 05/16] [travis check new boards] Reduce code logic to exit with failure --- tools/travis_new_boards_check.py | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/tools/travis_new_boards_check.py b/tools/travis_new_boards_check.py index 568df50ae9..f4492830d4 100644 --- a/tools/travis_new_boards_check.py +++ b/tools/travis_new_boards_check.py @@ -45,16 +45,10 @@ with open(travis_path, 'r') as travis: info_boards.sort() travis_boards.sort() -exit_status = 0 - missing_boards = list(set(info_boards) - set(travis_boards)) if len(missing_boards) is not 0: - exit_status = 1 - -if exit_status is 1: print('Boards missing in TRAVIS_BOARDS:') for board in missing_boards: print(board) - -sys.exit(exit_status) + sys.exit(1) From 00d91bed32ef55ce543af4da51b3aaf68fca50e9 Mon Sep 17 00:00:00 2001 From: C47D Date: Fri, 19 Jul 2019 17:01:04 -0500 Subject: [PATCH 06/16] [travis check new boards] Add command so Travis runs the travis_new_boards_check.py script --- .travis.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.travis.yml b/.travis.yml index d75b4e7d4a..32511a21d1 100755 --- a/.travis.yml +++ b/.travis.yml @@ -103,6 +103,10 @@ script: - cd tools && python3 -u build_release_files.py - cd .. + # Check if there's any board missing in TRAVIS_BOARDS + - cd tools && python3 -u travis_new_boards_check.py + - cd .. + - echo 'Building unix' && echo 'travis_fold:start:unix' - (! var_search "${TRAVIS_TESTS-}" unix || (make -C ports/unix deplibs -j2 && make -C ports/unix -j2 && make -C ports/unix coverage -j2)) ; S=$? ; echo $S > status ; (exit $S) - echo 'travis_fold:end:unix' && tools/print_status.py status From 06cb075025c70647155e2db7cc3f2d825840d4b6 Mon Sep 17 00:00:00 2001 From: C47D Date: Fri, 19 Jul 2019 18:19:17 -0500 Subject: [PATCH 07/16] [travis check new boards] Move script into the before_script section --- .travis.yml | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/.travis.yml b/.travis.yml index 32511a21d1..528582eae5 100755 --- a/.travis.yml +++ b/.travis.yml @@ -71,6 +71,9 @@ before_script: - function var_search () { case "$1" in *$2*) true;; *) false;; esac; } - sudo dpkg --add-architecture i386 + # Check if there's any board missing in TRAVIS_BOARDS + - cd tools && python3 -u travis_new_boards_check.py + - cd .. - (! var_search "${TRAVIS_SDK-}" arm || (wget https://s3.amazonaws.com/adafruit-circuit-python/gcc-arm-embedded_7-2018q2-1~xenial1_amd64.deb && sudo dpkg -i gcc-arm-embedded*_amd64.deb)) @@ -103,10 +106,6 @@ script: - cd tools && python3 -u build_release_files.py - cd .. - # Check if there's any board missing in TRAVIS_BOARDS - - cd tools && python3 -u travis_new_boards_check.py - - cd .. - - echo 'Building unix' && echo 'travis_fold:start:unix' - (! var_search "${TRAVIS_TESTS-}" unix || (make -C ports/unix deplibs -j2 && make -C ports/unix -j2 && make -C ports/unix coverage -j2)) ; S=$? ; echo $S > status ; (exit $S) - echo 'travis_fold:end:unix' && tools/print_status.py status From d1fecf5025958ac4c2447a3757ab03a0bfdebdbf Mon Sep 17 00:00:00 2001 From: Carlos Date: Sat, 20 Jul 2019 01:08:22 -0500 Subject: [PATCH 08/16] Fix missing module sh and remove unused module re --- .travis.yml | 8 ++++---- tools/travis_new_boards_check.py | 1 - 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/.travis.yml b/.travis.yml index 528582eae5..ce7cba9449 100755 --- a/.travis.yml +++ b/.travis.yml @@ -71,10 +71,6 @@ before_script: - function var_search () { case "$1" in *$2*) true;; *) false;; esac; } - sudo dpkg --add-architecture i386 - # Check if there's any board missing in TRAVIS_BOARDS - - cd tools && python3 -u travis_new_boards_check.py - - cd .. - - (! var_search "${TRAVIS_SDK-}" arm || (wget https://s3.amazonaws.com/adafruit-circuit-python/gcc-arm-embedded_7-2018q2-1~xenial1_amd64.deb && sudo dpkg -i gcc-arm-embedded*_amd64.deb)) # For huzzah builds @@ -89,6 +85,10 @@ before_script: - (! var_search "${TRAVIS_TESTS-}" docs || pip install --user Sphinx sphinx-rtd-theme recommonmark sphinxcontrib-svg2pdfconverter) - (! var_search "${TRAVIS_TESTS-}" translations || pip3 install --user polib) + # Check if there's any board missing in TRAVIS_BOARDS + - cd tools && python3 -u travis_new_boards_check.py + - cd .. + # report some good version numbers to the build - gcc --version - (! var_search "${TRAVIS_SDK-}" arm || arm-none-eabi-gcc --version) diff --git a/tools/travis_new_boards_check.py b/tools/travis_new_boards_check.py index f4492830d4..01751b4b97 100644 --- a/tools/travis_new_boards_check.py +++ b/tools/travis_new_boards_check.py @@ -2,7 +2,6 @@ import sys import os -import re import json import build_board_info From b630e561a7186637965560c4a902b1811c8b90c3 Mon Sep 17 00:00:00 2001 From: sommersoft Date: Sun, 21 Jul 2019 12:13:13 -0500 Subject: [PATCH 09/16] exclude aliased boards from 'get_board_mapping()' --- tools/travis_new_boards_check.py | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/tools/travis_new_boards_check.py b/tools/travis_new_boards_check.py index 01751b4b97..7e8116a1a2 100644 --- a/tools/travis_new_boards_check.py +++ b/tools/travis_new_boards_check.py @@ -10,9 +10,7 @@ import build_board_info boards_info_json = build_board_info.get_board_mapping() # Get all the boards out of the json format -info_boards = boards_info_json.keys() -# Turn the dict_keys into a list -info_boards = list(info_boards) +info_boards = [board for board in boards_info_json.keys() if not boards_info_json[board].get("alias", False)] # We need to know the path of the .travis.yml file base_path = os.path.dirname(__file__) From c316231dd23f333cd8d7be869f8018bd17082fda Mon Sep 17 00:00:00 2001 From: C47D Date: Tue, 23 Jul 2019 13:02:07 -0500 Subject: [PATCH 10/16] [travis check new boards] Do not end test if there are missing boards --- tools/travis_new_boards_check.py | 1 - 1 file changed, 1 deletion(-) diff --git a/tools/travis_new_boards_check.py b/tools/travis_new_boards_check.py index 7e8116a1a2..facfb601db 100644 --- a/tools/travis_new_boards_check.py +++ b/tools/travis_new_boards_check.py @@ -48,4 +48,3 @@ if len(missing_boards) is not 0: print('Boards missing in TRAVIS_BOARDS:') for board in missing_boards: print(board) - sys.exit(1) From 8864cefba6a6b307a2678d4de7540a9db15c03e1 Mon Sep 17 00:00:00 2001 From: C47D Date: Tue, 23 Jul 2019 13:03:29 -0500 Subject: [PATCH 11/16] [travis check new boards] missing_boards as set --- tools/travis_new_boards_check.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tools/travis_new_boards_check.py b/tools/travis_new_boards_check.py index facfb601db..81ccec6754 100644 --- a/tools/travis_new_boards_check.py +++ b/tools/travis_new_boards_check.py @@ -42,9 +42,9 @@ with open(travis_path, 'r') as travis: info_boards.sort() travis_boards.sort() -missing_boards = list(set(info_boards) - set(travis_boards)) +missing_boards = set(info_boards) - set(travis_boards) -if len(missing_boards) is not 0: +if missing_boards: print('Boards missing in TRAVIS_BOARDS:') for board in missing_boards: print(board) From 7e4d7a5373f281c1448b650115ad1a6f79842e23 Mon Sep 17 00:00:00 2001 From: C47D Date: Thu, 25 Jul 2019 16:11:45 -0500 Subject: [PATCH 12/16] [travis check new boards] Fail in case of any missing boards --- tools/travis_new_boards_check.py | 1 + 1 file changed, 1 insertion(+) diff --git a/tools/travis_new_boards_check.py b/tools/travis_new_boards_check.py index 81ccec6754..5ae05aec45 100644 --- a/tools/travis_new_boards_check.py +++ b/tools/travis_new_boards_check.py @@ -48,3 +48,4 @@ if missing_boards: print('Boards missing in TRAVIS_BOARDS:') for board in missing_boards: print(board) + sys.exit(1) From be1fd5e995fcb581cf7e616bc67ef80822209224 Mon Sep 17 00:00:00 2001 From: C47D Date: Thu, 25 Jul 2019 16:27:26 -0500 Subject: [PATCH 13/16] [travis check new boards] Add missing boards to TRAVIS_BOARDS --- .travis.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.travis.yml b/.travis.yml index ce7cba9449..410dcce4c2 100755 --- a/.travis.yml +++ b/.travis.yml @@ -26,6 +26,7 @@ env: - TRAVIS_BOARDS="feather_radiofruit_zigbee gemma_m0 hallowing_m0_express itsybitsy_m0_express itsybitsy_m4_express meowmeow sam32 uchip escornabot_makech pygamer_advance datum_imu" TRAVIS_SDK=arm - TRAVIS_BOARDS="feather_m0_express_crickit feather_m0_rfm69 feather_m0_rfm9x feather_m4_express arduino_zero arduino_mkr1300 arduino_mkrzero pewpew10 kicksat-sprite ugame10 robohatmm1 datum_light" TRAVIS_SDK=arm - TRAVIS_BOARDS="circuitplayground_express_crickit feather_m0_adalogger feather_m0_basic feather_m0_express catwan_usbstick pyportal sparkfun_samd21_mini sparkfun_samd21_dev pybadge pybadge_airlift datum_weather" TRAVIS_SDK=arm + - TRAVIS_BOARDS="trinket_m0_haxpress cp32-m4 feather_m0_supersized datalore_ip_m4" TRAVIS_SDK=arm addons: artifacts: From f8d2776177f56058316f218fab0cb3a7fa672e53 Mon Sep 17 00:00:00 2001 From: Scott Shawcroft Date: Thu, 25 Jul 2019 22:54:14 -0700 Subject: [PATCH 14/16] Extend existing board lists Adding another means a build would be 6 concurrent jobs and make two not fit side by side in the 10 total we have. --- .travis.yml | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/.travis.yml b/.travis.yml index 410dcce4c2..dcf27bff2e 100755 --- a/.travis.yml +++ b/.travis.yml @@ -21,12 +21,11 @@ git: # that SDK is shortest and add it there. In the case of major re-organizations, # just try to make the builds "about equal in run time" env: - - TRAVIS_TESTS="unix docs translations website" TRAVIS_BOARDS="circuitplayground_express mini_sam_m4 grandcentral_m4_express capablerobot_usbhub pygamer pca10056 pca10059 feather_nrf52840_express makerdiary_nrf52840_mdk makerdiary_nrf52840_mdk_usb_dongle particle_boron particle_argon particle_xenon sparkfun_nrf52840_mini electronut_labs_papyr electronut_labs_blip" TRAVIS_SDK=arm:nrf + - TRAVIS_TESTS="unix docs translations website" TRAVIS_BOARDS="trinket_m0_haxpress circuitplayground_express mini_sam_m4 grandcentral_m4_express capablerobot_usbhub pygamer pca10056 pca10059 feather_nrf52840_express makerdiary_nrf52840_mdk makerdiary_nrf52840_mdk_usb_dongle particle_boron particle_argon particle_xenon sparkfun_nrf52840_mini electronut_labs_papyr electronut_labs_blip" TRAVIS_SDK=arm:nrf - TRAVIS_BOARDS="metro_m0_express metro_m4_express metro_m4_airlift_lite pirkey_m0 trellis_m4_express trinket_m0 sparkfun_lumidrive sparkfun_redboard_turbo bast_pro_mini_m0 datum_distance pyruler" TRAVIS_SDK=arm - - TRAVIS_BOARDS="feather_radiofruit_zigbee gemma_m0 hallowing_m0_express itsybitsy_m0_express itsybitsy_m4_express meowmeow sam32 uchip escornabot_makech pygamer_advance datum_imu" TRAVIS_SDK=arm - - TRAVIS_BOARDS="feather_m0_express_crickit feather_m0_rfm69 feather_m0_rfm9x feather_m4_express arduino_zero arduino_mkr1300 arduino_mkrzero pewpew10 kicksat-sprite ugame10 robohatmm1 datum_light" TRAVIS_SDK=arm - - TRAVIS_BOARDS="circuitplayground_express_crickit feather_m0_adalogger feather_m0_basic feather_m0_express catwan_usbstick pyportal sparkfun_samd21_mini sparkfun_samd21_dev pybadge pybadge_airlift datum_weather" TRAVIS_SDK=arm - - TRAVIS_BOARDS="trinket_m0_haxpress cp32-m4 feather_m0_supersized datalore_ip_m4" TRAVIS_SDK=arm + - TRAVIS_BOARDS="cp32-m4 feather_radiofruit_zigbee gemma_m0 hallowing_m0_express itsybitsy_m0_express itsybitsy_m4_express meowmeow sam32 uchip escornabot_makech pygamer_advance datum_imu" TRAVIS_SDK=arm + - TRAVIS_BOARDS="feather_m0_supersized feather_m0_express_crickit feather_m0_rfm69 feather_m0_rfm9x feather_m4_express arduino_zero arduino_mkr1300 arduino_mkrzero pewpew10 kicksat-sprite ugame10 robohatmm1 datum_light" TRAVIS_SDK=arm + - TRAVIS_BOARDS="datalore_ip_m4 circuitplayground_express_crickit feather_m0_adalogger feather_m0_basic feather_m0_express catwan_usbstick pyportal sparkfun_samd21_mini sparkfun_samd21_dev pybadge pybadge_airlift datum_weather" TRAVIS_SDK=arm addons: artifacts: From a87094e01f0f1b92725619a730758936c09dda60 Mon Sep 17 00:00:00 2001 From: Scott Shawcroft Date: Thu, 25 Jul 2019 22:56:46 -0700 Subject: [PATCH 15/16] Turn off GC opt to save space on Trinket Haxpress --- ports/atmel-samd/boards/trinket_m0_haxpress/mpconfigboard.mk | 2 ++ 1 file changed, 2 insertions(+) diff --git a/ports/atmel-samd/boards/trinket_m0_haxpress/mpconfigboard.mk b/ports/atmel-samd/boards/trinket_m0_haxpress/mpconfigboard.mk index b9d36a7418..76c33a333a 100644 --- a/ports/atmel-samd/boards/trinket_m0_haxpress/mpconfigboard.mk +++ b/ports/atmel-samd/boards/trinket_m0_haxpress/mpconfigboard.mk @@ -11,3 +11,5 @@ SPI_FLASH_FILESYSTEM = 1 EXTERNAL_FLASH_DEVICE_COUNT = 1 EXTERNAL_FLASH_DEVICES = W25Q32BV LONGINT_IMPL = MPZ + +SUPEROPT_GC = 0 From c61c874a6d42d2bf620dba3f93aaca2d61aeb9d1 Mon Sep 17 00:00:00 2001 From: Scott Shawcroft Date: Fri, 26 Jul 2019 00:31:41 -0700 Subject: [PATCH 16/16] Reduce feather_m0_supersized build size Make it match feather_m0_express --- ports/atmel-samd/boards/feather_m0_supersized/mpconfigboard.mk | 3 +++ 1 file changed, 3 insertions(+) diff --git a/ports/atmel-samd/boards/feather_m0_supersized/mpconfigboard.mk b/ports/atmel-samd/boards/feather_m0_supersized/mpconfigboard.mk index 33229044b7..e34d069623 100644 --- a/ports/atmel-samd/boards/feather_m0_supersized/mpconfigboard.mk +++ b/ports/atmel-samd/boards/feather_m0_supersized/mpconfigboard.mk @@ -11,3 +11,6 @@ SPI_FLASH_FILESYSTEM = 1 EXTERNAL_FLASH_DEVICE_COUNT = 1 EXTERNAL_FLASH_DEVICES = "S25FL064L" LONGINT_IMPL = MPZ + +CFLAGS_INLINE_LIMIT = 60 +SUPEROPT_GC = 0