LPSPI: embedded-hal 1.0 rework #550
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: Check Rust code | |
on: [push, pull_request] | |
jobs: | |
format: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: dtolnay/rust-toolchain@stable | |
with: | |
components: rustfmt | |
- name: Check formatting | |
run: cargo +stable fmt --all -- --check | |
# Checks the common HAL for all chips supported by imxrt-ral. | |
lint-hal: | |
needs: format | |
strategy: | |
matrix: | |
chips: | |
- imxrt-ral/imxrt1011 | |
- imxrt-ral/imxrt1015 | |
- imxrt-ral/imxrt1021 | |
- imxrt-ral/imxrt1051 | |
- imxrt-ral/imxrt1052 | |
- imxrt-ral/imxrt1061 | |
- imxrt-ral/imxrt1062 | |
- imxrt-ral/imxrt1064 | |
- imxrt-ral/imxrt1176_cm4 | |
- imxrt-ral/imxrt1176_cm7 | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: dtolnay/rust-toolchain@stable | |
with: | |
components: clippy | |
- uses: actions-rs/clippy-check@v1 | |
name: Lint imxrt-hal | |
with: | |
token: ${{ secrets.GITHUB_TOKEN }} | |
args: --features=${{ matrix.chips }} --package=imxrt-hal -- -D warnings | |
# Indirectly checks & lints the HAL with the HAL's chip feature, and also | |
# checks & lints the imxrt-log package. | |
lint-log: | |
needs: lint-hal | |
strategy: | |
matrix: | |
chips: | |
- imxrt-ral/imxrt1011,imxrt1010 | |
- imxrt-ral/imxrt1021,imxrt1020 | |
- imxrt-ral/imxrt1061,imxrt1060 | |
- imxrt-ral/imxrt1062,imxrt1060 | |
- imxrt-ral/imxrt1064,imxrt1060 | |
- imxrt-ral/imxrt1176_cm4,imxrt1170 | |
- imxrt-ral/imxrt1176_cm7,imxrt1170 | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: dtolnay/rust-toolchain@stable | |
with: | |
components: clippy | |
- uses: actions-rs/clippy-check@v1 | |
name: Lint imxrt-log | |
with: | |
token: ${{ secrets.GITHUB_TOKEN }} | |
args: --features=${{ matrix.chips }} --package=imxrt-log --package=imxrt-hal -- -D warnings | |
# Lint and build examples for boards. | |
examples: | |
needs: lint-hal | |
strategy: | |
matrix: | |
config: | |
# Boards that support all examples, and should build with additional drivers. | |
- --examples --features=board/teensy4,board/lcd1602 | |
- --examples --features=board/imxrt1010evk,board/lcd1602 | |
- --examples --features=board/imxrt1060evk,board/lcd1602 | |
# SPI examples (might break other examples) | |
- --example=hal_spi --example=rtic_spi --example=async_dma_spi --features=board/teensy4,board/spi | |
- --example=hal_spi --example=rtic_spi --example=async_dma_spi --features=board/imxrt1010evk,board/spi | |
- --example=hal_spi --example=rtic_spi --example=async_dma_spi --features=board/imxrt1060evk,board/spi | |
- --example=hal_spi --example=rtic_spi --example=async_dma_spi --features=board/imxrt1170evk-cm7,board/spi | |
# The i.MX RT 1170 EVK (CM7) target is WIP. The list below describes the working examples. | |
- --features=board/imxrt1170evk-cm7,board/lcd1602 --example=hal_led | |
--example=hal_gpio_input --example=rtic_gpio_input | |
--example=hal_uart --example=rtic_uart --example=rtic_dma_uart --example=async_dma_uart | |
--example=hal_gpt --example=rtic_gpt | |
--example=hal_pit --example=rtic_pit | |
--example=hal_logging --example=rtic_logging | |
--example=hal_clock_out | |
--example=hal_pwm --example=rtic_pwm | |
--example=hal_i2c_mpu9250 --example=hal_i2c_lcd1602 | |
--example=rtic_usb_serial --example=rtic_usb_test_class --example=rtic_usb_keypress --example=rtic_usb_mouse | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: dtolnay/rust-toolchain@nightly | |
with: | |
components: clippy | |
targets: thumbv7em-none-eabihf | |
- name: Lint board and examples | |
uses: actions-rs/clippy-check@v1 | |
with: | |
token: ${{ secrets.GITHUB_TOKEN }} | |
args: ${{ matrix.config }} --target=thumbv7em-none-eabihf | |
- name: Build examples | |
run: cargo +nightly build ${{ matrix.config }} --target=thumbv7em-none-eabihf --release | |
# Run unit, integration tests. | |
# | |
# Select just one compatible RAL feature to pair with the HAL. The goal is to | |
# cover all HAL configurations just once. The linting job gives us complete | |
# build coverage. | |
# | |
# This ends up testing imxrt-log multiple times. That's OK. | |
tests: | |
needs: format | |
strategy: | |
matrix: | |
chips: | |
- imxrt-ral/imxrt1011,imxrt1010 | |
- imxrt-ral/imxrt1021,imxrt1020 | |
- imxrt-ral/imxrt1062,imxrt1060 | |
- imxrt-ral/imxrt1176_cm7,imxrt1170 | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: dtolnay/rust-toolchain@stable | |
- name: Run unit, integration tests | |
run: cargo +stable test --features=${{ matrix.chips }} --tests --package=imxrt-hal --package=imxrt-log | |
# Ensures that documentation builds, and that links are valid | |
docs: | |
needs: format | |
runs-on: ubuntu-latest | |
env: | |
RUSTDOCFLAGS: -D warnings | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: dtolnay/rust-toolchain@stable | |
- name: Run documentation tests | |
run: cargo +stable test --features=board/teensy4 --workspace --doc | |
- name: Check documentation, doclinks throughout workspace | |
run: cargo +stable doc --workspace --no-deps --features=board/teensy4 |