From 13e4e1c8934e6a0ed065efefb304a4babd85daec Mon Sep 17 00:00:00 2001 From: Melfely Date: Tue, 22 Sep 2026 20:48:40 +0000 Subject: [PATCH] ci: Setup Linting and Build Test for RP2350. (#2) Reviewed-on: https://gitea.melfely.com/melfely/embassy-template-rp2350/pulls/2 Co-authored-by: Melfely --- .gitea/workflows/lint.yml | 67 +++++++++++++++++++++++++++++++++++++++ Cargo.toml | 36 +++++++++++++++++---- src/main.rs | 2 +- 3 files changed, 98 insertions(+), 7 deletions(-) create mode 100644 .gitea/workflows/lint.yml diff --git a/.gitea/workflows/lint.yml b/.gitea/workflows/lint.yml new file mode 100644 index 0000000..436373a --- /dev/null +++ b/.gitea/workflows/lint.yml @@ -0,0 +1,67 @@ + +name: Lint & Build + +on: + push: + branches: [ main, master ] + pull_request: + +jobs: + lint: + name: Linting + runs-on: ubuntu-latest + + steps: + - name: Checkout Project + uses: actions/checkout@v5 + + - name: Setup Rust + uses: dtolnay/rust-toolchain@stable + with: + targets: thumbv8m.main-none-eabihf + components: rustfmt, clippy + + - name: Install cargo sort + uses: taiki-e/install-action@v2 + with: + tool: cargo-sort + + - name: Install cargo machete + uses: taiki-e/install-action@v2 + with: + tool: cargo-machete + + - name: Check formatting + run: cargo fmt --check + + - name: Check import sorting + run: cargo sort --grouped --check --check-format + + - name: Check for unused dependencies + run: cargo machete + + - name: Clippy for RP2350 ARM Cores + run: | + cargo clippy --target thumbv8m.main-none-eabihf -- -D warnings + build: + name: Build + runs-on: ubuntu-latest + needs: lint + + steps: + - name: Checkout Project + uses: actions/checkout@v5 + + - name: Setup Rust + uses: dtolnay/rust-toolchain@stable + with: + targets: thumbv8m.main-none-eabihf + + - name: Build for RP2350 ARM Cores + run: | + cargo build --target thumbv8m.main-none-eabihf --release --locked + + + + + diff --git a/Cargo.toml b/Cargo.toml index 82e6718..5837e35 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -3,8 +3,36 @@ name = "embassy_template" version = "0.1.0" edition = "2024" +# This lists off all of the crates that come DEFAULT with the template +# This is so machete doesn't catch them in projects that do not use the crates provided by the template. Since many are required once you go beyond getting started, a few others are nice to haves like heapless and static_cell. +[package.metadata.cargo-machete] +ignored = [ + "cortex-m", + "cortex-m-rt", + "critical-section", + "defmt", + "defmt-rtt", + "embassy-embedded-hal", + "embassy-executor", + "embassy-futures", + "embassy-rp", + "embassy-sync", + "embassy-sync", + "embassy-time", + "embassy-usb", + "embedded-hal-async", + "embedded-io-async", + "heapless", + "panic-probe", + "static_cell", +] + [dependencies] +cortex-m = { version = "0.7.6", features = ["inline-asm"] } +cortex-m-rt = "0.7.0" +critical-section = "1.1" defmt = "1.1.1" +defmt-rtt = "1.3.0" embassy-embedded-hal = { version = "0.6.0", features = ["defmt"] } embassy-executor = { version = "0.10.0", features = ["defmt"] } embassy-futures = { version = "0.1.2", features = ["defmt"] } @@ -12,12 +40,8 @@ embassy-rp = { version = "0.10.0", features = ["defmt", "unstable-pac", "time-dr embassy-sync = { version = "0.8.0", features = ["defmt"] } embassy-time = { version = "0.5.1", features = ["defmt", "defmt-timestamp-uptime"] } embassy-usb = { version = "0.6.0", features = ["defmt"] } -cortex-m = { version = "0.7.6", features = ["inline-asm"] } -cortex-m-rt = "0.7.0" -critical-section = "1.1" -panic-probe = { version = "1.0.0", features = ["print-defmt"] } -heapless = "0.9" embedded-hal-async = "1.0" embedded-io-async = { version = "0.7.0", features = ["defmt"] } -defmt-rtt = "1.3.0" +heapless = "0.9" +panic-probe = { version = "1.0.0", features = ["print-defmt"] } static_cell = "2.1.1" diff --git a/src/main.rs b/src/main.rs index 952f6c4..6ac20d3 100644 --- a/src/main.rs +++ b/src/main.rs @@ -25,7 +25,7 @@ pub static PICOTOOL_ENTRIES: [embassy_rp::binary_info::EntryAddr; 4] = [ entry = "cortex_m_rt::entry" )] async fn main(_spawner: Spawner) { - let p = embassy_rp::init(Default::default()); + let _p = embassy_rp::init(Default::default()); loop { info!("led on!");