saynomore
saynomore

Reputation: 11

found duplicate lang item `panic_impl` the lang item is first defined in crate `std` (which `once_cell` depends on)

I'm trying to build polkadot-solochain-template with some customizations and got this error:

error[E0152]: found duplicate lang item `panic_impl`
      --> /home/viktor/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/sp-io-38.0.0/src/lib.rs:1775:1
       |
  1775 | / pub fn panic(info: &core::panic::PanicInfo) -> ! {
  1776 | |     let message = alloc::format!("{}", info);
  1777 | |     #[cfg(feature = "improved_panic_error_reporting")]
  ...    |
  1786 | | }
       | |_^
       |
       = note: the lang item is first defined in crate `std` (which `once_cell` depends on)
       = note: first definition in `std` loaded from /home/viktor/projects/polkadot-sdk-solochain-template/target/release/wbuild/solochain-template-runtime/target/wasm32-unknown-unknown/release/deps/libstd-61957e3233a6776a.rmeta
       = note: second definition in the local crate (`sp_io`)

  For more information about this error, try `rustc --explain E0152`.
  error: could not compile `sp-io` (lib) due to 1 previous error
warning: build failed, waiting for other jobs to finish...

My rustup show:

Default host: x86_64-unknown-linux-gnu
rustup home:  /home/viktor/.rustup

installed toolchains
--------------------

stable-x86_64-unknown-linux-gnu
nightly-2022-03-17-x86_64-apple-darwin
nightly-2022-03-17-x86_64-unknown-linux-gnu
nightly-2022-08-03-x86_64-unknown-linux-gnu
nightly-2022-12-19-x86_64-apple-darwin
nightly-2022-12-19-x86_64-unknown-linux-gnu
nightly-2023-01-09-x86_64-unknown-linux-gnu
nightly-2023-03-25-x86_64-unknown-linux-gnu
nightly-2024-01-08-x86_64-unknown-linux-gnu
nightly-2024-06-21-x86_64-unknown-linux-gnu
nightly-2024-08-30-x86_64-unknown-linux-gnu
nightly-x86_64-unknown-linux-gnu (default)
1.61.0-x86_64-unknown-linux-gnu
1.76.0-x86_64-unknown-linux-gnu
1.81.0-x86_64-unknown-linux-gnu
1.70-x86_64-unknown-linux-gnu

installed targets for active toolchain
--------------------------------------

wasm32-unknown-unknown
x86_64-unknown-linux-gnu

active toolchain
----------------

nightly-x86_64-unknown-linux-gnu (directory override for '/home/viktor/projects/polkadot-sdk-solochain-template')
rustc 1.85.0-nightly (7c002ff9a 2024-12-25)

I've checked my .toml files and all of my dependencies have default-features = false and included to the [std] section. Also I've added #![cfg_attr(not(feature = "std"), no_std)] to my lib.rs.

What other problem could there be? Maybe I missed something? BTW, I don't have once_cell crate in my dependencies.

Here is my top level Cargo.toml:

[workspace.package]
license = "MIT-0"
authors = ["Parity Technologies <[email protected]>"]
homepage = "https://paritytech.github.io/polkadot-sdk/"
repository = "https://github.com/paritytech/polkadot-sdk-solochain-template.git"
edition = "2021"

[workspace]
members = [
    "node",
    "pallets/template",
    "runtime",
]
resolver = "2"

[workspace.dependencies]
solochain-template-runtime = { path = "./runtime", default-features = false }
pallet-template = { path = "./pallets/template", default-features = false }

array-bytes = { version = "7.1.0", default-features = false }
clap = { version = "4.5.10", default-features = false }
log = { version = "0.4.22", default-features = false }
getrandom = { version = "0.2.15", default-features = false, features = ["js"] }
scale-info = { version = "2.11.1", default-features = false }
serde = { version = "1.0.2", default-features = false }
serde_json = { version = "1.0.127", default-features = false, features = ["alloc"] }
futures = { version = "0.3.30" }
jsonrpsee = { version = "0.24.3" }
codec = { version = "3.6.12", default-features = false, package = "parity-scale-codec" }
rand = { version = "0.8.5", default-features = false }
mmr-gadget = { version = "40.0.0", default-features = false }
subxt-signer = { version = "0.38", default-features = false }

frame-benchmarking-cli = { version = "43.0.0", default-features = false }
frame-metadata-hash-extension = { version = "0.6.0", default-features = false }
frame-system = { version = "38.0.0", default-features = false }

pallet-transaction-payment = { version = "38.0.0", default-features = false}
pallet-transaction-payment-rpc = { version = "41.0.0", default-features = false }

sc-authority-discovery = { version = "0.45.0", default-features = false }
sc-basic-authorship = { version = "0.45.0", default-features = false }
sc-cli = { version = "0.47.0", default-features = false }
sc-client-api = { version = "37.0.0", default-features = false }
sc-consensus = { version = "0.44.0", default-features = false }
sc-consensus-grandpa = { version = "0.30.0", default-features = false }
sc-consensus-slots = { version = "0.44.0", default-features = false }
sc-executor = { version = "0.40.1", default-features = false }
sc-network = { version = "0.45.0", default-features = false }
sc-network-sync = { version = "0.44.0", default-features = false }
sc-network-statement = { version = "0.27.0", default-features = false }
sc-offchain = { version = "40.0.0", default-features = false }
sc-service = { version = "0.46.0", default-features = false }
sc-statement-store = { version = "19.0.0", default-features = false }
sc-storage-monitor = { version = "0.22.0", default-features = false }
sc-sysinfo = { version = "38.0.0", default-features = false }
sc-telemetry = { version = "25.0.0", default-features = false }
sc-transaction-pool = { version = "37.0.0", default-features = false }
sc-transaction-pool-api = { version = "37.0.0", default-features = false }

sp-api = { version = "34.0.0", default-features = false}
sp-block-builder = { version = "34.0.0", default-features = false }
sp-blockchain = { version = "37.0.1", default-features = false }
sp-consensus-grandpa = { version = "21.0.0", default-features = false, features = ["serde"]  }
sp-core = { version = "34.0.0", default-features = false }
sp-inherents = { version = "34.0.0", default-features = false }
sp-io = { version = "38.0.0", default-features = false }
sp-keyring = { version = "39.0.0", default-features = false }
sp-transaction-storage-proof = { version = "34.0.0", default-features = false }
sp-runtime = { version = "39.0.0", default-features = false }
sp-timestamp = { version = "34.0.0", default-features = false }

substrate-frame-rpc-system = { version = "39.0.0", default-features = false }
substrate-build-script-utils = { version = "11.0.0", default-features = false }

frame-benchmarking = { version = "38.0.0", default-features = false }
frame-executive = { version = "38.0.0", default-features = false }
frame-support = { version = "38.0.0", default-features = false }
frame-system-benchmarking = { version = "38.0.0", default-features = false }
frame-system-rpc-runtime-api = { version = "34.0.0", default-features = false }
frame-try-runtime = { version = "0.44.0", default-features = false }

pallet-balances = { version = "39.0.0", default-features = false }
pallet-grandpa = { version = "38.0.0", default-features = false }
pallet-skip-feeless-payment = { version = "13.0.0", default-features = false }
pallet-sudo = { version = "38.0.0", default-features = false }
pallet-timestamp = { version = "37.0.0", default-features = false }
pallet-transaction-payment-rpc-runtime-api = { version = "38.0.0", default-features = false }

sp-genesis-builder = { version = "0.15.1", default-features = false}
sp-offchain = { version = "34.0.0", default-features = false }
sp-session = { version = "36.0.0", default-features = false }
sp-staking = { version = "36.0.0", default-features = false }
sp-storage = { version = "21.0.0", default-features = false }
sp-transaction-pool = { version = "34.0.0", default-features = false}
sp-version = { version = "37.0.0", default-features = false }
substrate-wasm-builder = { version = "24.0.0", default-features = false }

frame-election-provider-support = { version = "38.0.0", default-features = false }

pallet-assets = { version = "40.0.0", default-features = false }
pallet-asset-rate = { version = "17.0.0", default-features = false }
pallet-asset-conversion-tx-payment = { version = "20.0.0", default-features = false }
pallet-authority-discovery = { version = "38.0.0", default-features = false} 
pallet-authorship = { version = "38.0.0", default-features = false }
pallet-babe = { version = "38.0.0", default-features = false }
pallet-bags-list = { version = "37.0.0", default-features = false }
pallet-beefy = { version = "39.0.0", default-features = false }
pallet-beefy-mmr = { version = "39.0.0", default-features = false}
pallet-collective = { version = "38.0.0", default-features = false }
pallet-election-provider-multi-phase = { version = "37.0.0", default-features = false }
pallet-im-online = { version = "37.0.0", default-features = false}
pallet-indices = { version = "38.0.0", default-features = false }
pallet-nomination-pools = { version = "35.0.0", default-features = false }
pallet-nomination-pools-benchmarking = { version = "36.0.0", default-features = false }
pallet-nomination-pools-runtime-api = { version = "34.0.0", default-features = false }
pallet-mixnet = { version = "0.14.0", default-features = false}
pallet-mmr = { version = "38.0.0", default-features = false }
pallet-offences = { version = "37.0.0", default-features = false }
pallet-session = { version = "38.0.0", default-features = false, features = ["historical"] }
pallet-staking = { version = "38.0.0", default-features = false }
pallet-staking-reward-curve = { version = "12.0.0", default-features = false }
pallet-staking-runtime-api = { version = "24.0.0", default-features = false } 
pallet-statement = { version = "20.0.0", default-features = false }
pallet-treasury = { version = "37.0.0", default-features = false }

sp-application-crypto = { version = "38.0.0", default-features = false }
sp-authority-discovery = { version = "34.0.0", default-features = false }
sp-consensus = { version = "0.40.0", default-features = false }
sp-consensus-babe = { version = "0.40.0", default-features = false }
sp-consensus-beefy = { version = "22.0.0", default-features = false}
sp-keystore = { version = "0.40.0", default-features = false }
sp-mixnet = { version = "0.12.0", default-features = false }
sp-mmr-primitives = { version = "34.0.0", default-features = false }
sp-npos-elections = { version = "34.0.0", default-features = false }
sp-statement-store = { version = "18.0.0", default-features = false }
sp-std = { version = "14.0.0", default-features = false }

sc-chain-spec = { version = "38.0.0", default-features = false }
sc-consensus-babe = { version = "0.45.0", default-features = false }
sc-consensus-babe-rpc = { version = "0.45.0", default-features = false }
sc-consensus-beefy = { version = "24.0.0", default-features = false }
sc-consensus-beefy-rpc = { version = "24.0.0", default-features = false }
sc-consensus-grandpa-rpc = { version = "0.30.0", default-features = false }
sc-mixnet = { version = "0.15.0", default-features = false }
sc-rpc = { version = "40.0.0", default-features = false }
sc-sync-state-rpc = { version = "0.45.0", default-features = false }

staging-node-inspect = { version = "0.23.0", default-features = false }

substrate-state-trie-migration-rpc = { version = "38.0.0", default-features = false }

mmr-rpc = { version = "38.0.0", default-features = false }

[profile.release]
opt-level = 3
panic = "abort"

And here is runtime Cargo.toml:

[package]
name = "solochain-template-runtime"
description = "A solochain runtime template built with Substrate, part of Polkadot Sdk."
version = "0.1.0"
license = "Unlicense"
authors =  { workspace = true }
homepage =  { workspace = true }
repository =  { workspace = true }
edition =  { workspace = true }
publish = false

[package.metadata.docs.rs]
targets = ["x86_64-unknown-linux-gnu"]

[dependencies]
codec = { features = [
    "derive",
], workspace = true, default-features = false }
scale-info = { features = [
    "derive",
    "serde",
], workspace = true, default-features = false }
serde_json = { workspace = true, optional = true, features = ["alloc"], default-features = false }
getrandom = { workspace = true, optional = true, default-features = false }

frame-support = { workspace = true, optional = true, default-features = false }
frame-system = { workspace = true, optional = true, default-features = false }
frame-try-runtime = { optional = true, workspace = true, default-features = false }
frame-executive = { workspace = true, optional = true, default-features = false }
frame-metadata-hash-extension = { workspace = true, optional = true, default-features = false }
frame-system-rpc-runtime-api = { workspace = true, optional = true, default-features = false }
frame-benchmarking = { optional = true, workspace = true, default-features = false }
frame-system-benchmarking = { optional = true, workspace = true, default-features = false }
frame-election-provider-support = { workspace = true, optional = true, default-features = false }

pallet-balances = { workspace = true, optional = true, default-features = false }
pallet-grandpa = { workspace = true, optional = true, default-features = false }
pallet-sudo = { workspace = true, optional = true, default-features = false }
pallet-timestamp = { workspace = true, optional = true, default-features = false }
pallet-transaction-payment = { workspace = true, optional = true, default-features = false }
pallet-transaction-payment-rpc-runtime-api = { workspace = true, optional = true, default-features = false }
pallet-template = { workspace = true, optional = true, default-features = false }

sp-api = { workspace = true, optional = true, default-features = false }
sp-block-builder = { workspace = true, optional = true, default-features = false }
sp-consensus-babe = { features = ["serde"], workspace = true, optional = true, default-features = false } 
sp-npos-elections = { features = ["serde"], workspace = true, optional = true, default-features = false }
sp-mixnet = { workspace = true, optional = true, default-features = false }
sp-authority-discovery = { workspace = true, optional = true, default-features = false }
sp-consensus-grandpa = { features = ["serde"], workspace = true, optional = true, default-features = false }
sp-consensus-beefy = { workspace = true, optional = true, default-features = false }
sp-core = { features = ["serde"], workspace = true, optional = true, default-features = false }
sp-keyring = { workspace = true, optional = true, default-features = false }
sp-inherents = { workspace = true, optional = true, default-features = false }
sp-io = { workspace = true, optional = true, default-features = false }
sp-offchain = { workspace = true, optional = true, default-features = false }
sp-runtime = { features = ["serde"], workspace = true, optional = true, default-features = false }
sp-session = { workspace = true, optional = true, default-features = false }
sp-staking = { workspace = true, optional = true, default-features = false }
sp-std = { workspace = true, optional = true, default-features = false }
sp-storage = { workspace = true, optional = true, default-features = false }
sp-statement-store = { workspace = true, optional = true, default-features = false }
sp-transaction-pool = { workspace = true, optional = true, default-features = false }
sp-version = { features = ["serde"], workspace = true, optional = true, default-features = false }
sp-genesis-builder = { workspace = true, optional = true, default-features = false }

pallet-assets =  { workspace = true, optional = true, default-features = false }
pallet-asset-rate =  { workspace = true, optional = true, default-features = false }
pallet-authority-discovery=  { workspace = true, optional = true, default-features = false }
pallet-authorship =  { workspace = true, optional = true, default-features = false }
pallet-babe =  { workspace = true, optional = true, default-features = false }
pallet-bags-list = { workspace = true, optional = true, default-features = false }
pallet-beefy =  { workspace = true, optional = true, default-features = false }
pallet-beefy-mmr = { workspace = true, optional = true, default-features = false }
pallet-collective = { workspace = true, optional = true, default-features = false }
pallet-election-provider-multi-phase =  { workspace = true, optional = true, default-features = false } 
pallet-im-online = { workspace = true, optional = true, default-features = false }
pallet-indices = { workspace = true, optional = true, default-features = false }
pallet-nomination-pools = { workspace = true, optional = true, default-features = false }
pallet-nomination-pools-benchmarking = { workspace = true, optional = true, default-features = false }
pallet-nomination-pools-runtime-api = { workspace = true, optional = true, default-features = false }
pallet-mixnet = { workspace = true, optional = true, default-features = false }
pallet-mmr = { workspace = true, optional = true, default-features = false }
pallet-offences = { workspace = true, optional = true, default-features = false }
pallet-session = { workspace = true, optional = true, default-features = false }
pallet-staking = { workspace = true, optional = true, default-features = false } 
pallet-staking-runtime-api = { workspace = true, optional = true, default-features = false } 
pallet-staking-reward-curve = { workspace = true, optional = true, default-features = false }
pallet-statement = { workspace = true, optional = true, default-features = false }
pallet-treasury = { workspace = true, optional = true, default-features = false }

[build-dependencies]
substrate-wasm-builder = { optional = true, workspace = true, default-features = true }

[features]
default = [ "std" ]
std = [
    "codec/std",
    "frame-benchmarking?/std",
    "frame-executive/std",
    "frame-metadata-hash-extension/std",
    "frame-support/std",
    "frame-system-benchmarking?/std",
    "frame-system-rpc-runtime-api/std",
    "frame-system/std",
    "frame-try-runtime?/std",
    "getrandom/std",
    "pallet-asset-rate/std",
    "pallet-assets/std",
    "pallet-authority-discovery/std",
    "pallet-authorship/std",
    "pallet-babe/std",
    "pallet-bags-list/std",
    "pallet-balances/std",
    "pallet-beefy-mmr/std",
    "pallet-beefy/std",
    "pallet-collective/std",
    "pallet-election-provider-multi-phase/std",
    "pallet-grandpa/std",
    "pallet-im-online/std",
    "pallet-indices/std",
    "pallet-mixnet/std",
    "pallet-mmr/std",
    "pallet-nomination-pools-runtime-api/std",
    "pallet-nomination-pools/std",
    "pallet-offences/std",
    "pallet-session/std",
    "pallet-staking-runtime-api/std",
    "pallet-staking/std",
    "pallet-statement/std",
    "pallet-sudo/std",
    "pallet-template/std",
    "pallet-timestamp/std",
    "pallet-transaction-payment-rpc-runtime-api/std",
    "pallet-transaction-payment/std",
    "pallet-treasury/std",
    "scale-info/std",
    "serde_json/std",
    "sp-api/std",
    "sp-authority-discovery/std",
    "sp-block-builder/std",
    "sp-consensus-babe/std",
    "sp-consensus-beefy/std",
    "sp-consensus-grandpa/std",
    "sp-core/std",
    "sp-genesis-builder/std",
    "sp-inherents/std",
    "sp-io/std",
    "sp-keyring/std",
    "sp-mixnet/std",
    "sp-npos-elections/std",
    "sp-offchain/std",
    "sp-runtime/std",
    "sp-session/std",
    "sp-staking/std",
    "sp-statement-store/std",
    "sp-std/std",
    "sp-storage/std",
    "sp-transaction-pool/std",
    "sp-version/std",
    "substrate-wasm-builder",
]

runtime-benchmarks = [
    "frame-benchmarking/runtime-benchmarks",
    "frame-support/runtime-benchmarks",
    "frame-system-benchmarking/runtime-benchmarks",
    "frame-system/runtime-benchmarks",
    "pallet-balances/runtime-benchmarks",
    "pallet-grandpa/runtime-benchmarks",
    "pallet-sudo/runtime-benchmarks",
    "pallet-template/runtime-benchmarks",
    "pallet-timestamp/runtime-benchmarks",
    "sp-runtime/runtime-benchmarks",
]

try-runtime = [
    "frame-executive/try-runtime",
    "frame-support/try-runtime",
    "frame-system/try-runtime",
    "frame-try-runtime/try-runtime",
    "pallet-balances/try-runtime",
    "pallet-grandpa/try-runtime",
    "pallet-sudo/try-runtime",
    "pallet-template/try-runtime",
    "pallet-timestamp/try-runtime",
    "pallet-transaction-payment/try-runtime",
    "sp-runtime/try-runtime",
]

# Enable the metadata hash generation.
#
# This is hidden behind a feature because it increases the compile time.
# The wasm binary needs to be compiled twice, once to fetch the metadata,
# generate the metadata hash and then a second time with the
# `RUNTIME_METADATA_HASH` environment variable set for the `CheckMetadataHash`
# extension.
metadata-hash = [ "substrate-wasm-builder/metadata-hash" ]

# A convenience feature for enabling things when doing a build
# for an on-chain release.
on-chain-release-build = [ "metadata-hash", "sp-api/disable-logging" ]

Upvotes: 1

Views: 99

Answers (0)

Related Questions