From 41cbc1ddd69ef6c3b7447c5f50b96aa05dda672c Mon Sep 17 00:00:00 2001 From: Gerd Zellweger Date: Thu, 14 Dec 2023 14:26:01 -0800 Subject: [PATCH] Change the CI `--all-features` to an explicit list. This is due to the mutually exclusive features in rkyv which we expose now. `--all-features` will now activate them and the crate will fail to compile rkyv. We work around this by defining an explicit list of all mutually exclusive features to. Unfortunately there isn't an easy way to share env variables among different YAML files (https://github.com/actions/runner/issues/655). There also isn't a good way to specify --all-features minus "just a few" (https://github.com/rust-lang/cargo/issues/3126) aside from giving the complete list. Signed-off-by: Gerd Zellweger --- .github/workflows/codecov.yml | 7 ++++++- .github/workflows/lint.yml | 10 +++++++--- .github/workflows/test.yml | 22 +++++++++++++--------- 3 files changed, 26 insertions(+), 13 deletions(-) diff --git a/.github/workflows/codecov.yml b/.github/workflows/codecov.yml index 88634264cf..eec88c4d4b 100644 --- a/.github/workflows/codecov.yml +++ b/.github/workflows/codecov.yml @@ -1,4 +1,9 @@ name: codecov + +env: + # It's really `--all-features`, but not adding the mutually exclusive features from rkyv + ALL_NON_EXCLUSIVE_FEATURES: --features "libc winapi unstable-locales rkyv serde arbitrary iana-time-zone android-tzdata" + on: push: branches: [main, 0.4.x] @@ -18,7 +23,7 @@ jobs: - name: Install cargo-llvm-cov uses: taiki-e/install-action@cargo-llvm-cov - name: Generate code coverage - run: cargo +nightly llvm-cov --all-features --workspace --lcov --doctests --output-path lcov.info + run: cargo +nightly llvm-cov ${{ env.ALL_NON_EXCLUSIVE_FEATURES }} --workspace --lcov --doctests --output-path lcov.info - name: Upload coverage to Codecov uses: codecov/codecov-action@v3 env: diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index 87c9f553c4..e2a3502475 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -1,5 +1,9 @@ name: lint +env: + # It's really `--all-features`, but not adding the mutually exclusive features from rkyv + ALL_NON_EXCLUSIVE_FEATURES: --features "libc winapi unstable-locales rkyv serde arbitrary iana-time-zone android-tzdata" + on: push: branches: [main, 0.4.x] @@ -19,7 +23,7 @@ jobs: - run: cargo fmt --check --manifest-path fuzz/Cargo.toml - run: cargo fmt --check --manifest-path bench/Cargo.toml - run: | - cargo clippy --all-features --all-targets --color=always \ + cargo clippy ${{ env.ALL_NON_EXCLUSIVE_FEATURES }} --all-targets --color=always \ -- -D warnings - run: | cargo clippy --manifest-path fuzz/Cargo.toml --color=always \ @@ -50,8 +54,8 @@ jobs: - uses: actions/checkout@v4 - uses: dtolnay/rust-toolchain@stable - run: cargo install cargo-deadlinks - - run: cargo deadlinks -- --all-features - - run: cargo doc --all-features --no-deps + - run: cargo deadlinks -- ${{ env.ALL_NON_EXCLUSIVE_FEATURES }} + - run: cargo doc ${{ env.ALL_NON_EXCLUSIVE_FEATURES }} --no-deps env: RUSTDOCFLAGS: -Dwarnings diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index f73a269956..509e1f7222 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -1,5 +1,9 @@ name: All Tests and Builds +env: + # It's really `--all-features`, but not adding the mutually exclusive features from rkyv + ALL_NON_EXCLUSIVE_FEATURES: --features "libc winapi unstable-locales rkyv serde arbitrary iana-time-zone android-tzdata" + on: push: branches: [main, 0.4.x] @@ -16,7 +20,7 @@ jobs: - uses: actions/checkout@v4 - uses: dtolnay/rust-toolchain@stable - uses: Swatinem/rust-cache@v2 - - run: cargo test --all-features --color=always -- --color=always + - run: cargo test ${{ env.ALL_NON_EXCLUSIVE_FEATURES }} --color=always -- --color=always # later this may be able to be included with the below # kept separate for now as the following don't compile on 1.57 @@ -59,8 +63,8 @@ jobs: - run: cargo check --manifest-path fuzz/Cargo.toml --all-targets # run --lib and --doc to avoid the long running integration tests # which are run elsewhere - - run: cargo test --lib --all-features --color=always -- --color=always - - run: cargo test --doc --all-features --color=always -- --color=always + - run: cargo test --lib ${{ env.ALL_NON_EXCLUSIVE_FEATURES }} --color=always -- --color=always + - run: cargo test --doc ${{ env.ALL_NON_EXCLUSIVE_FEATURES }} --color=always -- --color=always features_check: strategy: @@ -74,7 +78,7 @@ jobs: - uses: Swatinem/rust-cache@v2 - run: | cargo hack check --feature-powerset --optional-deps serde,rkyv \ - --skip __internal_bench,iana-time-zone,pure-rust-locales,libc,winapi \ + --skip __internal_rkyv,__internal_bench,iana-time-zone,pure-rust-locales,libc,winapi \ --all-targets # run using `bash` on all platforms for consistent # line-continuation marks @@ -181,16 +185,16 @@ jobs: - uses: actions/checkout@v4 - run: cargo install cross - uses: Swatinem/rust-cache@v2 - - run: cross test --lib --all-features --target i686-unknown-linux-gnu --color=always - - run: cross test --doc --all-features --target i686-unknown-linux-gnu --color=always - - run: cross test --lib --all-features --target i686-unknown-linux-musl --color=always - - run: cross test --doc --all-features --target i686-unknown-linux-musl --color=always + - run: cross test --lib ${{ env.ALL_NON_EXCLUSIVE_FEATURES }} --target i686-unknown-linux-gnu --color=always + - run: cross test --doc ${{ env.ALL_NON_EXCLUSIVE_FEATURES }} --target i686-unknown-linux-gnu --color=always + - run: cross test --lib ${{ env.ALL_NON_EXCLUSIVE_FEATURES }} --target i686-unknown-linux-musl --color=always + - run: cross test --doc ${{ env.ALL_NON_EXCLUSIVE_FEATURES }} --target i686-unknown-linux-musl --color=always check-docs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: dtolnay/rust-toolchain@nightly - - run: cargo +nightly doc --all-features --no-deps + - run: cargo +nightly doc ${{ env.ALL_NON_EXCLUSIVE_FEATURES }} --no-deps env: RUSTDOCFLAGS: "-D warnings --cfg docsrs"