polkadot-evm/frontier

How to import `pallet-evm` & `pallet-ethereum` with default-features disabled.

Opened this issue · 4 comments

Question

I am trying to import pallet-evm & pallet-ethereum as below.

pallet-evm = { git = "https://github.com/polkadot-evm/frontier", default-features = false, branch = "polkadot-v1.11.0"}
pallet-ethereum = { git = "https://github.com/polkadot-evm/frontier", default-features = false, branch = "polkadot-v1.11.0"}

But it seems that even after setting default-features=false. It still pulls the underlying dependecies, example sp-io, frame-support etc. Which are already declared in my toml file with version v1.15.0.

I see in Cargo.lock that 2 names of packages exist, one of which is coming from here.

How to disable such flow?

Thanks.!

You'd better not mix the dependencies in your repo, whether using GitHub branches or crate versions. I suggest changing all of them to GitHub branches, as I have never tested the crate versions yet.

@boundless-forest Those are coming from Github branch of polkadot-sdk, not importing crates directly.

Many packages which are dependencies of pallet-evm are getting loaded again.

Example:

  error[E0152]: duplicate lang item in crate `sp_io` (which `frame_support` depends on): `panic_impl`.
    |
    = note: the lang item is first defined in crate `sp_io` (which `sp_application_crypto` depends on)
    = note: first definition in `sp_io` loaded from /Users/vatsa/cord/target/release/wbuild/cord-braid-runtime/target/wasm32-unknown-unknown/release/deps/libsp_io-2ab5cbca6b12f779.rmeta
    = note: second definition in `sp_io` loaded from /Users/vatsa/cord/target/release/wbuild/cord-braid-runtime/target/wasm32-unknown-unknown/release/deps/libsp_io-f6db557f37b91e30.rmeta
    ```

Would you be willing to share your code base? It's difficult to identify the issue based on the information provided above.

@boundless-forest
https://github.com/dhiway/cord is the substrate based chain for which I am building Ethereum capability.
It is based on polkadot-v1.15.0 for all.

I have added below into root Cargo.toml

pallet-evm = { git = "https://github.com/polkadot-evm/frontier", default-features = false, branch = "polkadot-v1.11.0"}
pallet-ethereum = { git = "https://github.com/polkadot-evm/frontier", default-features = false, branch = "polkadot-v1.11.0"}

Then below into runtime's Cargo.toml dependencies and into std.

pallet-evm = { workspace = true, optional = true }
pallet-ethereum = { workspace = true, optional = true }

But not able to compile.