-
Notifications
You must be signed in to change notification settings - Fork 115
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
Build failure traced back to old commit #105
Comments
Actually, this is due to a breaking change in |
You are a live saver 💯 |
Build fails due to a breaking change in funty (ferrilab/funty@b87325b), which ads a BITS constant that bitvec is glob importing. Version 1.1.0 of funty works fine, so as a temporary workaround, add funty = "=1.1.0" to the Cargo.toml See ferrilab/bitvec#105
It seems a transitive dependency of the project broke - bitvec - because one of its own dependencies - funty - declared a global BITS const… hence breaking the current project. According to the bitvec project, a fix may be to force funty’s version to 1.1.0. The matching issue in bitvec : ferrilab/bitvec#105
Maybe it would be a good idea to pin to minor versions of dependencies as well, since glob-imports are used in code? |
546: Fix funty to version 1.1.0 to ensure bitvec compiles r=Yatekii a=Tiwalun bitvec doesn't compile anymore, due to an update in the `funty` crate. Fixing the `funty` version to 1.1.0 is a temporary workaround for this. See ferrilab/bitvec#105. Co-authored-by: Dominik Boehi <[email protected]>
I guess the proper way would not to use glob imports at all? |
This forces the transitive dependency of "bitvec", named "funty", to 1.1.0. Rationale: ferrilab/bitvec#105 (comment) Signed-off-by: Matthias Beyer <[email protected]>
Wait, I looked into it a bit and it doesn't look like a glob import; the problem is in const BITS: u8 = mem::size_of::<Self>() as u8 * 8; But const BITS: u32; Looks like both crates seem to just be waiting on the stabilization of the First off, this won't happen if versions are pinned to at least minor version, since the semver specification allows minor versions to introduce new functionality into the public API:
This means that if you don't pin to minor versions, your dependencies could cause collisions like what just happened. Since this is a library and not a bin, it can't take advantage of a lockfile so it should ideally pin to versions as exact as possible. As for the actual problem, ultimately the decision is up to the maintainers but I think it'll be OK to depend on the The complication there would be the differences in the API ( |
See: ferrilab/bitvec#105 Signed-off-by: Sean Young <[email protected]>
can't we explicit usage of BITS in bitvec to avoid ambiguity ? #109 |
the above fix is based on 0.20, I open a fix for 0.20.1 #110 |
I completely forgot to check up on this after publishing the patch releases, which is 100% my bad. Is everyone fixed now |
With this `bitvec` patch, we no longer need to pin `funty`: ferrilab/bitvec#105
With this `bitvec` patch, we no longer need to pin `funty`: ferrilab/bitvec#105
@myrrlyn yep, thanks! |
There was a conflict between bitvec and a dependency of it (funty) that caused a build failure. See: - ferrilab/bitvec#105 - ferrilab/funty#3 Due to semver, when importing parity-scale-codec as a library adn resolving bitvec 0.20.1 dependencies, funty 0.12 is pulled, which causes the aforementioned build failure. I believe this is not happening when testing parity-scale-codec itself because Cargo.lock pins funty to 1.1.0, but when importing parity-scale-codec from another crate, this pinning is sometimes not possible. Bumping bitvec to 0.22.3 solves this issue, as it is compatible with funty 0.12.
There was a conflict between bitvec and a dependency of it (funty) that caused a build failure. See: - ferrilab/bitvec#105 - ferrilab/funty#3 Due to semver, when importing parity-scale-codec as a library and resolving bitvec 0.20.1 dependencies, funty 0.12 is pulled, which causes the aforementioned build failure. I believe this is not happening when testing parity-scale-codec itself because Cargo.lock pins funty to 1.1.0, but when importing parity-scale-codec from another crate, this pinning is sometimes not possible. Bumping bitvec to 0.22.3 solves this issue, as it is compatible with funty 0.12.
There was a conflict between bitvec and a dependency of it (funty) that caused a build failure. See: - ferrilab/bitvec#105 - ferrilab/funty#3 Due to semver, when importing parity-scale-codec as a library and resolving bitvec 0.20.1 dependencies, funty 0.12 is pulled, which causes the aforementioned build failure. I believe this is not happening when testing parity-scale-codec itself because Cargo.lock pins funty to 1.1.0, but when importing parity-scale-codec from another crate, this pinning is sometimes not possible. Bumping bitvec to 0.22.3 solves this issue, as it is compatible with funty 0.12.
There was a conflict between bitvec and a dependency of it (funty) that caused a build failure. See: - ferrilab/bitvec#105 - ferrilab/funty#3 Due to semver, when importing parity-scale-codec as a library and resolving bitvec 0.20.1 dependencies, funty 0.12 is pulled, which causes the aforementioned build failure. I believe this is not happening when testing parity-scale-codec itself because Cargo.lock pins funty to 1.1.0, but when importing parity-scale-codec from another crate, this pinning is sometimes not possible. Bumping bitvec to 0.22.3 solves this issue, as it is compatible with funty 0.12.
See ferrilab/bitvec#105 for more details.
When building bitvec from source, I'm getting a build error and after running
git bisect
I could trace it back down to this commit -> 47d6e19Here is the message I'm receiving
OS: macOS Big Sur 10.16 20C69 x86_64
cargo --version: cargo 1.36.0 (c4fcfb725 2019-05-15)
Note that I'm using Big Sur which may play a role in the cause of this error.
The text was updated successfully, but these errors were encountered: