Move build extensions to board directories

- define CIRCUITPY_BUILD_EXTENSIONS to predefined values
- set CIRCUITPY_BUILD_EXTENSIONS in port and board config
- reuse the support matrix "get_settings_from_makefile" to get it
- move the existing port and board specific values
- remove the C3 specific board values because it's not the default
- update build_release_files.py to use get_settings_from_makefile
This commit is contained in:
Neradoc 2022-05-13 11:38:03 +02:00
parent 562cbb11b9
commit d021d9ae4a
30 changed files with 91 additions and 74 deletions

View File

@ -272,6 +272,11 @@ def support_matrix_by_board(use_branded_name=True):
board_modules.append(base[module]['name'])
board_modules.sort()
if "CIRCUITPY_BUILD_EXTENSIONS" in settings:
board_extensions = settings["CIRCUITPY_BUILD_EXTENSIONS"]
else:
raise "Board extensions undefined."
frozen_modules = []
if "FROZEN_MPY_DIRS" in settings:
frozen_modules = frozen_modules_from_dirs(settings["FROZEN_MPY_DIRS"])
@ -279,7 +284,9 @@ def support_matrix_by_board(use_branded_name=True):
frozen_modules.sort()
# generate alias boards too
board_matrix = [(board_name, (board_modules, frozen_modules))]
board_matrix = [(
board_name, (board_modules, frozen_modules, board_extensions)
)]
if entry.name in aliases_by_board:
for alias in aliases_by_board[entry.name]:
if use_branded_name:
@ -287,7 +294,9 @@ def support_matrix_by_board(use_branded_name=True):
alias = aliases_brand_names[alias]
else:
alias = alias.replace("_"," ").title()
board_matrix.append( (alias, (board_modules, frozen_modules)) )
board_matrix.append((
alias, (board_modules, frozen_modules, board_extensions),
))
return board_matrix # this is now a list of (board,modules)

View File

@ -6,6 +6,8 @@ USB_MANUFACTURER = "Arduino"
CHIP_VARIANT = SAMD21G18A
CHIP_FAMILY = samd21
CIRCUITPY_BUILD_EXTENSIONS = BIN_UF2
INTERNAL_FLASH_FILESYSTEM = 1
LONGINT_IMPL = NONE
CIRCUITPY_FULL_BUILD = 0

View File

@ -6,6 +6,8 @@ USB_MANUFACTURER = "Arduino"
CHIP_VARIANT = SAMD21G18A
CHIP_FAMILY = samd21
CIRCUITPY_BUILD_EXTENSIONS = BIN_UF2
INTERNAL_FLASH_FILESYSTEM = 1
LONGINT_IMPL = NONE
CIRCUITPY_FULL_BUILD = 0

View File

@ -6,6 +6,8 @@ USB_MANUFACTURER = "Arduino"
CHIP_VARIANT = SAMD21G18A
CHIP_FAMILY = samd21
CIRCUITPY_BUILD_EXTENSIONS = BIN_UF2
INTERNAL_FLASH_FILESYSTEM = 1
LONGINT_IMPL = NONE
CIRCUITPY_FULL_BUILD = 0

View File

@ -6,6 +6,8 @@ USB_MANUFACTURER = "Arduino"
CHIP_VARIANT = SAMD21G18A
CHIP_FAMILY = samd21
CIRCUITPY_BUILD_EXTENSIONS = BIN_UF2
INTERNAL_FLASH_FILESYSTEM = 1
LONGINT_IMPL = NONE
CIRCUITPY_FULL_BUILD = 0

View File

@ -6,6 +6,8 @@ USB_MANUFACTURER = "Adafruit Industries LLC"
CHIP_VARIANT = SAMD21G18A
CHIP_FAMILY = samd21
CIRCUITPY_BUILD_EXTENSIONS = BIN_UF2
INTERNAL_FLASH_FILESYSTEM = 1
LONGINT_IMPL = NONE
CIRCUITPY_FULL_BUILD = 0

View File

@ -6,6 +6,8 @@ USB_MANUFACTURER = "Adafruit Industries LLC"
CHIP_VARIANT = SAMD21G18A
CHIP_FAMILY = samd21
CIRCUITPY_BUILD_EXTENSIONS = BIN_UF2
INTERNAL_FLASH_FILESYSTEM = 1
LONGINT_IMPL = NONE
CIRCUITPY_FULL_BUILD = 0

View File

@ -6,6 +6,8 @@ USB_MANUFACTURER = "Adafruit Industries LLC"
CHIP_VARIANT = SAMD21G18A
CHIP_FAMILY = samd21
CIRCUITPY_BUILD_EXTENSIONS = BIN_UF2
INTERNAL_FLASH_FILESYSTEM = 1
LONGINT_IMPL = NONE
CIRCUITPY_FULL_BUILD = 0

View File

@ -6,6 +6,8 @@ USB_MANUFACTURER = "Adafruit Industries LLC"
CHIP_VARIANT = SAMD21G18A
CHIP_FAMILY = samd21
CIRCUITPY_BUILD_EXTENSIONS = BIN_UF2
INTERNAL_FLASH_FILESYSTEM = 1
LONGINT_IMPL = NONE
CIRCUITPY_FULL_BUILD = 0

View File

@ -6,6 +6,8 @@ USB_MANUFACTURER = "Itaca Innovation"
CHIP_VARIANT = SAMD21E18A
CHIP_FAMILY = samd21
CIRCUITPY_BUILD_EXTENSIONS = BIN_UF2
INTERNAL_FLASH_FILESYSTEM = 1
LONGINT_IMPL = NONE
CIRCUITPY_FULL_BUILD = 0

View File

@ -133,3 +133,5 @@ CIRCUITPY_RGBMATRIX ?= $(CIRCUITPY_FRAMEBUFFERIO)
endif # same51
######################################################################
CIRCUITPY_BUILD_EXTENSIONS ?= BIN_UF2

View File

@ -4,3 +4,5 @@ USB_PRODUCT = "Zero"
USB_MANUFACTURER = "Raspberry Pi"
CHIP_VARIANT = "bcm2835"
CIRCUITPY_BUILD_EXTENSIONS = KERNEL_IMG

View File

@ -4,3 +4,5 @@ USB_PRODUCT = "Zero W"
USB_MANUFACTURER = "Raspberry Pi"
CHIP_VARIANT = "bcm2835"
CIRCUITPY_BUILD_EXTENSIONS = KERNEL_IMG

View File

@ -24,3 +24,5 @@ INTERNAL_FLASH_FILESYSTEM = 1
USB_NUM_ENDPOINT_PAIRS = 8
USB_HIGHSPEED = 1
CIRCUITPY_BUILD_EXTENSIONS ?= KERNEL8_IMG

View File

@ -25,3 +25,5 @@ CIRCUITPY_TOUCHIO = 0
CIRCUITPY_USB_HID = 0
CIRCUITPY_USB_MIDI = 0
INTERNAL_LIBM = 1
CIRCUITPY_BUILD_EXTENSIONS ?= SPK

View File

@ -40,6 +40,7 @@ CIRCUITPY_PARALLELDISPLAY = 0
# Protomatter needs to support ESP32.
CIRCUITPY_RGBMATRIX = 0
CIRCUITPY_USB = 0
CIRCUITPY_BUILD_EXTENSIONS ?= BIN
else ifeq ($(IDF_TARGET),esp32c3)
CIRCUITPY_AESIO = 0
@ -57,6 +58,7 @@ CIRCUITPY_ROTARYIO = 0
CIRCUITPY_TOUCHIO ?= 1
CIRCUITPY_TOUCHIO_USE_NATIVE = 0
CIRCUITPY_USB = 0
CIRCUITPY_BUILD_EXTENSIONS ?= BIN
else ifeq ($(IDF_TARGET),esp32s3)
CIRCUITPY_BLEIO = 1
@ -70,6 +72,8 @@ CIRCUITPY_BLEIO = 0
CIRCUITPY_BLEIO_HCI = 0
endif
CIRCUITPY_BUILD_EXTENSIONS ?= BIN_UF2
# From ESP32-S2/S3 Technical Reference Manual:
#
# Endpoint number 0 always present (bi-directional, consisting of EP0 IN and EP0 OUT)

View File

@ -29,3 +29,5 @@ CIRCUITPY_SDCARDIO = 0
# Enable USB support
CIRCUITPY_USB_HID = 1
CIRCUITPY_USB_MIDI = 1
CIRCUITPY_BUILD_EXTENSIONS ?= DFU

View File

@ -21,3 +21,5 @@ CIRCUITPY_PULSEIO = 0
CIRCUITPY_ROTARYIO = 0
CIRCUITPY_USB_MIDI = 1
LONGINT_IMPL = MPZ
CIRCUITPY_BUILD_EXTENSIONS ?= HEX_UF2

View File

@ -5,6 +5,8 @@ USB_MANUFACTURER = "Electronut Labs"
MCU_CHIP = nrf52840
CIRCUITPY_BUILD_EXTENSIONS = HEX
INTERNAL_FLASH_FILESYSTEM = 1
CIRCUITPY_AUDIOIO = 0
CIRCUITPY_DISPLAYIO = 1

View File

@ -5,5 +5,7 @@ USB_MANUFACTURER = "makerdiary"
MCU_CHIP = nrf52840
CIRCUITPY_BUILD_EXTENSIONS = HEX
QSPI_FLASH_FILESYSTEM = 1
EXTERNAL_FLASH_DEVICES = "MX25R6435F"

View File

@ -5,4 +5,6 @@ USB_MANUFACTURER = "makerdiary"
MCU_CHIP = nrf52840
CIRCUITPY_BUILD_EXTENSIONS = HEX_UF2
INTERNAL_FLASH_FILESYSTEM = 1

View File

@ -3,6 +3,8 @@ CIRCUITPY_CREATION_ID = 0x80D8
MCU_CHIP = nrf52833
CIRCUITPY_BUILD_EXTENSIONS = COMBINED_HEX
INTERNAL_FLASH_FILESYSTEM = 1
# USB pins aren't used.

View File

@ -5,5 +5,7 @@ USB_MANUFACTURER = "Nordic Semiconductor"
MCU_CHIP = nrf52840
CIRCUITPY_BUILD_EXTENSIONS = BIN_UF2
QSPI_FLASH_FILESYSTEM = 1
EXTERNAL_FLASH_DEVICES = "MX25R6435F"

View File

@ -5,4 +5,6 @@ USB_MANUFACTURER = "Nordic Semiconductor"
MCU_CHIP = nrf52840
CIRCUITPY_BUILD_EXTENSIONS = BIN_UF2
INTERNAL_FLASH_FILESYSTEM = 1

View File

@ -4,6 +4,8 @@ LD_TEMPLATE_FILE = boards/common.template.ld
INTERNAL_LIBM = 1
CIRCUITPY_BUILD_EXTENSIONS ?= UF2
# Number of USB endpoint pairs.
USB_NUM_ENDPOINT_PAIRS = 8

View File

@ -1,5 +1,7 @@
# All raspberrypi ports have longints.
LONGINT_IMPL = MPZ
CIRCUITPY_BUILD_EXTENSIONS ?= UF2
CIRCUITPY_OPTIMIZE_PROPERTY_FLASH_SIZE ?= 1
CIRCUITPY_OPTIMIZE_PROPERTY_FLASH_SIZE ?= 1
CIRCUITPY_ALARM ?= 1

View File

@ -13,6 +13,8 @@ MCU_SERIES = F4
MCU_VARIANT = STM32F401xE
MCU_PACKAGE = LQFP64
CIRCUITPY_BUILD_EXTENSIONS = UF2
OPTIMIZATION_FLAGS = -Os
LD_COMMON = boards/common_default.ld

View File

@ -1,6 +1,8 @@
LONGINT_IMPL ?= MPZ
INTERNAL_LIBM ?= 1
CIRCUITPY_BUILD_EXTENSIONS ?= BIN
ifeq ($(MCU_VARIANT),$(filter $(MCU_VARIANT),STM32F405xx STM32F407xx))
CIRCUITPY_ALARM = 1
CIRCUITPY_CANIO = 1

View File

@ -23,69 +23,18 @@ from shared_bindings_matrix import (
support_matrix_by_board,
)
BIN = ("bin",)
UF2 = ("uf2",)
BIN_UF2 = ("bin", "uf2")
HEX = ("hex",)
HEX_UF2 = ("hex", "uf2")
SPK = ("spk",)
DFU = ("dfu",)
BIN_DFU = ("bin", "dfu")
COMBINED_HEX = ("combined.hex",)
KERNEL8_IMG = ("disk.img.zip", "kernel8.img")
KERNEL_IMG = ("disk.img.zip", "kernel.img")
# Default extensions
extension_by_port = {
"atmel-samd": UF2,
"broadcom": KERNEL8_IMG,
"cxd56": SPK,
"espressif": BIN_UF2,
"litex": DFU,
"mimxrt10xx": HEX_UF2,
"nrf": UF2,
"raspberrypi": UF2,
"stm": BIN,
}
# Per board overrides
extension_by_board = {
# samd
"arduino_mkr1300": BIN_UF2,
"arduino_mkrzero": BIN_UF2,
"arduino_nano_33_iot": BIN_UF2,
"arduino_zero": BIN_UF2,
"feather_m0_adalogger": BIN_UF2,
"feather_m0_basic": BIN_UF2,
"feather_m0_rfm69": BIN_UF2,
"feather_m0_rfm9x": BIN_UF2,
"uchip": BIN_UF2,
# nRF52840 dev kits that may not have UF2 bootloaders,
"makerdiary_nrf52840_mdk": HEX,
"makerdiary_nrf52840_mdk_usb_dongle": HEX_UF2,
"pca10056": BIN_UF2,
"pca10059": BIN_UF2,
"electronut_labs_blip": HEX,
"microbit_v2": COMBINED_HEX,
# stm32
"meowbit_v121": UF2,
"sparkfun_stm32_thing_plus": BIN_UF2,
"swan_r5": BIN_UF2,
# esp32
"adafruit_feather_esp32_v2": BIN,
# esp32c3
"adafruit_qtpy_esp32c3": BIN,
"ai_thinker_esp32-c3s": BIN,
"ai_thinker_esp32-c3s-2m": BIN,
"beetle-esp32-c3": BIN,
"espressif_esp32c3_devkitm_1_n4": BIN,
"lilygo_ttgo_t-01c3": BIN,
"lolin_c3_mini": BIN,
"microdev_micro_c3": BIN,
"lilygo_ttgo_t-oi-plus": BIN,
# broadcom
"raspberrypi_zero": KERNEL_IMG,
"raspberrypi_zero_w": KERNEL_IMG,
extensions_by_macro = {
"BIN": ("bin",),
"UF2": ("uf2",),
"BIN_UF2": ("bin", "uf2"),
"HEX": ("hex",),
"HEX_UF2": ("hex", "uf2"),
"SPK": ("spk",),
"DFU": ("dfu",),
"BIN_DFU": ("bin", "dfu"),
"COMBINED_HEX": ("combined.hex",),
"KERNEL8_IMG": ("disk.img.zip", "kernel8.img"),
"KERNEL_IMG": ("disk.img.zip", "kernel.img"),
}
language_allow_list = set(
@ -129,19 +78,15 @@ def get_board_mapping():
if board_path.is_dir():
board_files = os.listdir(board_path.path)
board_id = board_path.name
extensions = extension_by_port[port]
extensions = extension_by_board.get(board_path.name, extensions)
aliases = aliases_by_board.get(board_path.name, [])
boards[board_id] = {
"port": port,
"extensions": extensions,
"download_count": 0,
"aliases": aliases,
}
for alias in aliases:
boards[alias] = {
"port": port,
"extensions": extensions,
"download_count": 0,
"alias": True,
"aliases": [],
@ -310,20 +255,21 @@ def generate_download_info():
board_files = os.listdir(board_path.path)
board_id = board_path.name
board_info = board_mapping[board_id]
for alias in [board_id] + board_info["aliases"]:
alias_info = board_mapping[alias]
modules_list = support_matrix[alias][0]
frozen_libraries = [frozen[0] for frozen in support_matrix[alias][1]]
extensions = support_matrix[alias][2]
if alias not in current_info:
changes["new_boards"].append(alias)
current_info[alias] = {"downloads": 0, "versions": []}
new_version = {
"stable": new_stable,
"version": new_tag,
"modules": support_matrix[alias][0],
"languages": languages,
"extensions": board_info["extensions"],
"frozen_libraries": [frozen[0] for frozen in support_matrix[alias][1]],
"extensions": extensions,
"frozen_libraries": frozen_libraries,
}
current_info[alias]["downloads"] = alias_info["download_count"]
current_info[alias]["versions"].append(new_version)

View File

@ -12,6 +12,9 @@ import shutil
import build_board_info as build_info
import time
sys.path.append("../docs")
from shared_bindings_matrix import get_settings_from_makefile
for port in build_info.SUPPORTED_PORTS:
result = subprocess.run("rm -rf ../ports/{port}/build*".format(port=port), shell=True)
@ -39,6 +42,7 @@ for board in build_boards:
bin_directory = "../bin/{}/".format(board)
os.makedirs(bin_directory, exist_ok=True)
board_info = all_boards[board]
board_settings = get_settings_from_makefile("../ports/" + board_info["port"], board)
for language in languages:
bin_directory = "../bin/{board}/{language}".format(board=board, language=language)
@ -82,8 +86,10 @@ for board in build_boards:
success = "\033[31mfailed\033[0m"
other_output = ""
extensions_id = board_settings["CIRCUITPY_BUILD_EXTENSIONS"]
extensions = build_info.extensions_by_macro[extensions_id]
for extension in board_info["extensions"]:
for extension in extensions:
temp_filename = "../ports/{port}/{build}/firmware.{extension}".format(
port=board_info["port"], build=build_dir, extension=extension
)