From fccfc45f694b993a8cb9809848dc6b4bdd70fdb8 Mon Sep 17 00:00:00 2001 From: Rain Date: Fri, 20 Dec 2024 13:07:41 -0800 Subject: [PATCH] [1/n] [ci] update MSRV and test on it, add clippy, fix clippy warnings (#70) Clippy flagged an outdated MSRV -- update to the version currently in Omicron, and add CI for the various permutations. Also allow `/target` to be a symlink -- this is the setup I use. --- .github/workflows/rust.yml | 13 ++++++++++++- .gitignore | 2 +- Cargo.toml | 6 +----- src/config.rs | 1 - src/package.rs | 2 +- 5 files changed, 15 insertions(+), 9 deletions(-) diff --git a/.github/workflows/rust.yml b/.github/workflows/rust.yml index 8adca91..04e2f97 100644 --- a/.github/workflows/rust.yml +++ b/.github/workflows/rust.yml @@ -3,11 +3,15 @@ # name: Rust +env: + RUSTFLAGS: -D warnings + on: push: branches: [ main ] pull_request: - branches: [ main ] + # Allow CI to run on all PRs, not just ones targeting main. This allows + # stacked PRs to be tested. jobs: check-style: @@ -22,15 +26,22 @@ jobs: components: rustfmt - name: Check style run: cargo fmt -- --check + - name: Check clippy + run: cargo clippy --all-targets --all-features build-and-test: runs-on: ${{ matrix.os }} strategy: matrix: + # 1.81 is the MSRV. + toolchain: [ stable, "1.81" ] os: [ ubuntu-latest, macos-latest ] steps: # actions/checkout@v2 - uses: actions/checkout@d632683dd7b4114ad314bca15554477dd762a938 + - uses: dtolnay/rust-toolchain@v1 + with: + toolchain: ${{ matrix.toolchain }} - name: Build run: cargo build --tests --verbose - name: Run tests diff --git a/.gitignore b/.gitignore index 088ba6b..321eccd 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,6 @@ # Generated by Cargo # will have compiled files and executables -/target/ +/target # Remove Cargo.lock from gitignore if creating an executable, leave it for libraries # More information here https://doc.rust-lang.org/cargo/guide/cargo-toml-vs-cargo-lock.html diff --git a/Cargo.toml b/Cargo.toml index a6f130e..5f94e34 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -3,11 +3,7 @@ name = "omicron-zone-package" version = "0.11.1" authors = ["Sean Klein "] edition = "2021" -# -# Report a specific error in the case that the toolchain is too old for -# let-else: -# -rust-version = "1.65.0" +rust-version = "1.81.0" license = "MPL-2.0" repository = "https://github.com/oxidecomputer/omicron-package" description = "Packaging tools for Oxide's control plane software" diff --git a/src/config.rs b/src/config.rs index 041d52c..10fdb02 100644 --- a/src/config.rs +++ b/src/config.rs @@ -113,7 +113,6 @@ impl Config { self.packages .iter() .filter(|(_, pkg)| target.includes_package(pkg)) - .map(|(name, pkg)| (name, pkg)) .collect(), ) } diff --git a/src/package.rs b/src/package.rs index c148076..c4221ce 100644 --- a/src/package.rs +++ b/src/package.rs @@ -215,7 +215,7 @@ pub struct BuildConfig<'a> { static DEFAULT_TARGET: Target = Target(BTreeMap::new()); static DEFAULT_PROGRESS: NoProgress = NoProgress::new(); -impl<'a> Default for BuildConfig<'a> { +impl Default for BuildConfig<'_> { fn default() -> Self { Self { target: &DEFAULT_TARGET,