Reputation: 11
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