Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Unable to build cargo project using ethers with bitvec >= 0.21.0 #502

Closed
sveitser opened this issue Oct 12, 2021 · 4 comments
Closed

Unable to build cargo project using ethers with bitvec >= 0.21.0 #502

sveitser opened this issue Oct 12, 2021 · 4 comments
Labels
bug Something isn't working

Comments

@sveitser
Copy link
Contributor

sveitser commented Oct 12, 2021

Version

└── ethers v0.5.3 (ssh://git@github.com/gakonst/ethers-rs.git#ea8551da)
    ├── ethers-contract v0.5.3 (ssh://git@github.com/gakonst/ethers-rs.git#ea8551da)
    │   ├── ethers-contract-abigen v0.5.3 (ssh://git@github.com/gakonst/ethers-rs.git#ea8551da)
    │   │   ├── ethers-core v0.5.4 (ssh://git@github.com/gakonst/ethers-rs.git#ea8551da)
    │   ├── ethers-contract-derive v0.5.3 (proc-macro) (ssh://git@github.com/gakonst/ethers-rs.git#ea8551da)
    │   │   ├── ethers-contract-abigen v0.5.3 (ssh://git@github.com/gakonst/ethers-rs.git#ea8551da) (*)
    │   │   ├── ethers-core v0.5.4 (ssh://git@github.com/gakonst/ethers-rs.git#ea8551da) (*)
    │   ├── ethers-core v0.5.4 (ssh://git@github.com/gakonst/ethers-rs.git#ea8551da) (*)
    │   ├── ethers-providers v0.5.4 (ssh://git@github.com/gakonst/ethers-rs.git#ea8551da)
    │   │   ├── ethers-core v0.5.4 (ssh://git@github.com/gakonst/ethers-rs.git#ea8551da) (*)
    ├── ethers-core v0.5.4 (ssh://git@github.com/gakonst/ethers-rs.git#ea8551da) (*)
    ├── ethers-middleware v0.5.3 (ssh://git@github.com/gakonst/ethers-rs.git#ea8551da)
    │   ├── ethers-contract v0.5.3 (ssh://git@github.com/gakonst/ethers-rs.git#ea8551da) (*)
    │   ├── ethers-core v0.5.4 (ssh://git@github.com/gakonst/ethers-rs.git#ea8551da) (*)
    │   ├── ethers-providers v0.5.4 (ssh://git@github.com/gakonst/ethers-rs.git#ea8551da) (*)
    │   ├── ethers-signers v0.5.3 (ssh://git@github.com/gakonst/ethers-rs.git#ea8551da)
    │   │   ├── ethers-core v0.5.4 (ssh://git@github.com/gakonst/ethers-rs.git#ea8551da) (*)
    ├── ethers-providers v0.5.4 (ssh://git@github.com/gakonst/ethers-rs.git#ea8551da) (*)
    └── ethers-signers v0.5.3 (ssh://git@github.com/gakonst/ethers-rs.git#ea8551da) (*)

Platform
Linux 5.10.70 #1-NixOS SMP Thu Sep 30 08:11:08 UTC 2021 x86_64 GNU/Linux

Description
Runing cargo check with the following Cargo.toml

[package]
name = "cargo-deps"
version = "0.1.0"
edition = "2018"

[dependencies]
bitvec = "=0.21.0" # i think anything >=0.21.0 breaks
ethers = { git = "ssh://git@github.com/gakonst/ethers-rs.git" }

I expected to see this happen: compiles.

Instead, this happened:

error[E0034]: multiple applicable items in scope
   --> /home/lulu/.cargo/registry/src/github.com-1ecc6299db9ec823/bitvec-0.20.1/src/field.rs:801:12
    |
801 |                     if M::BITS > T::Mem::BITS {
    |                           ^^^^ multiple `BITS` found
    |
note: candidate #1 is defined in the trait `BitMemory`
   --> /home/lulu/.cargo/registry/src/github.com-1ecc6299db9ec823/bitvec-0.20.1/src/mem.rs:44:2
    |
44  |     const BITS: u8 = mem::size_of::<Self>() as u8 * 8;
    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
note: candidate #2 is defined in the trait `IsNumber`
   --> /home/lulu/.cargo/registry/src/github.com-1ecc6299db9ec823/funty-1.2.0/src/lib.rs:144:2
    |
144 |     const BITS: u32;
    |     ^^^^^^^^^^^^^^^^
help: disambiguate the associated constant for candidate #1
    |
801 |                     if BitMemory::BITS > T::Mem::BITS {
    |                        ^^^^^^^^^^^^^^^
help: disambiguate the associated constant for candidate #2
    |
801 |                     if IsNumber::BITS > T::Mem::BITS {
    |                        ^^^^^^^^^^^^^^

(edit: the error I posted before was due to an outdated lock file, where funty=1.1.0)

Related issue #195

Cargo trees (cargo tree -p bitvec:... --invert) for bitvec.

bitvec v0.17.4
└── coins-bip39 v0.3.0
    └── ethers-signers v0.5.3 (ssh://git@github.com/gakonst/ethers-rs.git#ea8551da)
        ├── ethers v0.5.3 (ssh://git@github.com/gakonst/ethers-rs.git#ea8551da)
        │   └── cargo-deps v0.1.0 (/home/lulu/r/sveitser/cargo-deps)
        └── ethers-middleware v0.5.3 (ssh://git@github.com/gakonst/ethers-rs.git#ea8551da)
            └── ethers v0.5.3 (ssh://git@github.com/gakonst/ethers-rs.git#ea8551da) (*)
bitvec v0.20.1
└── parity-scale-codec v2.3.1
    └── impl-codec v0.5.1
        └── primitive-types v0.10.1
            └── ethereum-types v0.12.1
                └── ethabi v15.0.0
                    └── ethers-core v0.5.4 (ssh://git@github.com/gakonst/ethers-rs.git#ea8551da)
                        ├── ethers v0.5.3 (ssh://git@github.com/gakonst/ethers-rs.git#ea8551da)
                        │   └── cargo-deps v0.1.0 (/home/lulu/r/sveitser/cargo-deps)
                        ├── ethers-contract v0.5.3 (ssh://git@github.com/gakonst/ethers-rs.git#ea8551da)
                        │   ├── ethers v0.5.3 (ssh://git@github.com/gakonst/ethers-rs.git#ea8551da) (*)
                        │   └── ethers-middleware v0.5.3 (ssh://git@github.com/gakonst/ethers-rs.git#ea8551da)
                        │       └── ethers v0.5.3 (ssh://git@github.com/gakonst/ethers-rs.git#ea8551da) (*)
                        ├── ethers-contract-abigen v0.5.3 (ssh://git@github.com/gakonst/ethers-rs.git#ea8551da)
                        │   ├── ethers-contract v0.5.3 (ssh://git@github.com/gakonst/ethers-rs.git#ea8551da) (*)
                        │   └── ethers-contract-derive v0.5.3 (proc-macro) (ssh://git@github.com/gakonst/ethers-rs.git#ea8551da)
                        │       └── ethers-contract v0.5.3 (ssh://git@github.com/gakonst/ethers-rs.git#ea8551da) (*)
                        ├── ethers-contract-derive v0.5.3 (proc-macro) (ssh://git@github.com/gakonst/ethers-rs.git#ea8551da) (*)
                        ├── ethers-middleware v0.5.3 (ssh://git@github.com/gakonst/ethers-rs.git#ea8551da) (*)
                        ├── ethers-providers v0.5.4 (ssh://git@github.com/gakonst/ethers-rs.git#ea8551da)
                        │   ├── ethers v0.5.3 (ssh://git@github.com/gakonst/ethers-rs.git#ea8551da) (*)
                        │   ├── ethers-contract v0.5.3 (ssh://git@github.com/gakonst/ethers-rs.git#ea8551da) (*)
                        │   └── ethers-middleware v0.5.3 (ssh://git@github.com/gakonst/ethers-rs.git#ea8551da) (*)
                        └── ethers-signers v0.5.3 (ssh://git@github.com/gakonst/ethers-rs.git#ea8551da)
                            ├── ethers v0.5.3 (ssh://git@github.com/gakonst/ethers-rs.git#ea8551da) (*)
                            └── ethers-middleware v0.5.3 (ssh://git@github.com/gakonst/ethers-rs.git#ea8551da) (*)
bitvec v0.21.0
└── cargo-deps v0.1.0 (/home/lulu/r/sveitser/cargo-deps)
@sveitser sveitser added the bug Something isn't working label Oct 12, 2021
@sveitser
Copy link
Contributor Author

If I add funty = "=1.1.0" to Cargo.toml I get the following error instead

error[E0576]: cannot find method or associated constant `BITS` in trait `IsNumber`
   --> /home/lulu/.cargo/registry/src/github.com-1ecc6299db9ec823/bitvec-0.21.0/src/ptr/single.rs:606:36
    |
606 |             .wrapping_mul(<u8 as IsNumber>::BITS as usize)
    |                                             ^^^^ not found in `IsNumber`

@gakonst
Copy link
Owner

gakonst commented Oct 15, 2021

@prestwich you think you can take a look at upgrading your deps on coins-bip39? think it may be related.

will look into how we can get rid of the impl-codec dep on primitive-types

@sveitser
Copy link
Contributor Author

I noticed that having impl-codec with bitvec>=0.21.0 fails already, but having coins-bip39 and bitvec>=0.21.0 is fine. As in, cargo check succeeds.

@gakonst gakonst closed this as completed in a158e12 Mar 1, 2022
@gakonst
Copy link
Owner

gakonst commented Mar 1, 2022

I think this should be fixed now - could you please confirm?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

No branches or pull requests

2 participants