kbknapp/cargo-outdated

cargo-outdated gives up on combination of sys crates imported by git

pacak opened this issue · 0 comments

pacak commented

I have a big workspace where one of the crate imports a number of crates that depend on imgui-sys, something like this

implot = { version = "0.6.0", git = "https://github.com/aholtzma-am/implot-rs.git", rev = "1b98661dbde146ecec07f8a414ec59fad4c6bc69" }
implot-sys = { version = "0.6.0", git = "https://github.com/aholtzma-am/implot-rs.git", rev = "1b98661dbde146ecec07f8a414ec59fad4c6bc69" }

This results in cargo-outdated simply giving up

error: failed to select a version for `imgui-sys`.
    ... required by package `implot-sys v0.6.0 (https://github.com/aholtzma-am/implot-rs.git?rev=1b98661dbde146ecec07f8a414ec59fad4c6bc69#1b98661d)`
    ... which satisfies git dependency `implot-sys` (locked to 0.6.0) of package `implot v0.6.0 (https://github.com/aholtzma-am/implot-rs.git?rev=1b98661dbde146ecec07f8a414ec59fad4c6bc69#1b98661d)`
    ... which satisfies git dependency `implot` (locked to 0.6.0) of package `isim v0.1.0 (/tmp/cargo-outdatedrZlem0/isim)`
versions that meet the requirements `^0.9.0` are: 0.9.0

the package `imgui-sys` links to the native library `imgui`, but it conflicts with a previous package which links to `imgui` as well:
package `imgui-sys v0.11.0`
    ... which satisfies dependency `imgui-sys = "^0.11.0"` of package `imgui v0.11.0`
    ... which satisfies dependency `imgui = "^0.11.0"` of package `imgui-glow-renderer v0.11.0`
    ... which satisfies dependency `imgui-glow-renderer = "^0.11.0"` of package `imgui_backend v0.1.0 (/tmp/cargo-outdatedrZlem0/imgui_backend)`
    ... which satisfies path dependency `imgui_backend` (locked to 0.1.0) of package `isim v0.1.0 (/tmp/cargo-outdatedrZlem0/isim)`
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 ='imgui-sys' value. For more information, see https://doc.rust-lang.org/cargo/reference/resolver.html#links.

Ideally I'd like cargo-outdated to ignore crates it can't make useful suggestions about and move on. Ignoring crates listed and related with --ignore makes no difference.