From 0cefdb124dc1f1591553de2425fdebfd25741a3b Mon Sep 17 00:00:00 2001 From: Taiki Endo Date: Wed, 9 Dec 2020 23:11:55 +0900 Subject: [PATCH 1/9] Test i686-unknown-linux-gnu on CI --- .github/workflows/ci.yml | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index f7a7e96d6..378b43bd2 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -49,6 +49,30 @@ jobs: - name: Test run: ./ci/${{ matrix.crates }}.sh + # Test crates on non x86_64 architectures. + cross: + strategy: + matrix: + crates: + - crossbeam + - crossbeam-channel + - crossbeam-deque + - crossbeam-epoch + - crossbeam-queue + - crossbeam-skiplist + - crossbeam-utils + target: + - i686-unknown-linux-gnu + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + - name: Install Rust + run: rustup update stable && rustup default stable + - name: Install cross + run: cargo install cross + - name: Test + run: cross test --package ${{ matrix.crates }} --target ${{ matrix.target }} + # Check all feature combinations works properly. features: name: features @@ -127,6 +151,7 @@ jobs: if: github.event_name == 'push' && success() needs: - test + - cross - features - dependencies - rustfmt From 050fad316f37565532bbda8e2c2282f7cda2081e Mon Sep 17 00:00:00 2001 From: Taiki Endo Date: Thu, 10 Dec 2020 10:47:09 +0900 Subject: [PATCH 2/9] Test aarch64-unknown-linux-gnu on CI --- .github/workflows/ci.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 378b43bd2..f25a87e62 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -63,6 +63,7 @@ jobs: - crossbeam-utils target: - i686-unknown-linux-gnu + - aarch64-unknown-linux-gnu runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 From a9a6f75538f3332b283f4e4ca5b1c8767b651c05 Mon Sep 17 00:00:00 2001 From: Taiki Endo Date: Thu, 10 Dec 2020 11:09:49 +0900 Subject: [PATCH 3/9] Test all crates at once in cross tests --- .github/workflows/ci.yml | 14 +++----------- ci/cross.sh | 8 ++++++++ 2 files changed, 11 insertions(+), 11 deletions(-) create mode 100755 ci/cross.sh diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index f25a87e62..b5d6115cf 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -51,16 +51,10 @@ jobs: # Test crates on non x86_64 architectures. cross: + env: + TARGET: ${{ matrix.target }} strategy: matrix: - crates: - - crossbeam - - crossbeam-channel - - crossbeam-deque - - crossbeam-epoch - - crossbeam-queue - - crossbeam-skiplist - - crossbeam-utils target: - i686-unknown-linux-gnu - aarch64-unknown-linux-gnu @@ -69,10 +63,8 @@ jobs: - uses: actions/checkout@v2 - name: Install Rust run: rustup update stable && rustup default stable - - name: Install cross - run: cargo install cross - name: Test - run: cross test --package ${{ matrix.crates }} --target ${{ matrix.target }} + run: ./ci/cross.sh # Check all feature combinations works properly. features: diff --git a/ci/cross.sh b/ci/cross.sh new file mode 100755 index 000000000..7034c8661 --- /dev/null +++ b/ci/cross.sh @@ -0,0 +1,8 @@ +#!/bin/bash + +cd "$(dirname "$0")"/.. +set -ex + +cargo install cross + +cross test --target "$TARGET" --all --exclude benchmarks From d6ab29788b129b37aad0f6e7a18580d1df7274cd Mon Sep 17 00:00:00 2001 From: Taiki Endo Date: Mon, 4 Jan 2021 20:10:39 +0900 Subject: [PATCH 4/9] Test all crates at once --- .github/workflows/ci.yml | 51 ++++++++++++++-------------------------- ci/cross.sh | 8 ------- ci/crossbeam-channel.sh | 17 -------------- ci/crossbeam-deque.sh | 13 ---------- ci/crossbeam-epoch.sh | 25 -------------------- ci/crossbeam-queue.sh | 13 ---------- ci/crossbeam-skiplist.sh | 15 ------------ ci/crossbeam-utils.sh | 15 ------------ ci/crossbeam.sh | 15 ------------ ci/test.sh | 49 ++++++++++++++++++++++++++++++++++++++ 10 files changed, 66 insertions(+), 155 deletions(-) delete mode 100755 ci/cross.sh delete mode 100755 ci/crossbeam-channel.sh delete mode 100755 ci/crossbeam-deque.sh delete mode 100755 ci/crossbeam-epoch.sh delete mode 100755 ci/crossbeam-queue.sh delete mode 100755 ci/crossbeam-skiplist.sh delete mode 100755 ci/crossbeam-utils.sh delete mode 100755 ci/crossbeam.sh create mode 100755 ci/test.sh diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index b5d6115cf..347e97a04 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -24,47 +24,31 @@ jobs: name: test env: RUST_VERSION: ${{ matrix.rust }} + TARGET: ${{ matrix.target }} strategy: matrix: - crates: - - crossbeam - - crossbeam-channel - - crossbeam-deque - - crossbeam-epoch - - crossbeam-queue - - crossbeam-skiplist - - crossbeam-utils - rust: - - 1.36.0 - - nightly - os: - - ubuntu-latest - - windows-latest - runs-on: ${{ matrix.os }} + include: + - rust: 1.36.0 + - rust: 1.36.0 + os: windows-latest + - rust: nightly + # TODO: https://github.com/crossbeam-rs/crossbeam/pull/518#issuecomment-633342606 + # - rust: nightly + # os: macos-latest + - rust: nightly + os: windows-latest + - rust: nightly + target: i686-unknown-linux-gnu + - rust: nightly + target: aarch64-unknown-linux-gnu + runs-on: ${{ matrix.os || 'ubuntu-latest' }} steps: - uses: actions/checkout@v2 - name: Install Rust # --no-self-update is necessary because the windows environment cannot self-update rustup.exe. run: rustup update ${{ matrix.rust }} --no-self-update && rustup default ${{ matrix.rust }} - name: Test - run: ./ci/${{ matrix.crates }}.sh - - # Test crates on non x86_64 architectures. - cross: - env: - TARGET: ${{ matrix.target }} - strategy: - matrix: - target: - - i686-unknown-linux-gnu - - aarch64-unknown-linux-gnu - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v2 - - name: Install Rust - run: rustup update stable && rustup default stable - - name: Test - run: ./ci/cross.sh + run: ./ci/test.sh # Check all feature combinations works properly. features: @@ -144,7 +128,6 @@ jobs: if: github.event_name == 'push' && success() needs: - test - - cross - features - dependencies - rustfmt diff --git a/ci/cross.sh b/ci/cross.sh deleted file mode 100755 index 7034c8661..000000000 --- a/ci/cross.sh +++ /dev/null @@ -1,8 +0,0 @@ -#!/bin/bash - -cd "$(dirname "$0")"/.. -set -ex - -cargo install cross - -cross test --target "$TARGET" --all --exclude benchmarks diff --git a/ci/crossbeam-channel.sh b/ci/crossbeam-channel.sh deleted file mode 100755 index 3482365d0..000000000 --- a/ci/crossbeam-channel.sh +++ /dev/null @@ -1,17 +0,0 @@ -#!/bin/bash - -cd "$(dirname "$0")"/../crossbeam-channel -set -ex - -export RUSTFLAGS="-D warnings" - -cargo check --bins --examples --tests -cargo test -- --test-threads=1 - -if [[ "$RUST_VERSION" == "nightly"* ]]; then - cd benchmarks - cargo check --bins - cd .. - - RUSTDOCFLAGS=-Dwarnings cargo doc --no-deps --all-features -fi diff --git a/ci/crossbeam-deque.sh b/ci/crossbeam-deque.sh deleted file mode 100755 index fb53ab88c..000000000 --- a/ci/crossbeam-deque.sh +++ /dev/null @@ -1,13 +0,0 @@ -#!/bin/bash - -cd "$(dirname "$0")"/../crossbeam-deque -set -ex - -export RUSTFLAGS="-D warnings" - -cargo check --bins --examples --tests -cargo test - -if [[ "$RUST_VERSION" == "nightly"* ]]; then - RUSTDOCFLAGS=-Dwarnings cargo doc --no-deps --all-features -fi diff --git a/ci/crossbeam-epoch.sh b/ci/crossbeam-epoch.sh deleted file mode 100755 index 995f81c0d..000000000 --- a/ci/crossbeam-epoch.sh +++ /dev/null @@ -1,25 +0,0 @@ -#!/bin/bash - -cd "$(dirname "$0")"/../crossbeam-epoch -set -ex - -export RUSTFLAGS="-D warnings" - -cargo check --bins --examples --tests -cargo test - -if [[ "$RUST_VERSION" == "nightly"* ]]; then - cargo test --features nightly - - RUSTDOCFLAGS=-Dwarnings cargo doc --no-deps --all-features - - if [[ "$OSTYPE" == "linux"* ]]; then - ASAN_OPTIONS="detect_odr_violation=0 detect_leaks=0" \ - RUSTFLAGS="-Z sanitizer=address" \ - cargo run \ - --release \ - --target x86_64-unknown-linux-gnu \ - --features sanitize,nightly \ - --example sanitize - fi -fi diff --git a/ci/crossbeam-queue.sh b/ci/crossbeam-queue.sh deleted file mode 100755 index b15303b5b..000000000 --- a/ci/crossbeam-queue.sh +++ /dev/null @@ -1,13 +0,0 @@ -#!/bin/bash - -cd "$(dirname "$0")"/../crossbeam-queue -set -ex - -export RUSTFLAGS="-D warnings" - -cargo check --bins --examples --tests -cargo test - -if [[ "$RUST_VERSION" == "nightly"* ]]; then - RUSTDOCFLAGS=-Dwarnings cargo doc --no-deps --all-features -fi diff --git a/ci/crossbeam-skiplist.sh b/ci/crossbeam-skiplist.sh deleted file mode 100755 index 3928d42e4..000000000 --- a/ci/crossbeam-skiplist.sh +++ /dev/null @@ -1,15 +0,0 @@ -#!/bin/bash - -cd "$(dirname "$0")"/../crossbeam-skiplist -set -ex - -export RUSTFLAGS="-D warnings" - -cargo check --bins --examples --tests -cargo test - -if [[ "$RUST_VERSION" == "nightly"* ]]; then - cargo test --features nightly - - RUSTDOCFLAGS=-Dwarnings cargo doc --no-deps --all-features -fi diff --git a/ci/crossbeam-utils.sh b/ci/crossbeam-utils.sh deleted file mode 100755 index 4879687de..000000000 --- a/ci/crossbeam-utils.sh +++ /dev/null @@ -1,15 +0,0 @@ -#!/bin/bash - -cd "$(dirname "$0")"/../crossbeam-utils -set -ex - -export RUSTFLAGS="-D warnings" - -cargo check --bins --examples --tests -cargo test - -if [[ "$RUST_VERSION" == "nightly"* ]]; then - cargo test --features nightly - - RUSTDOCFLAGS=-Dwarnings cargo doc --no-deps --all-features -fi diff --git a/ci/crossbeam.sh b/ci/crossbeam.sh deleted file mode 100755 index 99d4483bd..000000000 --- a/ci/crossbeam.sh +++ /dev/null @@ -1,15 +0,0 @@ -#!/bin/bash - -cd "$(dirname "$0")"/.. -set -ex - -export RUSTFLAGS="-D warnings" - -cargo check --bins --examples --tests -cargo test - -if [[ "$RUST_VERSION" == "nightly"* ]]; then - cargo test --features nightly - - RUSTDOCFLAGS=-Dwarnings cargo doc --no-deps --all-features -fi diff --git a/ci/test.sh b/ci/test.sh new file mode 100755 index 000000000..3994d05f0 --- /dev/null +++ b/ci/test.sh @@ -0,0 +1,49 @@ +#!/bin/bash + +cd "$(dirname "$0")"/.. +set -ex + +export RUSTFLAGS="-D warnings" + +if [[ -n "$TARGET" ]]; then + # If TARGET is specified, use cross for testing. + cargo install cross + cross test --all --target "$TARGET" --exclude benchmarks + + # For now, the non-host target only runs tests. + exit 0 +fi + +# Otherwise, run tests and checks with the host target. +cargo check --all --bins --examples --tests --exclude benchmarks +cargo test --all --exclude benchmarks -- --test-threads=1 + +if [[ "$RUST_VERSION" == "nightly"* ]]; then + # Some crates have `nightly` feature, so run tests with --all-features. + cargo test --all --all-features --exclude benchmarks -- --test-threads=1 + + RUSTDOCFLAGS="-D warnings" cargo doc --no-deps --all --all-features + + # Benchmarks are only checked on nightly because depending on unstable features. + cargo check --all --benches + cd crossbeam-channel/benchmarks + cargo check --bins + cd .. + + # Run address sanitizer on crossbeam-epoch + # Note: this will be significantly rewritten by https://github.com/crossbeam-rs/crossbeam/pull/591. + if [[ "$OSTYPE" == "linux"* ]]; then + cd crossbeam-epoch + cargo clean + + ASAN_OPTIONS="detect_odr_violation=0 detect_leaks=0" \ + RUSTFLAGS="-Z sanitizer=address" \ + cargo run \ + --release \ + --target x86_64-unknown-linux-gnu \ + --features sanitize,nightly \ + --example sanitize + + cd .. + fi +fi From dcdf02b5d1beb6eb2398b506fb44c638dd45b65f Mon Sep 17 00:00:00 2001 From: Taiki Endo Date: Mon, 4 Jan 2021 20:37:32 +0900 Subject: [PATCH 5/9] Replace sanitize feature with cfg(crossbeam_sanitize) Feature flag can be accidentally enabled by --all-features, so use cfg instead. --- ci/crossbeam-epoch-loom.sh | 4 ++-- ci/test.sh | 9 ++++++--- crossbeam-epoch/Cargo.toml | 3 --- crossbeam-epoch/src/internal.rs | 10 +++++----- 4 files changed, 13 insertions(+), 13 deletions(-) diff --git a/ci/crossbeam-epoch-loom.sh b/ci/crossbeam-epoch-loom.sh index 8cb393e29..d1534a8ac 100755 --- a/ci/crossbeam-epoch-loom.sh +++ b/ci/crossbeam-epoch-loom.sh @@ -3,9 +3,9 @@ cd "$(dirname "$0")"/../crossbeam-epoch set -ex -export RUSTFLAGS="-D warnings --cfg=loom_crossbeam" +export RUSTFLAGS="-D warnings --cfg loom_crossbeam --cfg crossbeam_sanitize" # With MAX_PREEMPTIONS=2 the loom tests (currently) take around 11m. # If we were to run with =3, they would take several times that, # which is probably too costly for CI. -env LOOM_MAX_PREEMPTIONS=2 cargo test --test loom --features sanitize --release -- --nocapture +env LOOM_MAX_PREEMPTIONS=2 cargo test --test loom --release -- --nocapture diff --git a/ci/test.sh b/ci/test.sh index 3994d05f0..8f2075f79 100755 --- a/ci/test.sh +++ b/ci/test.sh @@ -28,7 +28,7 @@ if [[ "$RUST_VERSION" == "nightly"* ]]; then cargo check --all --benches cd crossbeam-channel/benchmarks cargo check --bins - cd .. + cd ../.. # Run address sanitizer on crossbeam-epoch # Note: this will be significantly rewritten by https://github.com/crossbeam-rs/crossbeam/pull/591. @@ -36,12 +36,15 @@ if [[ "$RUST_VERSION" == "nightly"* ]]; then cd crossbeam-epoch cargo clean + # TODO: Once `cfg(sanitize = "..")` is stable, replace + # `cfg(crossbeam_sanitize)` with `cfg(sanitize = "..")` and remove + # `--cfg crossbeam_sanitize`. ASAN_OPTIONS="detect_odr_violation=0 detect_leaks=0" \ - RUSTFLAGS="-Z sanitizer=address" \ + RUSTFLAGS="-Z sanitizer=address --cfg crossbeam_sanitize" \ cargo run \ --release \ --target x86_64-unknown-linux-gnu \ - --features sanitize,nightly \ + --features nightly \ --example sanitize cd .. diff --git a/crossbeam-epoch/Cargo.toml b/crossbeam-epoch/Cargo.toml index a0091612f..e24ac8738 100644 --- a/crossbeam-epoch/Cargo.toml +++ b/crossbeam-epoch/Cargo.toml @@ -33,9 +33,6 @@ alloc = [] # of crossbeam may make breaking changes to them at any time. nightly = ["crossbeam-utils/nightly", "const_fn"] -# TODO: docs -sanitize = [] # Makes it more likely to trigger any potential data races. - [dependencies] cfg-if = "1" const_fn = { version = "0.4.4", optional = true } diff --git a/crossbeam-epoch/src/internal.rs b/crossbeam-epoch/src/internal.rs index 6ad5b2236..4da5d0268 100644 --- a/crossbeam-epoch/src/internal.rs +++ b/crossbeam-epoch/src/internal.rs @@ -55,9 +55,9 @@ use crate::sync::list::{Entry, IsElement, IterError, List}; use crate::sync::queue::Queue; /// Maximum number of objects a bag can contain. -#[cfg(not(feature = "sanitize"))] +#[cfg(not(crossbeam_sanitize))] const MAX_OBJECTS: usize = 62; -#[cfg(feature = "sanitize")] +#[cfg(crossbeam_sanitize)] const MAX_OBJECTS: usize = 4; /// A bag of deferred functions. @@ -109,7 +109,7 @@ impl Default for Bag { #[rustfmt::skip] fn default() -> Self { // TODO: [no_op; MAX_OBJECTS] syntax blocked by https://github.com/rust-lang/rust/issues/49147 - #[cfg(not(feature = "sanitize"))] + #[cfg(not(crossbeam_sanitize))] return Bag { len: 0, deferreds: [ @@ -177,7 +177,7 @@ impl Default for Bag { Deferred::new(no_op_func), ], }; - #[cfg(feature = "sanitize")] + #[cfg(crossbeam_sanitize)] return Bag { len: 0, deferreds: [ @@ -278,7 +278,7 @@ impl Global { pub(crate) fn collect(&self, guard: &Guard) { let global_epoch = self.try_advance(guard); - let steps = if cfg!(feature = "sanitize") { + let steps = if cfg!(crossbeam_sanitize) { usize::max_value() } else { Self::COLLECT_STEPS From 3bdfdef02e3d21a5acb833457fc7581305354517 Mon Sep 17 00:00:00 2001 From: Taiki Endo Date: Mon, 4 Jan 2021 21:30:44 +0900 Subject: [PATCH 6/9] Separate check for docs into its own job --- .github/workflows/ci.yml | 12 ++++++++++++ ci/docs.sh | 8 ++++++++ ci/test.sh | 2 -- 3 files changed, 20 insertions(+), 2 deletions(-) create mode 100755 ci/docs.sh diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 347e97a04..a9fac3f6b 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -117,6 +117,17 @@ jobs: - name: loom run: ./ci/crossbeam-epoch-loom.sh + # Check if the document can be generated without warning. + docs: + name: docs + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + - name: Install Rust + run: rustup update nightly && rustup default nightly + - name: docs + run: ./ci/docs.sh + # This job doesn't actually test anything, but they're used to tell bors the # build completed, as there is no practical way to detect when a workflow is # successful listening to webhooks only. @@ -133,6 +144,7 @@ jobs: - rustfmt - clippy - loom + - docs runs-on: ubuntu-latest steps: - name: Mark the job as a success diff --git a/ci/docs.sh b/ci/docs.sh new file mode 100755 index 000000000..7cd5c4df7 --- /dev/null +++ b/ci/docs.sh @@ -0,0 +1,8 @@ +#!/bin/bash + +cd "$(dirname "$0")"/.. +set -ex + +export RUSTDOCFLAGS="-D warnings" + +cargo doc --no-deps --all --all-features diff --git a/ci/test.sh b/ci/test.sh index 8f2075f79..a08d4c4a1 100755 --- a/ci/test.sh +++ b/ci/test.sh @@ -22,8 +22,6 @@ if [[ "$RUST_VERSION" == "nightly"* ]]; then # Some crates have `nightly` feature, so run tests with --all-features. cargo test --all --all-features --exclude benchmarks -- --test-threads=1 - RUSTDOCFLAGS="-D warnings" cargo doc --no-deps --all --all-features - # Benchmarks are only checked on nightly because depending on unstable features. cargo check --all --benches cd crossbeam-channel/benchmarks From 5bf6990fdb7a1a6b269a0a4ed9d189d61f4fcda0 Mon Sep 17 00:00:00 2001 From: Taiki Endo Date: Mon, 4 Jan 2021 23:06:07 +0900 Subject: [PATCH 7/9] Always set matrix.os --- .github/workflows/ci.yml | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index a9fac3f6b..0c5ab99fd 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -29,19 +29,23 @@ jobs: matrix: include: - rust: 1.36.0 + os: ubuntu-latest - rust: 1.36.0 os: windows-latest - rust: nightly + os: ubuntu-latest # TODO: https://github.com/crossbeam-rs/crossbeam/pull/518#issuecomment-633342606 # - rust: nightly # os: macos-latest - rust: nightly os: windows-latest - rust: nightly + os: ubuntu-latest target: i686-unknown-linux-gnu - rust: nightly + os: ubuntu-latest target: aarch64-unknown-linux-gnu - runs-on: ${{ matrix.os || 'ubuntu-latest' }} + runs-on: ${{ matrix.os }} steps: - uses: actions/checkout@v2 - name: Install Rust From df8d2c59e9fcd93125e1e143e69025ac71ae3a8a Mon Sep 17 00:00:00 2001 From: Taiki Endo Date: Mon, 4 Jan 2021 23:07:13 +0900 Subject: [PATCH 8/9] Run test on latest stable Rust --- .github/workflows/ci.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 0c5ab99fd..89a651798 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -32,6 +32,10 @@ jobs: os: ubuntu-latest - rust: 1.36.0 os: windows-latest + - rust: stable + os: ubuntu-latest + - rust: stable + os: windows-latest - rust: nightly os: ubuntu-latest # TODO: https://github.com/crossbeam-rs/crossbeam/pull/518#issuecomment-633342606 From 09dc7248e91bcea7319b13374da467daf149861f Mon Sep 17 00:00:00 2001 From: Taiki Endo Date: Mon, 4 Jan 2021 23:09:05 +0900 Subject: [PATCH 9/9] Use --manifest-path instead of cd --- ci/test.sh | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/ci/test.sh b/ci/test.sh index a08d4c4a1..fe14ee846 100755 --- a/ci/test.sh +++ b/ci/test.sh @@ -24,14 +24,11 @@ if [[ "$RUST_VERSION" == "nightly"* ]]; then # Benchmarks are only checked on nightly because depending on unstable features. cargo check --all --benches - cd crossbeam-channel/benchmarks - cargo check --bins - cd ../.. + cargo check --bins --manifest-path crossbeam-channel/benchmarks/Cargo.toml # Run address sanitizer on crossbeam-epoch # Note: this will be significantly rewritten by https://github.com/crossbeam-rs/crossbeam/pull/591. if [[ "$OSTYPE" == "linux"* ]]; then - cd crossbeam-epoch cargo clean # TODO: Once `cfg(sanitize = "..")` is stable, replace @@ -43,8 +40,7 @@ if [[ "$RUST_VERSION" == "nightly"* ]]; then --release \ --target x86_64-unknown-linux-gnu \ --features nightly \ - --example sanitize - - cd .. + --example sanitize \ + --manifest-path crossbeam-epoch/Cargo.toml fi fi