From 8cab07b795dde77f0a2ec3e318857f2f6a34cb88 Mon Sep 17 00:00:00 2001 From: clabby Date: Sat, 4 Nov 2023 12:43:01 +0100 Subject: [PATCH 1/6] WIP: bin split --- Cargo.lock | 20 ++++++++++++++++++ Cargo.toml | 3 ++- Makefile | 22 +++++++++++++++++-- bin/ethereum/Cargo.toml | 34 ++++++++++++++++++++++++++++++ bin/{reth => ethereum}/src/main.rs | 0 bin/optimism/Cargo.toml | 34 ++++++++++++++++++++++++++++++ bin/optimism/src/main.rs | 11 ++++++++++ bin/reth/Cargo.toml | 2 -- 8 files changed, 121 insertions(+), 5 deletions(-) create mode 100644 bin/ethereum/Cargo.toml rename bin/{reth => ethereum}/src/main.rs (100%) create mode 100644 bin/optimism/Cargo.toml create mode 100644 bin/optimism/src/main.rs diff --git a/Cargo.lock b/Cargo.lock index 53eacc0bb4ec..037e6d808fcc 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -6014,6 +6014,16 @@ dependencies = [ "tracing", ] +[[package]] +name = "reth-ethereum" +version = "0.1.0-alpha.10" +dependencies = [ + "jemalloc-ctl", + "jemallocator", + "reth", + "vergen", +] + [[package]] name = "reth-interfaces" version = "0.1.0-alpha.10" @@ -6221,6 +6231,16 @@ dependencies = [ "zstd 0.12.4", ] +[[package]] +name = "reth-optimism" +version = "0.1.0-alpha.10" +dependencies = [ + "jemalloc-ctl", + "jemallocator", + "reth", + "vergen", +] + [[package]] name = "reth-payload-builder" version = "0.1.0-alpha.10" diff --git a/Cargo.toml b/Cargo.toml index 10ef5bf2beab..01d7c8a46881 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,8 @@ [workspace] members = [ "bin/reth", + "bin/ethereum", + "bin/optimism", "crates/config", "crates/consensus/auto-seal", "crates/consensus/beacon", @@ -54,7 +56,6 @@ members = [ "examples/beacon-api-sse", "examples/trace-transaction-cli" ] -default-members = ["bin/reth"] # Explicitly set the resolver to version 2, which is the default for packages with edition >= 2021 # https://doc.rust-lang.org/edition-guide/rust-2021/default-cargo-resolver.html diff --git a/Makefile b/Makefile index 69d34910da2c..91910c899051 100644 --- a/Makefile +++ b/Makefile @@ -42,7 +42,14 @@ help: ## Display this help. .PHONY: install install: ## Build and install the reth binary under `~/.cargo/bin`. - cargo install --path bin/reth --bin reth --force --locked \ + cargo install --path bin/reth-ethereum --bin reth --force --locked \ + --features "$(FEATURES)" \ + --profile "$(PROFILE)" \ + $(CARGO_INSTALL_EXTRA_FLAGS) + +.PHONY: install-op +install: ## Build and install the op-reth binary under `~/.cargo/bin`. + cargo install --path bin/reth-optimism --bin op-reth --force --locked \ --features "$(FEATURES)" \ --profile "$(PROFILE)" \ $(CARGO_INSTALL_EXTRA_FLAGS) @@ -105,7 +112,8 @@ build-release-tarballs: ## Create a series of `.tar.gz` files in the BIN_DIR dir ##@ Test -UNIT_TEST_ARGS := --locked --workspace --all-features -E 'kind(lib)' -E 'kind(bin)' -E 'kind(proc-macro)' +UNIT_TEST_ARGS := --locked --workspace --features 'jemalloc-prof' -E 'kind(lib)' -E 'kind(bin)' -E 'kind(proc-macro)' +UNIT_TEST_ARGS_OP := --locked --workspace --features 'jemalloc-prof,optimism' -E 'kind(lib)' -E 'kind(bin)' -E 'kind(proc-macro)' COV_FILE := lcov.info .PHONY: test-unit @@ -113,11 +121,21 @@ test-unit: ## Run unit tests. cargo install cargo-nextest --locked cargo nextest run $(UNIT_TEST_ARGS) +.PHONY: test-unit-op +test-unit-op: ## Run unit tests (with optimism feature flag enabled). + cargo install cargo-nextest --locked + cargo nextest run $(UNIT_TEST_ARGS_OP) + .PHONY: cov-unit cov-unit: ## Run unit tests with coverage. rm -f $(COV_FILE) cargo llvm-cov nextest --lcov --output-path $(COV_FILE) $(UNIT_TEST_ARGS) +.PHONY: cov-unit-op +cov-unit: ## Run unit tests with coverage. + rm -f $(COV_FILE) + cargo llvm-cov nextest --lcov --output-path $(COV_FILE) $(UNIT_TEST_ARGS_OP) + .PHONY: cov-report-html cov-report-html: cov-unit ## Generate a HTML coverage report and open it in the browser. cargo llvm-cov report --html diff --git a/bin/ethereum/Cargo.toml b/bin/ethereum/Cargo.toml new file mode 100644 index 000000000000..44d3387f5fe5 --- /dev/null +++ b/bin/ethereum/Cargo.toml @@ -0,0 +1,34 @@ +[package] +name = "reth-ethereum" +version.workspace = true +edition.workspace = true +rust-version.workspace = true +license.workspace = true +homepage.workspace = true +repository.workspace = true +description = """ +Reth node implementation (Ethereum binary) +""" + +[dependencies] +reth = { path = "../reth" } + +[target.'cfg(not(windows))'.dependencies] +jemallocator = { version = "0.5.0", optional = true } +jemalloc-ctl = { version = "0.5.0", optional = true } + +[features] +jemalloc = ["dep:jemallocator", "dep:jemalloc-ctl", "reth/jemalloc"] +jemalloc-prof = ["jemalloc", "jemallocator?/profiling"] +min-error-logs = ["reth/min-error-logs"] +min-warn-logs = ["reth/min-warn-logs"] +min-info-logs = ["reth/min-info-logs"] +min-debug-logs = ["reth/min-debug-logs"] +min-trace-logs = ["reth/min-trace-logs"] + +[build-dependencies] +vergen = { version = "8.0.0", features = ["build", "cargo", "git", "gitcl"] } + +[[bin]] +name = "reth" +path = "src/main.rs" diff --git a/bin/reth/src/main.rs b/bin/ethereum/src/main.rs similarity index 100% rename from bin/reth/src/main.rs rename to bin/ethereum/src/main.rs diff --git a/bin/optimism/Cargo.toml b/bin/optimism/Cargo.toml new file mode 100644 index 000000000000..f5649da8757e --- /dev/null +++ b/bin/optimism/Cargo.toml @@ -0,0 +1,34 @@ +[package] +name = "reth-optimism" +version.workspace = true +edition.workspace = true +rust-version.workspace = true +license.workspace = true +homepage.workspace = true +repository.workspace = true +description = """ +Reth node implementation (Ethereum binary) +""" + +[dependencies] +reth = { path = "../reth", features = ["optimism"] } + +[target.'cfg(not(windows))'.dependencies] +jemallocator = { version = "0.5.0", optional = true } +jemalloc-ctl = { version = "0.5.0", optional = true } + +[features] +jemalloc = ["dep:jemallocator", "dep:jemalloc-ctl", "reth/jemalloc"] +jemalloc-prof = ["jemalloc", "jemallocator?/profiling"] +min-error-logs = ["reth/min-error-logs"] +min-warn-logs = ["reth/min-warn-logs"] +min-info-logs = ["reth/min-info-logs"] +min-debug-logs = ["reth/min-debug-logs"] +min-trace-logs = ["reth/min-trace-logs"] + +[build-dependencies] +vergen = { version = "8.0.0", features = ["build", "cargo", "git", "gitcl"] } + +[[bin]] +name = "op-reth" +path = "src/main.rs" diff --git a/bin/optimism/src/main.rs b/bin/optimism/src/main.rs new file mode 100644 index 000000000000..220b04d9d0e7 --- /dev/null +++ b/bin/optimism/src/main.rs @@ -0,0 +1,11 @@ +// We use jemalloc for performance reasons +#[cfg(all(feature = "jemalloc", unix))] +#[global_allocator] +static ALLOC: jemallocator::Jemalloc = jemallocator::Jemalloc; + +fn main() { + if let Err(err) = reth::cli::run() { + eprintln!("Error: {err:?}"); + std::process::exit(1); + } +} diff --git a/bin/reth/Cargo.toml b/bin/reth/Cargo.toml index 74dbeb109af8..0d38aecb9464 100644 --- a/bin/reth/Cargo.toml +++ b/bin/reth/Cargo.toml @@ -132,8 +132,6 @@ optimism = [ "reth-network/optimism", "reth-network-api/optimism" ] -# no-op feature flag for switching between the `optimism` and default functionality in CI matrices -ethereum = [] [build-dependencies] vergen = { version = "8.0.0", features = ["build", "cargo", "git", "gitcl"] } From 9423c95d871e22dc715b6b328fd65b8dfe28cf0b Mon Sep 17 00:00:00 2001 From: nicolas <48695862+merklefruit@users.noreply.github.com> Date: Sat, 4 Nov 2023 13:03:31 +0100 Subject: [PATCH 2/6] wip: splitting bins --- Cargo.lock | 20 ----------- Cargo.toml | 2 -- bin/ethereum/Cargo.toml | 34 ------------------- bin/optimism/Cargo.toml | 34 ------------------- bin/reth/Cargo.toml | 9 +++++ .../src/main.rs => reth/src/ethereum.rs} | 4 +++ .../src/main.rs => reth/src/optimism.rs} | 0 7 files changed, 13 insertions(+), 90 deletions(-) delete mode 100644 bin/ethereum/Cargo.toml delete mode 100644 bin/optimism/Cargo.toml rename bin/{optimism/src/main.rs => reth/src/ethereum.rs} (72%) rename bin/{ethereum/src/main.rs => reth/src/optimism.rs} (100%) diff --git a/Cargo.lock b/Cargo.lock index 037e6d808fcc..53eacc0bb4ec 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -6014,16 +6014,6 @@ dependencies = [ "tracing", ] -[[package]] -name = "reth-ethereum" -version = "0.1.0-alpha.10" -dependencies = [ - "jemalloc-ctl", - "jemallocator", - "reth", - "vergen", -] - [[package]] name = "reth-interfaces" version = "0.1.0-alpha.10" @@ -6231,16 +6221,6 @@ dependencies = [ "zstd 0.12.4", ] -[[package]] -name = "reth-optimism" -version = "0.1.0-alpha.10" -dependencies = [ - "jemalloc-ctl", - "jemallocator", - "reth", - "vergen", -] - [[package]] name = "reth-payload-builder" version = "0.1.0-alpha.10" diff --git a/Cargo.toml b/Cargo.toml index 01d7c8a46881..04108abd1eb3 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,8 +1,6 @@ [workspace] members = [ "bin/reth", - "bin/ethereum", - "bin/optimism", "crates/config", "crates/consensus/auto-seal", "crates/consensus/beacon", diff --git a/bin/ethereum/Cargo.toml b/bin/ethereum/Cargo.toml deleted file mode 100644 index 44d3387f5fe5..000000000000 --- a/bin/ethereum/Cargo.toml +++ /dev/null @@ -1,34 +0,0 @@ -[package] -name = "reth-ethereum" -version.workspace = true -edition.workspace = true -rust-version.workspace = true -license.workspace = true -homepage.workspace = true -repository.workspace = true -description = """ -Reth node implementation (Ethereum binary) -""" - -[dependencies] -reth = { path = "../reth" } - -[target.'cfg(not(windows))'.dependencies] -jemallocator = { version = "0.5.0", optional = true } -jemalloc-ctl = { version = "0.5.0", optional = true } - -[features] -jemalloc = ["dep:jemallocator", "dep:jemalloc-ctl", "reth/jemalloc"] -jemalloc-prof = ["jemalloc", "jemallocator?/profiling"] -min-error-logs = ["reth/min-error-logs"] -min-warn-logs = ["reth/min-warn-logs"] -min-info-logs = ["reth/min-info-logs"] -min-debug-logs = ["reth/min-debug-logs"] -min-trace-logs = ["reth/min-trace-logs"] - -[build-dependencies] -vergen = { version = "8.0.0", features = ["build", "cargo", "git", "gitcl"] } - -[[bin]] -name = "reth" -path = "src/main.rs" diff --git a/bin/optimism/Cargo.toml b/bin/optimism/Cargo.toml deleted file mode 100644 index f5649da8757e..000000000000 --- a/bin/optimism/Cargo.toml +++ /dev/null @@ -1,34 +0,0 @@ -[package] -name = "reth-optimism" -version.workspace = true -edition.workspace = true -rust-version.workspace = true -license.workspace = true -homepage.workspace = true -repository.workspace = true -description = """ -Reth node implementation (Ethereum binary) -""" - -[dependencies] -reth = { path = "../reth", features = ["optimism"] } - -[target.'cfg(not(windows))'.dependencies] -jemallocator = { version = "0.5.0", optional = true } -jemalloc-ctl = { version = "0.5.0", optional = true } - -[features] -jemalloc = ["dep:jemallocator", "dep:jemalloc-ctl", "reth/jemalloc"] -jemalloc-prof = ["jemalloc", "jemallocator?/profiling"] -min-error-logs = ["reth/min-error-logs"] -min-warn-logs = ["reth/min-warn-logs"] -min-info-logs = ["reth/min-info-logs"] -min-debug-logs = ["reth/min-debug-logs"] -min-trace-logs = ["reth/min-trace-logs"] - -[build-dependencies] -vergen = { version = "8.0.0", features = ["build", "cargo", "git", "gitcl"] } - -[[bin]] -name = "op-reth" -path = "src/main.rs" diff --git a/bin/reth/Cargo.toml b/bin/reth/Cargo.toml index 0d38aecb9464..cc70f7b57dd9 100644 --- a/bin/reth/Cargo.toml +++ b/bin/reth/Cargo.toml @@ -135,3 +135,12 @@ optimism = [ [build-dependencies] vergen = { version = "8.0.0", features = ["build", "cargo", "git", "gitcl"] } + +[[bin]] +name = "reth" +path = "src/ethereum.rs" + +[[bin]] +name = "op-reth" +path = "src/optimism.rs" +required-features = ["optimism"] diff --git a/bin/optimism/src/main.rs b/bin/reth/src/ethereum.rs similarity index 72% rename from bin/optimism/src/main.rs rename to bin/reth/src/ethereum.rs index 220b04d9d0e7..afb46a3222fc 100644 --- a/bin/optimism/src/main.rs +++ b/bin/reth/src/ethereum.rs @@ -3,6 +3,10 @@ #[global_allocator] static ALLOC: jemallocator::Jemalloc = jemallocator::Jemalloc; +#[cfg(feature = "optimism")] +compile_error!("run --bin op-reth for Optimism"); + +#[cfg(not(feature = "optimism"))] fn main() { if let Err(err) = reth::cli::run() { eprintln!("Error: {err:?}"); diff --git a/bin/ethereum/src/main.rs b/bin/reth/src/optimism.rs similarity index 100% rename from bin/ethereum/src/main.rs rename to bin/reth/src/optimism.rs From 3f9b4e937980e26b3c5dadb77738f4a6a5f9892c Mon Sep 17 00:00:00 2001 From: clabby Date: Sat, 4 Nov 2023 15:09:58 +0100 Subject: [PATCH 3/6] Fixup makefile --- Cargo.toml | 1 + Makefile | 15 +++++++++++---- bin/reth/src/ethereum.rs | 2 +- bin/reth/src/optimism.rs | 4 ++++ 4 files changed, 17 insertions(+), 5 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index 04108abd1eb3..10ef5bf2beab 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -54,6 +54,7 @@ members = [ "examples/beacon-api-sse", "examples/trace-transaction-cli" ] +default-members = ["bin/reth"] # Explicitly set the resolver to version 2, which is the default for packages with edition >= 2021 # https://doc.rust-lang.org/edition-guide/rust-2021/default-cargo-resolver.html diff --git a/Makefile b/Makefile index 91910c899051..b24f56411359 100644 --- a/Makefile +++ b/Makefile @@ -42,15 +42,15 @@ help: ## Display this help. .PHONY: install install: ## Build and install the reth binary under `~/.cargo/bin`. - cargo install --path bin/reth-ethereum --bin reth --force --locked \ + cargo install --path bin/reth --bin reth --force --locked \ --features "$(FEATURES)" \ --profile "$(PROFILE)" \ $(CARGO_INSTALL_EXTRA_FLAGS) .PHONY: install-op -install: ## Build and install the op-reth binary under `~/.cargo/bin`. - cargo install --path bin/reth-optimism --bin op-reth --force --locked \ - --features "$(FEATURES)" \ +install-op: ## Build and install the op-reth binary under `~/.cargo/bin`. + cargo install --path bin/reth --bin op-reth --force --locked \ + --features "optimism,$(FEATURES)" \ --profile "$(PROFILE)" \ $(CARGO_INSTALL_EXTRA_FLAGS) @@ -58,6 +58,9 @@ install: ## Build and install the op-reth binary under `~/.cargo/bin`. build-native-%: cargo build --bin reth --target $* --features "$(FEATURES)" --profile "$(PROFILE)" +op-build-native-%: + cargo build --bin op-reth --target $* --features "optimism,$(FEATURES)" --profile "$(PROFILE)" + # The following commands use `cross` to build a cross-compile. # # These commands require that: @@ -77,6 +80,10 @@ build-%: RUSTFLAGS="-C link-arg=-lgcc -Clink-arg=-static-libgcc" \ cross build --bin reth --target $* --features "$(FEATURES)" --profile "$(PROFILE)" +op-build-%: + RUSTFLAGS="-C link-arg=-lgcc -Clink-arg=-static-libgcc" \ + cross build --bin op-reth --target $* --features "optimism,$(FEATURES)" --profile "$(PROFILE)" + # Unfortunately we can't easily use cross to build for Darwin because of licensing issues. # If we wanted to, we would need to build a custom Docker image with the SDK available. # diff --git a/bin/reth/src/ethereum.rs b/bin/reth/src/ethereum.rs index afb46a3222fc..d7c841d3827f 100644 --- a/bin/reth/src/ethereum.rs +++ b/bin/reth/src/ethereum.rs @@ -4,7 +4,7 @@ static ALLOC: jemallocator::Jemalloc = jemallocator::Jemalloc; #[cfg(feature = "optimism")] -compile_error!("run --bin op-reth for Optimism"); +compile_error!("Cannot build the `reth` binary with the `optimism` feature flag enabled. Did you mean to build `op-reth`?"); #[cfg(not(feature = "optimism"))] fn main() { diff --git a/bin/reth/src/optimism.rs b/bin/reth/src/optimism.rs index 220b04d9d0e7..554b91a3ae28 100644 --- a/bin/reth/src/optimism.rs +++ b/bin/reth/src/optimism.rs @@ -3,6 +3,10 @@ #[global_allocator] static ALLOC: jemallocator::Jemalloc = jemallocator::Jemalloc; +#[cfg(not(feature = "optimism"))] +compile_error!("Cannot build the `op-reth` binary with the `optimism` feature flag disabled. Did you mean to build `reth`?"); + +#[cfg(feature = "optimism")] fn main() { if let Err(err) = reth::cli::run() { eprintln!("Error: {err:?}"); From b53ed2cde4e5a07a37a1127502927048628e2d62 Mon Sep 17 00:00:00 2001 From: clabby Date: Sat, 4 Nov 2023 15:15:43 +0100 Subject: [PATCH 4/6] CI fix Add bin matrix --- .github/workflows/ci.yml | 9 ++++++++- .github/workflows/sanity.yml | 5 ++++- Makefile | 2 +- bin/reth/Cargo.toml | 2 ++ 4 files changed, 15 insertions(+), 3 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 3e109e6ee780..3b57080c29c3 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -13,6 +13,13 @@ jobs: name: clippy runs-on: ubuntu-latest timeout-minutes: 30 + strategy: + matrix: + include: + - binary: "reth" + network: "ethereum" + - binary: "op-reth" + network: "optimism" steps: - uses: actions/checkout@v3 - uses: dtolnay/rust-toolchain@clippy @@ -21,7 +28,7 @@ jobs: - uses: Swatinem/rust-cache@v2 with: cache-on-failure: true - - run: cargo clippy --workspace --all-targets --all-features + - run: cargo clippy --bin "${{ matrix.binary }}" --workspace --features "jemalloc,${{ matrix.network }}" env: RUSTFLAGS: -D warnings diff --git a/.github/workflows/sanity.yml b/.github/workflows/sanity.yml index a9655d0ce5f1..792d9bd8dd25 100644 --- a/.github/workflows/sanity.yml +++ b/.github/workflows/sanity.yml @@ -66,6 +66,9 @@ jobs: unused-deps: runs-on: ubuntu-latest name: unused dependencies + strategy: + matrix: + network: ["ethereum", "optimism"] steps: - name: Checkout sources uses: actions/checkout@v3 @@ -76,7 +79,7 @@ jobs: run: cargo install cargo-udeps --locked - name: Check for unused dependencies - run: cargo +nightly udeps --all-features --all-targets + run: cargo +nightly udeps --features "jemalloc,${{ matrix.network }}" - uses: JasonEtco/create-an-issue@v2 if: ${{ failure() }} diff --git a/Makefile b/Makefile index b24f56411359..fb5502821fe9 100644 --- a/Makefile +++ b/Makefile @@ -139,7 +139,7 @@ cov-unit: ## Run unit tests with coverage. cargo llvm-cov nextest --lcov --output-path $(COV_FILE) $(UNIT_TEST_ARGS) .PHONY: cov-unit-op -cov-unit: ## Run unit tests with coverage. +cov-unit-op: ## Run unit tests with coverage (with optimism feature flag enabled). rm -f $(COV_FILE) cargo llvm-cov nextest --lcov --output-path $(COV_FILE) $(UNIT_TEST_ARGS_OP) diff --git a/bin/reth/Cargo.toml b/bin/reth/Cargo.toml index cc70f7b57dd9..69b4bd0af305 100644 --- a/bin/reth/Cargo.toml +++ b/bin/reth/Cargo.toml @@ -132,6 +132,8 @@ optimism = [ "reth-network/optimism", "reth-network-api/optimism" ] +# no-op feature flag for switching between the `optimism` and default functionality in CI matrices +ethereum = [] [build-dependencies] vergen = { version = "8.0.0", features = ["build", "cargo", "git", "gitcl"] } From 93d5c20323d18c82a4b9855471c069b2af861996 Mon Sep 17 00:00:00 2001 From: clabby Date: Sat, 4 Nov 2023 17:58:54 +0100 Subject: [PATCH 5/6] Move mainnet bin file back to `main.rs` --- bin/reth/Cargo.toml | 2 +- bin/reth/src/{ethereum.rs => main.rs} | 0 2 files changed, 1 insertion(+), 1 deletion(-) rename bin/reth/src/{ethereum.rs => main.rs} (100%) diff --git a/bin/reth/Cargo.toml b/bin/reth/Cargo.toml index 69b4bd0af305..b4922b37df3a 100644 --- a/bin/reth/Cargo.toml +++ b/bin/reth/Cargo.toml @@ -140,7 +140,7 @@ vergen = { version = "8.0.0", features = ["build", "cargo", "git", "gitcl"] } [[bin]] name = "reth" -path = "src/ethereum.rs" +path = "src/main.rs" [[bin]] name = "op-reth" diff --git a/bin/reth/src/ethereum.rs b/bin/reth/src/main.rs similarity index 100% rename from bin/reth/src/ethereum.rs rename to bin/reth/src/main.rs From 7482db8643b712a2772ba26db7d3a4ebba2837b7 Mon Sep 17 00:00:00 2001 From: refcell Date: Sun, 5 Nov 2023 12:33:34 +0100 Subject: [PATCH 6/6] remove nightly --- .github/workflows/sanity.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/sanity.yml b/.github/workflows/sanity.yml index 44123260e004..9ab0b1d07973 100644 --- a/.github/workflows/sanity.yml +++ b/.github/workflows/sanity.yml @@ -22,7 +22,7 @@ jobs: - uses: dtolnay/rust-toolchain@nightly - uses: taiki-e/install-action@cargo-udeps - name: Check for unused dependencies - run: cargo +nightly udeps --features "jemalloc,${{ matrix.network }}" + run: cargo udeps --features "jemalloc,${{ matrix.network }}" - uses: JasonEtco/create-an-issue@v2 if: ${{ failure() }} env: