kbknapp / cargo-outdated

A cargo subcommand for displaying when Rust dependencies are out of date
MIT License
1.2k stars 94 forks source link

Breaks with zstd 0.11/0.10 #315

Open kpcyrd opened 2 years ago

kpcyrd commented 2 years ago

cargo outdated fails with an error due to zstd, not showing any other crates that might be outdated:

% cargo outdated
error: failed to select a version for `zstd-sys`.
    ... required by package `zstd-safe v4.1.4+zstd.1.5.2`
    ... which satisfies dependency `zstd-safe = "=4.1.4"` of package `zstd v0.10.0+zstd.1.5.2`
    ... which satisfies dependency `zstd = "^0.10"` of package `actix-http v3.0.0`
    ... which satisfies dependency `actix-http = "^3.0.0"` of package `actix-web v4.0.1`
    ... which satisfies dependency `actix-web = "^4.0.1"` of package `rebuilderd v0.18.1 (/tmp/cargo-outdatedB05xTd/daemon)`
    ... which satisfies path dependency `rebuilderd` (locked to 0.18.1) of package `rebuilderd-tests v0.18.1 (/tmp/cargo-outdatedB05xTd/tests)`
versions that meet the requirements `=1.6.3` are: 1.6.3+zstd.1.5.2

the package `zstd-sys` links to the native library `zstd`, but it conflicts with a previous package which links to `zstd` as well:
package `zstd-sys v2.0.1+zstd.1.5.2`
    ... which satisfies dependency `zstd-sys = "=2.0.1"` of package `zstd-safe v5.0.1+zstd.1.5.2`
    ... which satisfies dependency `zstd-safe = "=5.0.1"` of package `zstd v0.11.1+zstd.1.5.2`
    ... which satisfies dependency `zstd = "^0.11.1"` of package `rebuildctl v0.18.1 (/tmp/cargo-outdatedB05xTd/tools)`
Only one package in the dependency graph may specify the same links value. This helps ensure that only one copy of a native library is linked in the final binary. Try to adjust your dependencies so that only one package uses the links ='zstd-sys' value. For more information, see https://doc.rust-lang.org/cargo/reference/resolver.html#links.

failed to select a version for `zstd-sys` which could resolve this conflict
pacak commented 2 years ago

Same problem with other dependencies. I think safe approach here would be to complain about the dependency it can't satisfy and stick to using the current one and report remaining issues as usual.

qrilka commented 2 years ago

320 is probably a duplicate