From 5483e7f16fdc34fe472f2aaa2bd95dd0b93c855d Mon Sep 17 00:00:00 2001 From: datdenkikniet Date: Sat, 22 Mar 2025 22:23:26 +0100 Subject: [PATCH] ci & xtask: support hifive clippy --- .github/workflows/build.yml | 18 +++++- rtic/CHANGELOG.md | 1 + rtic/src/export/riscv_common.rs | 2 +- xtask/src/argument_parsing.rs | 97 ++++++++++++++++++++------------- 4 files changed, 75 insertions(+), 43 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index e780b7c90bf..b43f1366f01 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -65,7 +65,7 @@ jobs: - run: cargo xtask --deny-warnings --platform lm3s6965 --backend ${{ matrix.input.backend }} check # Clippy - # TODO: clippy hifive1, esp32-c3 + # TODO: clippy esp32-c3 clippy: name: clippy runs-on: ubuntu-22.04 @@ -73,17 +73,29 @@ jobs: matrix: input: - backend: thumbv7 + platform: lm3s6965 rustup-target: thumbv7m-none-eabi - backend: thumbv6 + platform: lm3s6965 rustup-target: thumbv6m-none-eabi - backend: thumbv8-base + platform: lm3s6965 rustup-target: thumbv8m.base-none-eabi - backend: thumbv8-main + platform: lm3s6965 rustup-target: thumbv8m.main-none-eabi + - backend: riscv32-imc-clint + platform: hifive1 + rustup-target: riscv32imc-unknown-none-elf + + - backend: riscv32-imc-mecall + platform: hifive1 + rustup-target: riscv32imc-unknown-none-elf + steps: - name: Checkout uses: actions/checkout@v4 @@ -97,7 +109,7 @@ jobs: - name: Cache Dependencies uses: Swatinem/rust-cache@v2 - - run: cargo xtask --deny-warnings --platform lm3s6965 --backend ${{ matrix.input.backend }} clippy + - run: cargo xtask --deny-warnings --platform ${{ matrix.input.platform }} --backend ${{ matrix.input.backend }} clippy # Verify all examples, checks checkexamples: @@ -184,7 +196,7 @@ jobs: - if: ${{ steps.cache-qemu.outputs.cache-hit != 'true' }} name: Download QEMU - run: wget "${{ env.QEMU_URL }}" + run: wget "${{ env.QEMU_URL }}" - if: ${{ steps.cache-qemu.outputs.cache-hit != 'true' }} name: Extract QEMU diff --git a/rtic/CHANGELOG.md b/rtic/CHANGELOG.md index e086b0e54b6..157f13f3b24 100644 --- a/rtic/CHANGELOG.md +++ b/rtic/CHANGELOG.md @@ -22,6 +22,7 @@ Example: ### Changed +- Placate clippy - Updated esp32c3 dependency to v0.27.0 ### Added diff --git a/rtic/src/export/riscv_common.rs b/rtic/src/export/riscv_common.rs index d3028b4d07a..9f39eb7f0a7 100644 --- a/rtic/src/export/riscv_common.rs +++ b/rtic/src/export/riscv_common.rs @@ -1,4 +1,4 @@ -/// GENERIC RE-EXPORTS: needed for all RTIC backends +//! GENERIC RE-EXPORTS: needed for all RTIC backends /// Read the stack pointer. #[inline(always)] diff --git a/xtask/src/argument_parsing.rs b/xtask/src/argument_parsing.rs index 13ae6df4719..47c53a0468c 100644 --- a/xtask/src/argument_parsing.rs +++ b/xtask/src/argument_parsing.rs @@ -63,47 +63,26 @@ impl Package { vec![Some(backend.to_rtic_macros_feature().to_string())] } Package::RticMonotonics => { - let features = if partial { - &[ - "cortex-m-systick", - "rp2040", - "nrf52840", - "imxrt_gpt1,imxrt-ral/imxrt1062", - "stm32_tim2,stm32h725ag", - ][..] - } else { - &[ - "cortex-m-systick", - "cortex-m-systick,systick-64bit", - "rp2040", - "nrf52805", - "nrf52810", - "nrf52811", - "nrf52832", - "nrf52833", - "nrf52840", - "nrf5340-app", - "nrf5340-net", - "nrf9160", - "imxrt_gpt1,imxrt_gpt2,imxrt-ral/imxrt1062", - "stm32_tim2,stm32_tim3,stm32_tim4,stm32_tim5,stm32_tim15,stm32h725ag", - ][..] - }; + let features = backend.to_rtic_monotonics_features(partial); - features - .iter() - .map(|&s| { - if matches!(backend, Backends::Thumbv6) { - format!("{s},portable-atomic/critical-section") - } else { - s.to_string() - } - }) - .map(Some) - .chain(std::iter::once(None)) - .collect() + if let Some(features) = features { + features + .iter() + .map(|&s| { + if matches!(backend, Backends::Thumbv6) { + format!("{s},portable-atomic/critical-section") + } else { + s.to_string() + } + }) + .map(Some) + .chain(std::iter::once(None)) + .collect() + } else { + vec![None] + } } - Package::RticSync if matches!(backend, Backends::Thumbv6) => { + Package::RticSync if matches!(backend, Backends::Thumbv6) || !backend.is_arm() => { vec![Some("portable-atomic/critical-section".into())] } _ => vec![None], @@ -200,6 +179,7 @@ impl Backends { Backends::Riscv32ImcMecall | Backends::Riscv32ImacMecall => "riscv-mecall-backend", } } + #[allow(clippy::wrong_self_convention)] pub fn to_rtic_macros_feature(&self) -> &'static str { match self { @@ -210,6 +190,45 @@ impl Backends { Backends::Riscv32ImcMecall | Backends::Riscv32ImacMecall => "riscv-mecall", } } + + #[allow(clippy::wrong_self_convention)] + pub fn to_rtic_monotonics_features(&self, partial: bool) -> Option<&[&str]> { + if !self.is_arm() { + None + } else if partial { + Some(&[ + "cortex-m-systick", + "rp2040", + "nrf52840", + "imxrt_gpt1,imxrt-ral/imxrt1062", + "stm32_tim2,stm32h725ag", + ]) + } else { + Some(&[ + "cortex-m-systick", + "cortex-m-systick,systick-64bit", + "rp2040", + "nrf52805", + "nrf52810", + "nrf52811", + "nrf52832", + "nrf52833", + "nrf52840", + "nrf5340-app", + "nrf5340-net", + "nrf9160", + "imxrt_gpt1,imxrt_gpt2,imxrt-ral/imxrt1062", + "stm32_tim2,stm32_tim3,stm32_tim4,stm32_tim5,stm32_tim15,stm32h725ag", + ]) + } + } + + pub fn is_arm(&self) -> bool { + matches!( + self, + Self::Thumbv6 | Self::Thumbv7 | Self::Thumbv8Base | Self::Thumbv8Main + ) + } } #[derive(Copy, Clone, Default, Debug)]