Add host OS detection quirk. #227
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Build CMake | |
on: | |
workflow_dispatch: | |
push: | |
paths: | |
- 'src/**' | |
- 'examples/**' | |
- 'lib/**' | |
- 'hw/**' | |
- 'test/hil/**' | |
- 'tools/get_deps.py' | |
- '.github/workflows/build_cmake.yml' | |
pull_request: | |
branches: [ master ] | |
paths: | |
- 'src/**' | |
- 'examples/**' | |
- 'lib/**' | |
- 'hw/**' | |
- 'test/hil/**' | |
- 'tools/get_deps.py' | |
- '.github/workflows/build_cmake.yml' | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }} | |
cancel-in-progress: true | |
jobs: | |
# --------------------------------------- | |
# Build ARM with GCC | |
# --------------------------------------- | |
arm-gcc: | |
runs-on: ubuntu-latest | |
strategy: | |
fail-fast: false | |
matrix: | |
family: | |
# Alphabetical order | |
- 'broadcom_32bit' | |
- 'imxrt' | |
- 'kinetis_k kinetis_kl kinetis_k32l2' | |
- 'lpc11 lpc13 lpc15' | |
- 'lpc17 lpc18 lpc40 lpc43' | |
- 'lpc51 lpc54 lpc55' | |
- 'mcx' | |
- 'msp432e4' | |
- 'mm32' | |
- 'nrf' | |
- 'ra' | |
- 'rp2040' | |
- 'samd11 samd21 saml2x samd5x_e5x samg' | |
- 'stm32f0' | |
- 'stm32f1' | |
- 'stm32f2' | |
- 'stm32f3' | |
- 'stm32f4' | |
- 'stm32f7' | |
- 'stm32g0' | |
- 'stm32g4' | |
- 'stm32h5' | |
- 'stm32h7' | |
- 'stm32l4' | |
- 'stm32u5' | |
- 'stm32wb' | |
- 'tm4c' | |
- 'xmc4000' | |
steps: | |
- name: Setup Python | |
uses: actions/setup-python@v5 | |
with: | |
python-version: '3.x' | |
- name: Install ARM GCC | |
uses: carlosperate/arm-none-eabi-gcc-action@v1 | |
with: | |
release: '12.3.Rel1' | |
- name: Checkout TinyUSB | |
uses: actions/checkout@v4 | |
- name: Checkout pico-sdk for rp2040 | |
if: matrix.family == 'rp2040' | |
uses: actions/checkout@v4 | |
with: | |
repository: raspberrypi/pico-sdk | |
ref: develop | |
path: pico-sdk | |
- name: Get Dependencies | |
run: | | |
sudo apt install -y ninja-build | |
python3 tools/get_deps.py ${{ matrix.family }} | |
- name: Build | |
run: python tools/build_cmake.py ${{ matrix.family }} | |
env: | |
PICO_SDK_PATH: ${{ github.workspace }}/pico-sdk | |
- name: Upload Artifacts for Hardware Testing (rp2040) | |
if: contains(matrix.family, 'rp2040') && github.repository_owner == 'hathach' | |
uses: actions/upload-artifact@v4 | |
with: | |
name: raspberry_pi_pico | |
path: | | |
cmake-build/cmake-build-raspberry_pi_pico/*/*/*.elf | |
- name: Upload Artifacts for Hardware Testing (nRF) | |
if: contains(matrix.family, 'nrf') && github.repository_owner == 'hathach' | |
uses: actions/upload-artifact@v4 | |
with: | |
name: feather_nrf52840_express | |
path: | | |
cmake-build/cmake-build-feather_nrf52840_express/*/*/*.elf | |
- name: Upload Artifacts for Hardware Testing (samd51) | |
if: contains(matrix.family, 'samd5x_e5x') && github.repository_owner == 'hathach' | |
uses: actions/upload-artifact@v4 | |
with: | |
name: itsybitsy_m4 | |
path: | | |
cmake-build/cmake-build-itsybitsy_m4/*/*/*.bin | |
# --------------------------------------- | |
# Build ARM with Clang | |
# --------------------------------------- | |
arm-clang: | |
runs-on: ubuntu-latest | |
strategy: | |
fail-fast: false | |
matrix: | |
family: | |
# Alphabetical order | |
- 'imxrt' | |
- 'kinetis_k kinetis_kl' | |
- 'lpc17 lpc18 lpc40 lpc43' | |
- 'lpc54 lpc55' | |
#- 'mcx' not working with gcc anymore, need to fix this first | |
- 'nrf' | |
#- 'ra' port later | |
#- 'rp2040' port later | |
- 'samd21' | |
- 'samd5x_e5x' | |
- 'stm32f0' | |
- 'stm32f1' | |
- 'stm32f2' | |
- 'stm32f3' | |
- 'stm32f4' | |
- 'stm32f7' | |
- 'stm32g0' | |
- 'stm32g4' | |
- 'stm32h5' | |
- 'stm32h7' | |
- 'stm32l4' | |
- 'stm32u5' | |
steps: | |
- name: Setup Python | |
uses: actions/setup-python@v5 | |
with: | |
python-version: '3.x' | |
- name: Checkout TinyUSB | |
uses: actions/checkout@v4 | |
- name: Checkout pico-sdk for rp2040 | |
if: matrix.family == 'rp2040' | |
uses: actions/checkout@v4 | |
with: | |
repository: raspberrypi/pico-sdk | |
ref: develop | |
path: pico-sdk | |
- name: Set Toolchain URL | |
run: echo >> $GITHUB_ENV TOOLCHAIN_URL=https://github.com/ARM-software/LLVM-embedded-toolchain-for-Arm/releases/download/release-17.0.1/LLVMEmbeddedToolchainForArm-17.0.1-Linux-x86_64.tar.xz | |
- name: Cache Toolchain | |
uses: actions/cache@v4 | |
id: cache-toolchain | |
with: | |
path: ~/cache/ | |
key: ${{ runner.os }}-24-04-17-${{ env.TOOLCHAIN_URL }} | |
- name: Install Toolchain | |
if: steps.cache-toolchain.outputs.cache-hit != 'true' | |
run: | | |
mkdir -p ~/cache/toolchain | |
wget --progress=dot:mega $TOOLCHAIN_URL -O toolchain.tar.xz | |
tar -C ~/cache/toolchain -xaf toolchain.tar.xz | |
- name: Prepare to build | |
run: | | |
echo >> $GITHUB_PATH `echo ~/cache/toolchain/*/bin` | |
sudo apt install -y ninja-build | |
python3 tools/get_deps.py ${{ matrix.family }} | |
- name: Build | |
run: python tools/build_cmake.py ${{ matrix.family }} -DTOOLCHAIN=clang | |
env: | |
PICO_SDK_PATH: ${{ github.workspace }}/pico-sdk | |
# --------------------------------------- | |
# Build MSP430 with GCC | |
# --------------------------------------- | |
msp430-gcc: | |
runs-on: ubuntu-latest | |
strategy: | |
fail-fast: false | |
matrix: | |
family: | |
# Alphabetical order | |
- 'msp430' | |
steps: | |
- name: Setup Python | |
uses: actions/setup-python@v5 | |
with: | |
python-version: '3.x' | |
- name: Checkout TinyUSB | |
uses: actions/checkout@v4 | |
- name: Set Toolchain URL | |
run: echo >> $GITHUB_ENV TOOLCHAIN_URL=http://software-dl.ti.com/msp430/msp430_public_sw/mcu/msp430/MSPGCC/9_2_0_0/export/msp430-gcc-9.2.0.50_linux64.tar.bz2 | |
- name: Cache Toolchain | |
uses: actions/cache@v4 | |
id: cache-toolchain | |
with: | |
path: ~/cache/ | |
key: ${{ runner.os }}-24-04-17-${{ env.TOOLCHAIN_URL }} | |
- name: Install Toolchain | |
if: steps.cache-toolchain.outputs.cache-hit != 'true' | |
run: | | |
mkdir -p ~/cache/toolchain | |
wget --progress=dot:mega $TOOLCHAIN_URL -O toolchain.tar.bz2 | |
tar -C ~/cache/toolchain -xaf toolchain.tar.bz2 | |
- name: Prepare to build | |
run: | | |
echo >> $GITHUB_PATH `echo ~/cache/toolchain/*/bin` | |
sudo apt install -y ninja-build | |
python3 tools/get_deps.py ${{ matrix.family }} | |
- name: Build | |
run: python tools/build_cmake.py ${{ matrix.family }} | |
# --------------------------------------- | |
# Hardware in the loop (HIL) | |
# Current self-hosted instance is running on an RPI4. For attached hardware checkout hil_pi4.json | |
# --------------------------------------- | |
hil-test: | |
# run only with hathach's commit due to limited resource on RPI4 | |
if: github.repository_owner == 'hathach' | |
needs: arm-gcc | |
runs-on: [self-hosted, rp2040, nrf52840, hardware-in-the-loop] | |
strategy: | |
fail-fast: false | |
matrix: | |
board: | |
- 'feather_nrf52840_express' | |
- 'itsybitsy_m4' | |
- 'raspberry_pi_pico' | |
steps: | |
- name: Clean workspace | |
run: | | |
echo "Cleaning up previous run" | |
rm -rf "${{ github.workspace }}" | |
mkdir -p "${{ github.workspace }}" | |
# USB bus on rpi4 is not stable, reset it before testing | |
- name: Reset USB bus | |
run: | | |
lsusb | |
lsusb -t | |
# reset VIA Labs 2.0 hub | |
sudo usbreset 001/002 | |
# legacy code | |
#for port in $(lspci | grep USB | cut -d' ' -f1); do | |
# echo -n "0000:${port}"| sudo tee /sys/bus/pci/drivers/xhci_hcd/unbind; | |
# sleep 0.1; | |
# echo -n "0000:${port}" | sudo tee /sys/bus/pci/drivers/xhci_hcd/bind; | |
#done | |
- name: Checkout test/hil | |
uses: actions/checkout@v4 | |
with: | |
sparse-checkout: test/hil | |
- name: Download Artifacts | |
uses: actions/download-artifact@v4 | |
with: | |
name: ${{ matrix.board }} | |
path: cmake-build/cmake-build-${{ matrix.board }} | |
- name: Test on actual hardware | |
run: | | |
python3 test/hil/hil_test.py --board ${{ matrix.board }} hil_pi4.json |