105 lines
3.6 KiB
YAML
105 lines
3.6 KiB
YAML
name: Custom board build
|
|
|
|
on:
|
|
workflow_dispatch:
|
|
inputs:
|
|
board:
|
|
description: 'Board: Found in ports/*/boards/[board_id]'
|
|
required: true
|
|
type: string
|
|
version:
|
|
description: 'Version: Can be a tag or a commit (>=8.1.0)'
|
|
required: false
|
|
default: latest
|
|
type: string
|
|
language:
|
|
description: 'Language: Found in locale/[language].po'
|
|
required: false
|
|
default: en_US
|
|
type: string
|
|
flags:
|
|
description: 'Flags: Build flags (e.g. CIRCUITPY_WIFI=1)'
|
|
required: false
|
|
type: string
|
|
debug:
|
|
description: 'Make a debug build'
|
|
required: false
|
|
default: false
|
|
type: boolean
|
|
|
|
run-name: ${{ inputs.board }}-${{ inputs.language }}-${{ inputs.version }}${{ inputs.flags != '' && '-custom' || '' }}${{ inputs.debug && '-debug' || '' }}
|
|
|
|
jobs:
|
|
build:
|
|
runs-on: ubuntu-22.04
|
|
env:
|
|
PLATFORM_atmel-samd: arm
|
|
PLATFORM_broadcom: aarch
|
|
PLATFORM_cxd56: arm
|
|
PLATFORM_espressif: esp
|
|
PLATFORM_litex: riscv
|
|
PLATFORM_mimxrt10xx: arm
|
|
PLATFORM_nrf: arm
|
|
PLATFORM_raspberrypi: arm
|
|
PLATFORM_stm: arm
|
|
steps:
|
|
- name: Set up repository
|
|
run: |
|
|
git clone --filter=tree:0 https://github.com/adafruit/circuitpython.git $GITHUB_WORKSPACE
|
|
git checkout ${{ inputs.version == 'latest' && 'HEAD' || inputs.version }}
|
|
- name: Set up identifier
|
|
if: inputs.debug || inputs.flags != ''
|
|
run: |
|
|
> custom-build && git add custom-build
|
|
- name: Get port
|
|
id: get-port
|
|
run: |
|
|
PORT=$(find ports/*/boards/ -type d -name ${{ inputs.board }} | sed 's/^ports\///g;s/\/boards.*//g')
|
|
if [ -z $PORT ]; then (exit 1); else echo >> $GITHUB_OUTPUT "port=$PORT"; fi
|
|
- name: Port to platform
|
|
run: echo >> $GITHUB_ENV "PLATFORM=${{ env[format('PLATFORM_{0}', steps.get-port.outputs.port)] }}"
|
|
- name: Set up python
|
|
uses: actions/setup-python@v4
|
|
with:
|
|
python-version: 3.x
|
|
- name: Set up port
|
|
if: env.PLATFORM == 'esp'
|
|
uses: ./.github/actions/deps/ports/espressif
|
|
- name: Set up submodules
|
|
id: set-up-submodules
|
|
uses: ./.github/actions/deps/submodules
|
|
with:
|
|
action: cache
|
|
target: ${{ inputs.board }}
|
|
- name: Set up external
|
|
uses: ./.github/actions/deps/external
|
|
with:
|
|
action: cache
|
|
platform: ${{ env.PLATFORM }}
|
|
- name: Set up mpy-cross
|
|
if: steps.set-up-submodules.outputs.frozen == 'True'
|
|
uses: ./.github/actions/mpy_cross
|
|
with:
|
|
download: false
|
|
- name: Versions
|
|
run: |
|
|
tools/describe
|
|
gcc --version
|
|
python3 --version
|
|
cmake --version || true
|
|
ninja --version || true
|
|
aarch64-none-elf-gcc --version || true
|
|
arm-none-eabi-gcc --version || true
|
|
xtensa-esp32-elf-gcc --version || true
|
|
riscv32-esp-elf-gcc --version || true
|
|
riscv64-unknown-elf-gcc --version || true
|
|
mkfs.fat --version || true
|
|
- name: Build board
|
|
run: make -j2 ${{ inputs.flags }} BOARD=${{ inputs.board }} DEBUG=${{ inputs.debug && '1' || '0' }} TRANSLATION=${{ inputs.language }}
|
|
working-directory: ports/${{ steps.get-port.outputs.port }}
|
|
- name: Upload artifact
|
|
uses: actions/upload-artifact@v3
|
|
with:
|
|
name: ${{ inputs.board }}-${{ inputs.language }}-${{ inputs.version }}${{ inputs.flags != '' && '-custom' || '' }}${{ inputs.debug && '-debug' || '' }}
|
|
path: ports/${{ steps.get-port.outputs.port }}/build-${{ inputs.board }}/firmware.*
|