From 7b6ccb515ff067151ed62db835f735e5653f8784 Mon Sep 17 00:00:00 2001 From: Carl Lerche Date: Wed, 2 Apr 2025 14:25:45 -0700 Subject: [PATCH] chore: backport CI fixes --- .cirrus.yml | 2 +- .github/workflows/ci.yml | 40 +++++++++++++++++++++++--------- Cargo.toml | 13 +++++++++++ examples/Cargo.toml | 3 +++ tokio/Cargo.toml | 4 +++- tokio/src/runtime/tests/queue.rs | 13 ----------- 6 files changed, 49 insertions(+), 26 deletions(-) diff --git a/.cirrus.yml b/.cirrus.yml index bdf3af740..abf07ca48 100644 --- a/.cirrus.yml +++ b/.cirrus.yml @@ -1,7 +1,7 @@ only_if: $CIRRUS_TAG == '' && ($CIRRUS_PR != '' || $CIRRUS_BRANCH == 'master' || $CIRRUS_BRANCH =~ 'tokio-.*') auto_cancellation: $CIRRUS_BRANCH != 'master' && $CIRRUS_BRANCH !=~ 'tokio-.*' freebsd_instance: - image_family: freebsd-14-0 + image_family: freebsd-14-2 env: RUST_STABLE: stable RUST_NIGHTLY: nightly-2024-05-05 diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 761519025..fb96e27c5 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -177,7 +177,7 @@ jobs: run: | set -euxo pipefail RUSTFLAGS="$RUSTFLAGS -C panic=abort -Zpanic-abort-tests" cargo nextest run --workspace --exclude tokio-macros --exclude tests-build --all-features --tests - + test-integration-tests-per-feature: needs: basics name: Run integration tests for each feature @@ -455,10 +455,18 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - - name: Check semver + - name: Check `tokio` semver uses: obi1kenobi/cargo-semver-checks-action@v2 with: rust-toolchain: ${{ env.rust_stable }} + package: tokio + release-type: minor + - name: Check semver for rest of the workspace + if: ${{ !startsWith(github.event.pull_request.base.ref, 'tokio-1.') }} + uses: obi1kenobi/cargo-semver-checks-action@v2 + with: + rust-toolchain: ${{ env.rust_stable }} + exclude: tokio release-type: minor cross-check: @@ -689,7 +697,14 @@ jobs: toolchain: ${{ env.rust_min }} - uses: Swatinem/rust-cache@v2 - name: "check --workspace --all-features" - run: cargo check --workspace --all-features + run: | + if [[ "${{ github.event.pull_request.base.ref }}" =~ ^tokio-1\..* ]]; then + # Only check `tokio` crate as the PR is backporting to an earlier tokio release. + cargo check -p tokio --all-features + else + # Check all crates in the workspace + cargo check --workspace --all-features + fi env: RUSTFLAGS: "" # remove -Dwarnings @@ -927,10 +942,10 @@ jobs: targets: ${{ matrix.target }} # Install dependencies - - name: Install cargo-hack, wasmtime, and cargo-wasi + - name: Install cargo-hack, wasmtime uses: taiki-e/install-action@v2 with: - tool: cargo-hack,wasmtime,cargo-wasi + tool: cargo-hack,wasmtime - uses: Swatinem/rust-cache@v2 - name: WASI test tokio full @@ -956,9 +971,12 @@ jobs: - name: test tests-integration --features wasi-rt # TODO: this should become: `cargo hack wasi test --each-feature` - run: cargo wasi test --test rt_yield --features wasi-rt + run: cargo test --target ${{ matrix.target }} --test rt_yield --features wasi-rt if: matrix.target == 'wasm32-wasip1' working-directory: tests-integration + env: + CARGO_TARGET_WASM32_WASIP1_RUNNER: "wasmtime run --" + RUSTFLAGS: -Dwarnings -C target-feature=+atomics,+bulk-memory -C link-args=--max-memory=67108864 - name: test tests-integration --features wasi-threads-rt run: cargo test --target ${{ matrix.target }} --features wasi-threads-rt @@ -980,7 +998,7 @@ jobs: rust: # `check-external-types` requires a specific Rust nightly version. See # the README for details: https://github.com/awslabs/cargo-check-external-types - - nightly-2023-10-21 + - nightly-2024-06-30 steps: - uses: actions/checkout@v4 - name: Install Rust ${{ matrix.rust }} @@ -991,7 +1009,7 @@ jobs: - name: Install cargo-check-external-types uses: taiki-e/cache-cargo-install-action@v1 with: - tool: cargo-check-external-types@0.1.10 + tool: cargo-check-external-types@0.1.13 - name: check-external-types run: cargo check-external-types --all-features working-directory: tokio @@ -1051,11 +1069,11 @@ jobs: - name: Make sure dictionary words are sorted and unique run: | # `sed` removes the first line (number of words) and - # the last line (new line). - # + # the last line (new line). + # # `sort` makes sure everything in between is sorted # and contains no duplicates. - # + # # Since `sort` is sensitive to locale, we set it # using LC_ALL to en_US.UTF8 to be consistent in different # environments. diff --git a/Cargo.toml b/Cargo.toml index 2238deac7..618b310e3 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -17,3 +17,16 @@ members = [ [workspace.metadata.spellcheck] config = "spellcheck.toml" + +[workspace.lints.rust] +unexpected_cfgs = { level = "warn", check-cfg = [ + 'cfg(fuzzing)', + 'cfg(loom)', + 'cfg(mio_unsupported_force_poll_poll)', + 'cfg(tokio_allow_from_blocking_fd)', + 'cfg(tokio_internal_mt_counters)', + 'cfg(tokio_no_parking_lot)', + 'cfg(tokio_no_tuning_tests)', + 'cfg(tokio_taskdump)', + 'cfg(tokio_unstable)', +] } diff --git a/examples/Cargo.toml b/examples/Cargo.toml index a244fccac..8d42ca3d8 100644 --- a/examples/Cargo.toml +++ b/examples/Cargo.toml @@ -94,3 +94,6 @@ path = "named-pipe-multi-client.rs" [[example]] name = "dump" path = "dump.rs" + +[lints] +workspace = true diff --git a/tokio/Cargo.toml b/tokio/Cargo.toml index 13a9a8c05..bfcb55ed5 100644 --- a/tokio/Cargo.toml +++ b/tokio/Cargo.toml @@ -171,6 +171,8 @@ features = ["full", "test-util"] allowed_external_types = [ "bytes::buf::buf_impl::Buf", "bytes::buf::buf_mut::BufMut", - "tokio_macros::*", ] + +[lints] +workspace = true diff --git a/tokio/src/runtime/tests/queue.rs b/tokio/src/runtime/tests/queue.rs index f463355f0..9047f4ad7 100644 --- a/tokio/src/runtime/tests/queue.rs +++ b/tokio/src/runtime/tests/queue.rs @@ -1,5 +1,4 @@ use crate::runtime::scheduler::multi_thread::{queue, Stats}; -use crate::runtime::task::{self, Schedule, Task}; use std::cell::RefCell; use std::thread; @@ -272,15 +271,3 @@ fn stress2() { assert_eq!(num_pop, NUM_TASKS); } } - -struct Runtime; - -impl Schedule for Runtime { - fn release(&self, _task: &Task) -> Option> { - None - } - - fn schedule(&self, _task: task::Notified) { - unreachable!(); - } -}