Use a critical section for all devices other than the ESP32-C6/H2, as… #686
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: CI | |
on: | |
pull_request: | |
branches: | |
- main | |
paths-ignore: | |
- "**/README.md" | |
push: | |
paths-ignore: | |
- "**/README.md" | |
workflow_dispatch: | |
env: | |
CARGO_TERM_COLOR: always | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
# Cancel any currently running workflows from the same PR, branch, or | |
# tag when a new workflow is triggered. | |
# | |
# https://stackoverflow.com/a/66336834 | |
concurrency: | |
cancel-in-progress: true | |
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} | |
jobs: | |
# -------------------------------------------------------------------------- | |
# Check Packages | |
esp-hal-smartled: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v3 | |
- uses: dtolnay/rust-toolchain@v1 | |
with: | |
target: riscv32imc-unknown-none-elf | |
toolchain: nightly | |
components: rust-src | |
- uses: esp-rs/xtensa-toolchain@v1.5 | |
with: | |
ldproxy: false | |
override: false | |
- uses: Swatinem/rust-cache@v2 | |
# Check all RISC-V targets: | |
- name: check (esp32c3) | |
run: cd esp-hal-smartled/ && cargo +nightly check --features=esp32c3 | |
- name: check (esp32c6) | |
run: cd esp-hal-smartled/ && cargo +nightly check --features=esp32c6 | |
- name: check (esp32h2) | |
run: cd esp-hal-smartled/ && cargo +nightly check --features=esp32h2 | |
# Check all Xtensa targets: | |
- name: check (esp32) | |
run: cd esp-hal-smartled/ && cargo +esp check --features=esp32,esp32_40mhz | |
- name: check (esp32s2) | |
run: cd esp-hal-smartled/ && cargo +esp check --features=esp32s2 | |
- name: check (esp32s3) | |
run: cd esp-hal-smartled/ && cargo +esp check --features=esp32s3 | |
# Ensure documentation can be built (requires a chip feature!) | |
- name: rustdoc | |
run: cd esp-hal-smartled/ && cargo doc --features=esp32c3,esp-hal-common/eh1 | |
esp32-hal: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v3 | |
- uses: esp-rs/xtensa-toolchain@v1.5 | |
with: | |
default: true | |
buildtargets: esp32 | |
ldproxy: false | |
- uses: Swatinem/rust-cache@v2 | |
# Perform a full build initially to verify that the examples not only | |
# build, but also link successfully. | |
- name: build esp32-hal (no features) | |
run: cd esp32-hal/ && cargo build --examples | |
# Subsequent steps can just check the examples instead, as we're already | |
# confident that they link. | |
- name: check esp32-hal (common features) | |
run: | | |
cd esp32-hal/ | |
cargo check --examples --features=eh1,ufmt,log | |
cargo check --examples --features=eh1,ufmt,defmt | |
- name: check esp32-hal (embassy) | |
run: | | |
cd esp32-hal/ | |
cargo check --example=embassy_hello_world --features=embassy,embassy-time-timg0,embassy-executor-thread | |
cargo check --example=embassy_multicore --features=embassy,embassy-time-timg0,embassy-executor-thread | |
cargo check --example=embassy_multicore_interrupt --features=embassy,embassy-time-timg0,embassy-executor-interrupt | |
cargo check --example=embassy_multiprio --features=embassy,embassy-time-timg0,embassy-executor-interrupt | |
cargo check --examples --features=embassy,embassy-time-timg0,embassy-executor-interrupt,embassy-executor-thread,defmt | |
cargo check --examples --features=embassy,embassy-time-timg0,embassy-executor-interrupt,embassy-executor-thread,log | |
- name: check esp32-hal (embassy, async) | |
run: | | |
cd esp32-hal/ | |
cargo check --example=embassy_wait --features=embassy,embassy-time-timg0,async,embassy-executor-thread | |
cargo check --example=embassy_spi --features=embassy,embassy-time-timg0,async,embassy-executor-thread | |
cargo check --example=embassy_serial --features=embassy,embassy-time-timg0,async,embassy-executor-thread | |
cargo check --example=embassy_i2c --features=embassy,embassy-time-timg0,async,embassy-executor-thread | |
cargo check --example=embassy_i2s_read --features=embassy,embassy-time-timg0,async,embassy-executor-thread | |
cargo check --example=embassy_i2s_sound --features=embassy,embassy-time-timg0,async,embassy-executor-thread | |
cargo check --example=embassy_rmt_rx --features=embassy,embassy-time-timg0,async,embassy-executor-thread --release | |
cargo check --example=embassy_rmt_tx --features=embassy,embassy-time-timg0,async,embassy-executor-thread | |
- name: check esp32-hal (embassy, log/defmt) | |
run: | | |
cd esp32-hal/ | |
cargo check --examples --features=embassy,embassy-time-timg0,embassy-executor-interrupt,embassy-executor-thread,defmt | |
cargo check --examples --features=embassy,embassy-time-timg0,embassy-executor-interrupt,embassy-executor-thread,log | |
# Ensure documentation can be built | |
- name: rustdoc | |
run: cd esp32-hal/ && cargo doc --features=eh1 | |
esp32c2-hal: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v3 | |
- uses: dtolnay/rust-toolchain@v1 | |
with: | |
target: riscv32imc-unknown-none-elf | |
toolchain: nightly | |
components: rust-src | |
- uses: Swatinem/rust-cache@v2 | |
# Perform a full build initially to verify that the examples not only | |
# build, but also link successfully. | |
# We also use this as an opportunity to verify that the examples link | |
# for each supported image format. | |
- name: build esp32c2-hal (no features) | |
run: cd esp32c2-hal/ && cargo build --examples | |
- name: build esp32c2-hal (direct-boot) | |
run: cd esp32c2-hal/ && cargo build --examples --features=direct-boot | |
# Subsequent steps can just check the examples instead, as we're already | |
# confident that they link. | |
- name: check esp32c2-hal (common features) | |
run: | | |
cd esp32c2-hal/ | |
cargo +nightly check --examples --features=eh1,ufmt,log | |
cargo +nightly check --examples --features=eh1,ufmt,defmt | |
- name: check esp32c2-hal (async, systick) | |
run: cd esp32c2-hal/ && cargo +nightly check --example=embassy_hello_world --features=embassy,embassy-time-systick | |
- name: check esp32c2-hal (async, timg0) | |
run: cd esp32c2-hal/ && cargo +nightly check --example=embassy_hello_world --features=embassy,embassy-time-timg0 | |
- name: check esp32c2-hal (async, gpio) | |
run: cd esp32c2-hal/ && cargo +nightly check --example=embassy_wait --features=embassy,embassy-time-systick,async | |
- name: check esp32c2-hal (async, spi) | |
run: cd esp32c2-hal/ && cargo +nightly check --example=embassy_spi --features=embassy,embassy-time-systick,async | |
- name: check esp32c2-hal (async, serial) | |
run: cd esp32c2-hal/ && cargo +nightly check --example=embassy_serial --features=embassy,embassy-time-systick,async | |
- name: check esp32c2-hal (async, i2c) | |
run: cd esp32c2-hal/ && cargo +nightly check --example=embassy_i2c --features=embassy,embassy-time-systick,async | |
- name: check esp32c2-hal (interrupt-preemption) | |
run: cd esp32c2-hal/ && cargo check --example=interrupt_preemption --features=interrupt-preemption | |
- name: check esp32c2-hal (direct-vectoring) | |
run: cd esp32c2-hal/ && cargo check --example=direct-vectoring --features=direct-vectoring | |
- name: check esp32c2-hal (embassy, log/defmt) | |
run: | | |
cd esp32c2-hal/ | |
cargo +nightly check --examples --features=embassy,embassy-time-timg0,defmt | |
cargo +nightly check --examples --features=embassy,embassy-time-timg0,log | |
# Ensure documentation can be built | |
- name: rustdoc | |
run: cd esp32c2-hal/ && cargo doc --features=eh1 | |
esp32c3-hal: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v3 | |
- uses: dtolnay/rust-toolchain@v1 | |
with: | |
target: riscv32imc-unknown-none-elf | |
toolchain: nightly | |
components: rust-src | |
- uses: Swatinem/rust-cache@v2 | |
# Perform a full build initially to verify that the examples not only | |
# build, but also link successfully. | |
# We also use this as an opportunity to verify that the examples link | |
# for each supported image format. | |
- name: build esp32c3-hal (no features) | |
run: cd esp32c3-hal/ && cargo +nightly build --examples | |
- name: build esp32c3-hal (direct-boot) | |
run: cd esp32c3-hal/ && cargo +nightly build --examples --features=direct-boot | |
- name: build esp32c3-hal (mcu-boot) | |
run: cd esp32c3-hal/ && cargo +nightly build --examples --features=mcu-boot | |
# Subsequent steps can just check the examples instead, as we're already | |
# confident that they link. | |
- name: check esp32c3-hal (common features) | |
run: | | |
cd esp32c3-hal/ | |
cargo +nightly check --examples --features=eh1,ufmt,log | |
cargo +nightly check --examples --features=eh1,ufmt,defmt | |
- name: check esp32c3-hal (async, systick) | |
run: cd esp32c3-hal/ && cargo +nightly check --example=embassy_hello_world --features=embassy,embassy-time-systick | |
- name: check esp32c3-hal (async, timg0) | |
run: cd esp32c3-hal/ && cargo +nightly check --example=embassy_hello_world --features=embassy,embassy-time-timg0 | |
- name: check esp32c3-hal (async, gpio) | |
run: cd esp32c3-hal/ && cargo +nightly check --example=embassy_wait --features=embassy,embassy-time-systick,async | |
- name: check esp32c3-hal (async, spi) | |
run: cd esp32c3-hal/ && cargo +nightly check --example=embassy_spi --features=embassy,embassy-time-systick,async | |
- name: check esp32c3-hal (async, serial) | |
run: cd esp32c3-hal/ && cargo +nightly check --example=embassy_serial --features=embassy,embassy-time-systick,async | |
- name: check esp32c3-hal (async, i2c) | |
run: cd esp32c3-hal/ && cargo +nightly check --example=embassy_i2c --features=embassy,embassy-time-systick,async | |
- name: check esp32c3-hal (interrupt-preemption) | |
run: cd esp32c3-hal/ && cargo check --example=interrupt_preemption --features=interrupt-preemption | |
- name: check esp32c3-hal (direct-vectoring) | |
run: cd esp32c3-hal/ && cargo check --example=direct-vectoring --features=direct-vectoring | |
- name: check esp32c3-hal (embassy, log/defmt) | |
run: | | |
cd esp32c3-hal/ | |
cargo +nightly check --examples --features=embassy,embassy-time-timg0,defmt | |
cargo +nightly check --examples --features=embassy,embassy-time-timg0,log | |
# Ensure documentation can be built | |
- name: rustdoc | |
run: cd esp32c3-hal/ && cargo doc --features=eh1 | |
esp32c6-hal: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v3 | |
- uses: dtolnay/rust-toolchain@v1 | |
with: | |
target: riscv32imac-unknown-none-elf | |
toolchain: nightly | |
components: rust-src | |
- uses: Swatinem/rust-cache@v2 | |
# build the lp-hal examples first to make sure the examples which expect | |
# the ELF files to be present will compile | |
- name: build esp32c6-lp-hal prerequisites | |
run: cd esp32c6-lp-hal/ && cargo +nightly build --release --examples | |
# Perform a full build initially to verify that the examples not only | |
# build, but also link successfully. | |
# We also use this as an opportunity to verify that the examples link | |
# for each supported image format. | |
- name: build esp32c6-hal (no features) | |
run: cd esp32c6-hal/ && cargo +nightly build --examples | |
- name: build esp32c6-hal (direct-boot) | |
run: cd esp32c6-hal/ && cargo +nightly build --examples --features=direct-boot | |
# Subsequent steps can just check the examples instead, as we're already | |
# confident that they link. | |
- name: check esp32c6-hal (common features) | |
run: | | |
cd esp32c6-hal/ | |
cargo +nightly check --examples --features=eh1,ufmt,log | |
cargo +nightly check --examples --features=eh1,ufmt,defmt | |
- name: check esp32c6-hal (async, systick) | |
run: cd esp32c6-hal/ && cargo +nightly check --example=embassy_hello_world --features=embassy,embassy-time-systick | |
- name: check esp32c6-hal (async, timg0) | |
run: cd esp32c6-hal/ && cargo +nightly check --example=embassy_hello_world --features=embassy,embassy-time-timg0 | |
- name: check esp32c6-hal (async, gpio) | |
run: cd esp32c6-hal/ && cargo +nightly check --example=embassy_wait --features=embassy,embassy-time-systick,async | |
- name: check esp32c6-hal (async, spi) | |
run: cd esp32c6-hal/ && cargo +nightly check --example=embassy_spi --features=embassy,embassy-time-systick,async | |
- name: check esp32c6-hal (async, serial) | |
run: cd esp32c6-hal/ && cargo +nightly check --example=embassy_serial --features=embassy,embassy-time-systick,async | |
- name: check esp32c6-hal (async, i2c) | |
run: cd esp32c6-hal/ && cargo +nightly check --example=embassy_i2c --features=embassy,embassy-time-systick,async | |
- name: check esp32c6-hal (interrupt-preemption) | |
run: cd esp32c6-hal/ && cargo check --example=interrupt_preemption --features=interrupt-preemption | |
- name: check esp32c6-hal (direct-vectoring) | |
run: cd esp32c6-hal/ && cargo check --example=direct-vectoring --features=direct-vectoring | |
- name: check esp32c6-hal (embassy, log/defmt) | |
run: | | |
cd esp32c6-hal/ | |
cargo +nightly check --examples --features=embassy,embassy-time-timg0,defmt | |
cargo +nightly check --examples --features=embassy,embassy-time-timg0,log | |
# Ensure documentation can be built | |
- name: rustdoc | |
run: cd esp32c6-hal/ && cargo doc --features=eh1 | |
esp32c6-lp-hal: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v3 | |
- uses: dtolnay/rust-toolchain@v1 | |
with: | |
target: riscv32imac-unknown-none-elf | |
toolchain: nightly | |
components: rust-src | |
- uses: Swatinem/rust-cache@v2 | |
# Perform a full build initially to verify that the examples not only | |
# build, but also link successfully. | |
- name: build esp32c6-lp-hal (no features) | |
run: cd esp32c6-lp-hal/ && cargo +nightly build --release --examples | |
# Ensure documentation can be built | |
- name: rustdoc | |
run: cd esp32c6-lp-hal/ && cargo doc | |
esp32h2-hal: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v3 | |
- uses: dtolnay/rust-toolchain@v1 | |
with: | |
target: riscv32imac-unknown-none-elf | |
toolchain: nightly | |
components: rust-src | |
- uses: Swatinem/rust-cache@v2 | |
# Perform a full build initially to verify that the examples not only | |
# build, but also link successfully. | |
# We also use this as an opportunity to verify that the examples link | |
# for each supported image format. | |
- name: build esp32h2-hal (no features) | |
run: cd esp32h2-hal/ && cargo +nightly build --examples | |
- name: build esp32h2-hal (direct-boot) | |
run: cd esp32h2-hal/ && cargo +nightly build --examples --features=direct-boot | |
# Subsequent steps can just check the examples instead, as we're already | |
# confident that they link. | |
- name: check esp32h2-hal (common features) | |
run: | | |
cd esp32h2-hal/ | |
cargo +nightly check --examples --features=eh1,ufmt,log | |
cargo +nightly check --examples --features=eh1,ufmt,defmt | |
- name: check esp32h2-hal (async, systick) | |
run: cd esp32h2-hal/ && cargo +nightly check --example=embassy_hello_world --features=embassy,embassy-time-systick | |
- name: check esp32h2-hal (async, timg0) | |
run: cd esp32h2-hal/ && cargo +nightly check --example=embassy_hello_world --features=embassy,embassy-time-timg0 | |
- name: check esp32h2-hal (async, gpio) | |
run: cd esp32h2-hal/ && cargo +nightly check --example=embassy_wait --features=embassy,embassy-time-systick,async | |
- name: check esp32h2-hal (async, spi) | |
run: cd esp32h2-hal/ && cargo +nightly check --example=embassy_spi --features=embassy,embassy-time-systick,async | |
- name: check esp32h2-hal (async, serial) | |
run: cd esp32h2-hal/ && cargo +nightly check --example=embassy_serial --features=embassy,embassy-time-systick,async | |
- name: check esp32h2-hal (async, i2c) | |
run: cd esp32h2-hal/ && cargo +nightly check --example=embassy_i2c --features=embassy,embassy-time-systick,async | |
- name: check esp32h2-hal (interrupt-preemption) | |
run: cd esp32h2-hal/ && cargo check --example=interrupt_preemption --features=interrupt-preemption | |
- name: check esp32h2-hal (direct-vectoring) | |
run: cd esp32h2-hal/ && cargo check --example=direct-vectoring --features=direct-vectoring | |
- name: check esp32h2-hal (embassy, log/defmt) | |
run: | | |
cd esp32h2-hal/ | |
cargo +nightly check --examples --features=embassy,embassy-time-timg0,defmt | |
cargo +nightly check --examples --features=embassy,embassy-time-timg0,log | |
# Ensure documentation can be built | |
- name: rustdoc | |
run: cd esp32h2-hal/ && cargo doc --features=eh1 | |
esp32s2-hal: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v3 | |
- uses: esp-rs/xtensa-toolchain@v1.5 | |
with: | |
default: true | |
buildtargets: esp32s2 | |
ldproxy: false | |
- uses: Swatinem/rust-cache@v2 | |
# Perform a full build initially to verify that the examples not only | |
# build, but also link successfully. | |
- name: check esp32s2-hal (no features) | |
run: cd esp32s2-hal/ && cargo build --examples | |
# Subsequent steps can just check the examples instead, as we're already | |
# confident that they link. | |
- name: check esp32s2-hal (common features) | |
run: | | |
cd esp32s2-hal/ | |
cargo check --examples --features=eh1,ufmt,log | |
cargo check --examples --features=eh1,ufmt,defmt | |
# FIXME: `time-systick` feature disabled for now, see 'esp32s2-hal/Cargo.toml'. | |
# - name: check esp32s2-hal (async, systick) | |
# run: cd esp32s2-hal/ && cargo check --example=embassy_hello_world --features=embassy,embassy-time-systick,executor | |
- name: check esp32s2-hal (embassy, timg0) | |
run: | | |
cd esp32s2-hal/ | |
cargo check --example=embassy_hello_world --features=embassy,embassy-time-timg0,embassy-executor-thread | |
cargo check --example=embassy_multiprio --features=embassy,embassy-time-timg0,embassy-executor-interrupt | |
- name: check esp32s2-hal (embassy, timg0, async) | |
run: | | |
cd esp32s2-hal/ | |
cargo check --example=embassy_wait --features=embassy,embassy-time-timg0,async,embassy-executor-thread | |
cargo check --example=embassy_spi --features=embassy,embassy-time-timg0,async,embassy-executor-thread | |
cargo check --example=embassy_serial --features=embassy,embassy-time-timg0,async,embassy-executor-thread | |
cargo check --example=embassy_i2c --features=embassy,embassy-time-timg0,async,embassy-executor-thread | |
cargo check --example=embassy_i2s_read --features=embassy,embassy-time-timg0,async,embassy-executor-thread | |
cargo check --example=embassy_i2s_sound --features=embassy,embassy-time-timg0,async,embassy-executor-thread | |
cargo check --example=embassy_rmt_rx --features=embassy,embassy-time-timg0,async,embassy-executor-thread --release | |
cargo check --example=embassy_rmt_tx --features=embassy,embassy-time-timg0,async,embassy-executor-thread | |
- name: check esp32s2-hal (embassy, log/defmt) | |
run: | | |
cd esp32s2-hal/ | |
cargo check --examples --features=embassy,embassy-time-timg0,embassy-executor-interrupt,embassy-executor-thread,defmt | |
cargo check --examples --features=embassy,embassy-time-timg0,embassy-executor-interrupt,embassy-executor-thread,log | |
# Ensure documentation can be built | |
- name: rustdoc | |
run: cd esp32s2-hal/ && cargo doc --features=eh1 | |
esp32s3-hal: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v3 | |
- uses: esp-rs/xtensa-toolchain@v1.5 | |
with: | |
default: true | |
buildtargets: esp32s3 | |
ldproxy: false | |
- uses: Swatinem/rust-cache@v2 | |
# Perform a full build initially to verify that the examples not only | |
# build, but also link successfully. | |
# We also use this as an opportunity to verify that the examples link | |
# for each supported image format. | |
- name: build esp32s3-hal (no features) | |
run: cd esp32s3-hal/ && cargo build --examples | |
- name: build esp32s3-hal (direct-boot) | |
run: cd esp32s3-hal/ && cargo build --examples --features=direct-boot | |
# Subsequent steps can just check the examples instead, as we're already | |
# confident that they link. | |
- name: check esp32s3-hal (common features) | |
run: | | |
cd esp32s3-hal/ | |
cargo check --examples --features=eh1,ufmt,log | |
cargo check --examples --features=eh1,ufmt,defmt | |
- name: check esp32s3-hal (embassy, timg0) | |
run: | | |
cd esp32s3-hal/ | |
cargo check --example=embassy_hello_world --features=embassy,embassy-time-timg0,embassy-executor-thread | |
cargo check --example=embassy_multicore --features=embassy,embassy-time-timg0,embassy-executor-thread | |
cargo check --example=embassy_multicore_interrupt --features=embassy,embassy-time-timg0,embassy-executor-interrupt | |
cargo check --example=embassy_multiprio --features=embassy,embassy-time-timg0,embassy-executor-interrupt | |
- name: check esp32s3-hal (embassy, systick) | |
run: | | |
cd esp32s3-hal/ | |
cargo check --example=embassy_hello_world --features=embassy,embassy-time-systick,embassy-executor-thread | |
cargo check --example=embassy_multicore --features=embassy,embassy-time-systick,embassy-executor-thread | |
cargo check --example=embassy_multicore_interrupt --features=embassy,embassy-time-systick,embassy-executor-interrupt | |
cargo check --example=embassy_multiprio --features=embassy,embassy-time-systick,embassy-executor-interrupt | |
- name: check esp32s3-hal (embassy, timg0, async) | |
run: | | |
cd esp32s3-hal/ | |
cargo check --example=embassy_wait --features=embassy,embassy-time-timg0,async,embassy-executor-thread | |
cargo check --example=embassy_spi --features=embassy,embassy-time-timg0,async,embassy-executor-thread | |
cargo check --example=embassy_serial --features=embassy,embassy-time-timg0,async,embassy-executor-thread | |
cargo check --example=embassy_i2c --features=embassy,embassy-time-timg0,async,embassy-executor-thread | |
cargo check --example=embassy_i2s_read --features=embassy,embassy-time-timg0,async,embassy-executor-thread | |
cargo check --example=embassy_i2s_sound --features=embassy,embassy-time-timg0,async,embassy-executor-thread | |
cargo check --example=embassy_rmt_rx --features=embassy,embassy-time-timg0,async,embassy-executor-thread | |
cargo check --example=embassy_rmt_tx --features=embassy,embassy-time-timg0,async,embassy-executor-thread | |
- name: check esp32s3-hal (embassy, systick, async) | |
run: | | |
cd esp32s3-hal/ | |
cargo check --example=embassy_wait --features=embassy,embassy-time-systick,async,embassy-executor-thread | |
cargo check --example=embassy_spi --features=embassy,embassy-time-systick,async,embassy-executor-thread | |
cargo check --example=embassy_serial --features=embassy,embassy-time-systick,async,embassy-executor-thread | |
cargo check --example=embassy_i2c --features=embassy,embassy-time-systick,async,embassy-executor-thread | |
- name: check esp32s3-hal (octal psram) | |
run: cd esp32s3-hal/ && cargo check --example=octal_psram --features=opsram_2m --release # This example requires release! | |
- name: check esp32s3-hal (embassy, log/defmt) | |
run: | | |
cd esp32s3-hal/ | |
cargo check --examples --features=embassy,embassy-time-timg0,embassy-executor-interrupt,embassy-executor-thread,defmt | |
cargo check --examples --features=embassy,embassy-time-timg0,embassy-executor-interrupt,embassy-executor-thread,log | |
# Ensure documentation can be built | |
- name: rustdoc | |
run: cd esp32s3-hal/ && cargo doc --features=eh1 | |
esp-riscv-rt: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v3 | |
- uses: dtolnay/rust-toolchain@v1 | |
with: | |
target: riscv32imac-unknown-none-elf, riscv32imc-unknown-none-elf | |
toolchain: nightly | |
components: rust-src | |
- uses: Swatinem/rust-cache@v2 | |
- name: Check esp-riscv-rt (imc) | |
run: cd esp-riscv-rt/ && cargo check --target=riscv32imc-unknown-none-elf -Zbuild-std=core | |
- name: Check esp-riscv-rt (imac) | |
run: cd esp-riscv-rt/ && cargo check --target=riscv32imac-unknown-none-elf -Zbuild-std=core | |
# Ensure documentation can be built | |
- name: rustdoc | |
run: cd esp-riscv-rt/ && cargo doc | |
# -------------------------------------------------------------------------- | |
# MSRV | |
msrv-riscv: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v3 | |
- uses: dtolnay/rust-toolchain@v1 | |
with: | |
target: riscv32imc-unknown-none-elf, riscv32imac-unknown-none-elf | |
toolchain: "1.67" | |
components: rust-src | |
- uses: Swatinem/rust-cache@v2 | |
# build the lp-hal examples first to make sure the examples which expect | |
# the ELF files to be present will compile | |
- name: build esp32c6-lp-hal prerequisites | |
run: cd esp32c6-lp-hal/ && RUSTC_BOOTSTRAP=1 cargo build --release --examples | |
# Verify the MSRV for all RISC-V chips. | |
- name: msrv (esp32c2-hal) | |
run: | | |
cd esp32c2-hal/ | |
RUSTC_BOOTSTRAP=1 cargo check --features=eh1,ufmt,log | |
RUSTC_BOOTSTRAP=1 cargo check --features=defmt | |
- name: msrv (esp32c3-hal) | |
run: | | |
cd esp32c3-hal/ | |
RUSTC_BOOTSTRAP=1 cargo check --features=eh1,ufmt,log | |
RUSTC_BOOTSTRAP=1 cargo check --features=defmt | |
- name: msrv (esp32c6-hal) | |
run: | | |
cd esp32c6-hal/ | |
RUSTC_BOOTSTRAP=1 cargo check --features=eh1,ufmt,log | |
RUSTC_BOOTSTRAP=1 cargo check --features=defmt | |
- name: msrv (esp32c6-lp-hal) | |
run: cd esp32c6-lp-hal/ && RUSTC_BOOTSTRAP=1 cargo check | |
- name: msrv (esp32h2-hal) | |
run: | | |
cd esp32h2-hal/ | |
RUSTC_BOOTSTRAP=1 cargo check --features=eh1,ufmt,log | |
RUSTC_BOOTSTRAP=1 cargo check --features=defmt | |
msrv-xtensa: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v3 | |
- uses: esp-rs/xtensa-toolchain@v1.5 | |
with: | |
ldproxy: false | |
version: "1.67.0" | |
- uses: Swatinem/rust-cache@v2 | |
# Verify the MSRV for all Xtensa chips. | |
- name: msrv (esp32-hal) | |
run: | | |
cd esp32-hal/ | |
cargo check --features=eh1,ufmt,log | |
cargo check --features=defmt | |
- name: msrv (esp32s2-hal) | |
run: | | |
cd esp32s2-hal/ | |
cargo check --features=eh1,ufmt,log | |
cargo check --features=defmt | |
- name: msrv (esp32s3-hal) | |
run: | | |
cd esp32s3-hal/ | |
cargo check --features=eh1,ufmt,log | |
cargo check --features=defmt | |
# -------------------------------------------------------------------------- | |
# Lint | |
clippy-riscv: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v3 | |
- uses: dtolnay/rust-toolchain@v1 | |
with: | |
toolchain: stable | |
components: clippy | |
- uses: Swatinem/rust-cache@v2 | |
# Run clippy on all packages targeting RISC-V. | |
- name: clippy (esp-riscv-rt) | |
run: cargo +stable clippy --manifest-path=esp-riscv-rt/Cargo.toml -- -D warnings | |
- name: clippy (esp32c2-hal) | |
run: cargo +stable clippy --manifest-path=esp32c2-hal/Cargo.toml -- -D warnings | |
- name: clippy (esp32c3-hal) | |
run: cargo +stable clippy --manifest-path=esp32c3-hal/Cargo.toml -- -D warnings | |
- name: clippy (esp32c6-hal) | |
run: cargo +stable clippy --manifest-path=esp32c6-hal/Cargo.toml -- -D warnings | |
- name: clippy (esp32c6-lp-hal) | |
run: cargo +stable clippy --manifest-path=esp32c6-lp-hal/Cargo.toml -- -D warnings -A asm-sub-register | |
- name: clippy (esp32h2-hal) | |
run: cargo +stable clippy --manifest-path=esp32h2-hal/Cargo.toml -- -D warnings | |
clippy-xtensa: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v3 | |
- uses: esp-rs/xtensa-toolchain@v1.5 | |
with: | |
ldproxy: false | |
- uses: Swatinem/rust-cache@v2 | |
# Run clippy on all packages targeting Xtensa. | |
- name: clippy (esp32-hal) | |
run: cargo +esp clippy --manifest-path=esp32-hal/Cargo.toml -- -D warnings | |
- name: clippy (esp32s2-hal) | |
run: cargo +esp clippy --manifest-path=esp32s2-hal/Cargo.toml -- -D warnings | |
- name: clippy (esp32s3-hal) | |
run: cargo +esp clippy --manifest-path=esp32s3-hal/Cargo.toml -- -D warnings | |
rustfmt: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v3 | |
# Some of the items in 'rustfmt.toml' require the nightly release | |
# channel, so we must use this channel for the formatting checks | |
# to succeed. | |
- uses: dtolnay/rust-toolchain@v1 | |
with: | |
toolchain: nightly | |
components: rustfmt | |
- uses: Swatinem/rust-cache@v2 | |
# Check the formatting of all packages. | |
- name: rustfmt (esp-hal-common) | |
run: cargo fmt --all --manifest-path=esp-hal-common/Cargo.toml -- --check | |
- name: rustfmt (esp-hal-procmacros) | |
run: cargo fmt --all --manifest-path=esp-hal-procmacros/Cargo.toml -- --check | |
- name: rustfmt (esp-hal-smartled) | |
run: cargo fmt --all --manifest-path=esp-hal-smartled/Cargo.toml -- --check | |
- name: rustfmt (esp-riscv-rt) | |
run: cargo fmt --all --manifest-path=esp-riscv-rt/Cargo.toml -- --check | |
- name: rustfmt (esp32-hal) | |
run: cargo fmt --all --manifest-path=esp32-hal/Cargo.toml -- --check | |
- name: rustfmt (esp32c2-hal) | |
run: cargo fmt --all --manifest-path=esp32c2-hal/Cargo.toml -- --check | |
- name: rustfmt (esp32c3-hal) | |
run: cargo fmt --all --manifest-path=esp32c3-hal/Cargo.toml -- --check | |
- name: rustfmt (esp32c6-hal) | |
run: cargo fmt --all --manifest-path=esp32c6-hal/Cargo.toml -- --check | |
- name: rustfmt (esp32c6-lp-hal) | |
run: cargo fmt --all --manifest-path=esp32c6-lp-hal/Cargo.toml -- --check | |
- name: rustfmt (esp32h2-hal) | |
run: cargo fmt --all --manifest-path=esp32h2-hal/Cargo.toml -- --check | |
- name: rustfmt (esp32s2-hal) | |
run: cargo fmt --all --manifest-path=esp32s2-hal/Cargo.toml -- --check | |
- name: rustfmt (esp32s3-hal) | |
run: cargo fmt --all --manifest-path=esp32s3-hal/Cargo.toml -- --check | |
# -------------------------------------------------------------------------- | |
# Changelog | |
changelog: | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout sources | |
uses: actions/checkout@v3 | |
- uses: dangoslen/changelog-enforcer@v3 | |
with: | |
changeLogPath: CHANGELOG.md | |
skipLabels: "skip-changelog" | |
missingUpdateErrorMessage: "Please add a changelog entry in the CHANGELOG.md file." |