dylint icon indicating copy to clipboard operation
dylint copied to clipboard

Issues after upgrading: cannot satisfy dependencies so <dependency> only shows up once

Open SuperFluffy opened this issue 1 year ago • 3 comments

I have used cargo dylint upgrade to go from dylint 2.6.1 to 3.1.2 and clippy-utils ac4c2094a6030530661bee3876e0228ddfeb6b8b to a95afe2d0a2051d97b723b0b197393b7811bc4e4. I have also used cargo intall cargo-dylint dylint-link to upgrade these binaries.

After doing so I am no longer able to compile my lints from my workspace root nor from within the lint crate directory.

Here is an excerpt of the output of my CI (see for the full thing https://github.com/astriaorg/astria/actions/runs/10940685186/job/30373647540?pr=1523#step:7:97):

Running `cargo dylint --all --workspace` in CI (ubuntu 2204)
error: cannot satisfy dependencies so `rustc_driver` only shows up once
  |
  = help: having upstream crates all available in one format will likely make this go away
  = note: `rustc_driver` was unavailable as a static crate, preventing fully static linking
  = help: `feature(rustc_private)` is needed to link to the compiler's `rustc_driver` library

error: cannot satisfy dependencies so `core` only shows up once
  |
  = help: having upstream crates all available in one format will likely make this go away
  = help: `feature(rustc_private)` is needed to link to the compiler's `rustc_driver` library

error: cannot satisfy dependencies so `compiler_builtins` only shows up once
  |
  = help: having upstream crates all available in one format will likely make this go away
  = help: `feature(rustc_private)` is needed to link to the compiler's `rustc_driver` library

error: cannot satisfy dependencies so `rustc_std_workspace_core` only shows up once
  |
  = help: having upstream crates all available in one format will likely make this go away
  = help: `feature(rustc_private)` is needed to link to the compiler's `rustc_driver` library

And here is the relevant section in CI: https://github.com/astriaorg/astria/blob/c751c249f7d2b2077a174a0ab746981c2e9aab4a/.github/workflows/test.yml#L245-L276

And below is what happens if I build locally. Some extra details:

❯ cargo dylint --version
cargo-dylint 3.1.2
❯ cd lint/tracing_debug_field/
❯ cargo --version
cargo 1.83.0-nightly (c1fa840a8 2024-08-29)
Same problem locally on macOS
Building workspace metadata entry `tracing_debug_field`
    Finished `release` profile [optimized] target(s) in 0.14s
Building driver for toolchain `nightly-2024-09-05-aarch64-apple-darwin`
    Updating crates.io index
     Locking 43 packages to latest compatible versions
      Adding windows-sys v0.52.0 (latest: v0.59.0)
   Compiling memchr v2.7.4
   Compiling serde v1.0.210
   Compiling anyhow v1.0.89
   Compiling regex-syntax v0.8.4
   Compiling log v0.4.22
   Compiling libc v0.2.158
   Compiling utf8parse v0.2.2
   Compiling rustversion v1.0.17
   Compiling serde_json v1.0.128
   Compiling anstyle v1.0.8
   Compiling itoa v1.0.11
   Compiling colorchoice v1.0.2
   Compiling anstyle-parse v0.2.5
   Compiling cfg-if v1.0.0
   Compiling is_terminal_polyfill v1.70.1
   Compiling ryu v1.0.18
   Compiling anstyle-query v1.1.1
   Compiling libloading v0.8.5
   Compiling humantime v2.1.0
   Compiling anstream v0.6.15
   Compiling aho-corasick v1.1.3
   Compiling regex-automata v0.4.7
   Compiling dylint_internal v3.1.2
   Compiling regex v1.10.6
   Compiling env_filter v0.1.2
   Compiling env_logger v0.11.5
   Compiling dylint_driver v3.1.2
   Compiling dylint_driver-nightly-2024-09-05-aarch64-apple-darwin v0.1.0 (/private/var/folders/h2/qr5r_fyx2653wqbqh73vcjv40000gn/T/.tmpz22bEF)
error: cannot satisfy dependencies so `rustc_driver` only shows up once
  |
  = help: having upstream crates all available in one format will likely make this go away
  = note: `rustc_driver` was unavailable as a static crate, preventing fully static linking
  = help: `feature(rustc_private)` is needed to link to the compiler's `rustc_driver` library

error: cannot satisfy dependencies so `core` only shows up once
  |
  = help: having upstream crates all available in one format will likely make this go away
  = help: `feature(rustc_private)` is needed to link to the compiler's `rustc_driver` library

error: cannot satisfy dependencies so `compiler_builtins` only shows up once
  |
  = help: having upstream crates all available in one format will likely make this go away
  = help: `feature(rustc_private)` is needed to link to the compiler's `rustc_driver` library

error: cannot satisfy dependencies so `rustc_std_workspace_core` only shows up once
  |
  = help: having upstream crates all available in one format will likely make this go away
  = help: `feature(rustc_private)` is needed to link to the compiler's `rustc_driver` library

error: cannot satisfy dependencies so `alloc` only shows up once
  |
  = help: having upstream crates all available in one format will likely make this go away
  = help: `feature(rustc_private)` is needed to link to the compiler's `rustc_driver` library

error: cannot satisfy dependencies so `libc` only shows up once
  |
  = help: having upstream crates all available in one format will likely make this go away
  = help: `feature(rustc_private)` is needed to link to the compiler's `rustc_driver` library

error: cannot satisfy dependencies so `unwind` only shows up once
  |
  = help: having upstream crates all available in one format will likely make this go away
  = help: `feature(rustc_private)` is needed to link to the compiler's `rustc_driver` library

error: cannot satisfy dependencies so `cfg_if` only shows up once
  |
  = help: having upstream crates all available in one format will likely make this go away
  = help: `feature(rustc_private)` is needed to link to the compiler's `rustc_driver` library

error: cannot satisfy dependencies so `miniz_oxide` only shows up once
  |
  = help: having upstream crates all available in one format will likely make this go away
  = help: `feature(rustc_private)` is needed to link to the compiler's `rustc_driver` library

error: cannot satisfy dependencies so `adler` only shows up once
  |
  = help: having upstream crates all available in one format will likely make this go away
  = help: `feature(rustc_private)` is needed to link to the compiler's `rustc_driver` library

error: cannot satisfy dependencies so `hashbrown` only shows up once
  |
  = help: having upstream crates all available in one format will likely make this go away
  = help: `feature(rustc_private)` is needed to link to the compiler's `rustc_driver` library

error: cannot satisfy dependencies so `rustc_std_workspace_alloc` only shows up once
  |
  = help: having upstream crates all available in one format will likely make this go away
  = help: `feature(rustc_private)` is needed to link to the compiler's `rustc_driver` library

error: cannot satisfy dependencies so `std_detect` only shows up once
  |
  = help: having upstream crates all available in one format will likely make this go away
  = help: `feature(rustc_private)` is needed to link to the compiler's `rustc_driver` library

error: cannot satisfy dependencies so `rustc_demangle` only shows up once
  |
  = help: having upstream crates all available in one format will likely make this go away
  = help: `feature(rustc_private)` is needed to link to the compiler's `rustc_driver` library

error: cannot satisfy dependencies so `addr2line` only shows up once
  |
  = help: having upstream crates all available in one format will likely make this go away
  = help: `feature(rustc_private)` is needed to link to the compiler's `rustc_driver` library

error: cannot satisfy dependencies so `gimli` only shows up once
  |
  = help: having upstream crates all available in one format will likely make this go away
  = help: `feature(rustc_private)` is needed to link to the compiler's `rustc_driver` library

error: cannot satisfy dependencies so `object` only shows up once
  |
  = help: having upstream crates all available in one format will likely make this go away
  = help: `feature(rustc_private)` is needed to link to the compiler's `rustc_driver` library

error: cannot satisfy dependencies so `memchr` only shows up once
  |
  = help: having upstream crates all available in one format will likely make this go away
  = help: `feature(rustc_private)` is needed to link to the compiler's `rustc_driver` library

error: cannot satisfy dependencies so `panic_unwind` only shows up once
  |
  = help: having upstream crates all available in one format will likely make this go away
  = help: `feature(rustc_private)` is needed to link to the compiler's `rustc_driver` library

error: could not compile `dylint_driver-nightly-2024-09-05-aarch64-apple-darwin` (bin "dylint_driver-nightly-2024-09-05-aarch64-apple-darwin") due to 19 previous errors
Error: command failed: cd "/var/folders/h2/qr5r_fyx2653wqbqh73vcjv40000gn/T/.tmpz22bEF" && env -u CARGO -u RUSTC -u RUSTUP_TOOLCHAIN RUSTFLAGS=" -C link-args=-Wl,-rpath,/Users/janis/.rustup/toolchains/nightly-2024-09-05-aarch64-apple-darwin/lib " "cargo" "build"

Tried a few things but I am not sure how to go from here. The overall toolchain (outside of dylint) is 1.81.0

SuperFluffy avatar Sep 19 '24 12:09 SuperFluffy

Thanks, @SuperFluffy. I ran into this yesterday myself. This PR fixes the problem: https://github.com/trailofbits/dylint/pull/1298. I will publish a new release before the end of the day.

smoelius avatar Sep 19 '24 12:09 smoelius

@smoelius Lovely, thank you! I did see that PR but thought it might be something else because I also experience this on linux/github CI.

SuperFluffy avatar Sep 19 '24 12:09 SuperFluffy

3.2.0 is published, and it seems to resolve the problems I encountered yesterday.

Could I impose on you to try it out?

smoelius avatar Sep 20 '24 02:09 smoelius

3.2.0 is published, and it seems to resolve the problems I encountered yesterday.

Could I impose on you to try it out?

It works again with 3.2.0, thank you very much for the quick fix!

SuperFluffy avatar Sep 25 '24 12:09 SuperFluffy

Thanks for testing!

smoelius avatar Sep 25 '24 13:09 smoelius