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

Provide better diagnostics for why crates are rebuilt #2904

Open
alexcrichton opened this issue Jul 21, 2016 · 23 comments · Fixed by #11407
Open

Provide better diagnostics for why crates are rebuilt #2904

alexcrichton opened this issue Jul 21, 2016 · 23 comments · Fixed by #11407
Labels
A-rebuild-detection Area: rebuild detection and fingerprinting C-feature-request Category: proposal for a feature. Before PR, ping rust-lang/cargo if this is not `Feature accepted` Command-report S-needs-design Status: Needs someone to work further on the design for the feature or fix. NOT YET accepted.

Comments

@alexcrichton
Copy link
Member

alexcrichton commented Jul 21, 2016

Right now Cargo can sometimes choose to recompile crates for surprising reasons, but it has lots of information internally to inform users as to why crates are recompiling. It'd be great to expose all this information!

Currently the best way to get this information is:

CARGO_LOG=cargo::core::compiler::fingerprint=trace cargo build

but then you have to wade through a bunch of other logging output. It'd be best if cargo would automatically do this on -v. Something like "recompiling crate foo because: ...". Maybe even -vv.

@jwilm
Copy link
Contributor

jwilm commented Jul 21, 2016

but then you have to wade through a bunch of other logging output.

Adding such debug information to -v or -vv would result in even more log output to parse through in comparison with that RUST_LOG setting. A separate flag might be nicer to get only the rebuild diagnostics.

@davidbarsky
Copy link

davidbarsky commented Sep 2, 2016

I'm opposed to hiding that information behind a flag—in particular, the issue I had in #3067 would’ve been noticed far sooner. A (relatively) rare event like full recompilation of a dependency should—in my amateurish opinion—be communicated to the user as quickly as possible, and I think the regular cargo build output is a good place to put it.

Caveat: I am ignorant of most of cargo is designed.

@alexcrichton
Copy link
Member Author

@davidbarsky yeah that sounds reasonable to me. We try to keep Cargo's UI pretty tight to ensure that you're not inundated with output, but perhaps we could do something like print Recompiling instead of Compiling with a small snippet of a reason at one end. Then if you pass -v we could print more information about why something is being recompiled.

@davidbarsky
Copy link

@alexcrichton Thanks Alex! Got a quick question though: wouldn’t passing -v only show the status for the currently executing build, not previous one? On other hand, a user might not care why a previous build recompiled, only if the build keeps recompiling.

@alexcrichton
Copy link
Member Author

It's true yeah, -v may be too late in some situations. For debugging though it could be useful?

@jwilm
Copy link
Contributor

jwilm commented Sep 3, 2016

Whenever I've encountered a recompiling issue it's usually very easy to reproduce, and opting into extra info via -v for debugging would be fine. If it's a one time issue and -v would be too late, is it really a problem?

@davidbarsky
Copy link

@alexcrichton @jwilm: Yep, I think you’re both right. Viewing information for a previous, one-off build is would probably take a lot of work and isn’t a particularly useful feature to have.

@carols10cents carols10cents added A-rebuild-detection Area: rebuild detection and fingerprinting C-feature-request Category: proposal for a feature. Before PR, ping rust-lang/cargo if this is not `Feature accepted` labels Sep 26, 2017
@RalfJung
Copy link
Member

RalfJung commented May 16, 2020

FWIW, I am semi-regularly mystified by why cargo rebuilds something -- sometimes just on CI so I have little chance of debugging, like here in line 130 where even though it just built Miri, a cargo install triggers a rather costly rebuild. (This rebuild doesn't happen on Linux/macOS, to make things even more strange.) ./x.py test --stage 0 src/tools/miri also does some odd unexpected rebuilds. And there is rust-lang/miri#1410.

Having some way of letting cargo tell me the reasons would be quite amazing.

@ehuss
Copy link
Contributor

ehuss commented May 16, 2020

Having some way of letting cargo tell me the reasons would be quite amazing.

How would that work on CI? You can display the reasons today using the environment variable mentioned above. I have made some improvements lately so that it displays more relevant information.

I can see some improvements:

  • "After the fact reporting." Often a rebuild happens at an unexpected time, and by then it is too late to enable logging. If it isn't easily reproducible, this makes it difficult. If Cargo could save to disk the reason, then some command could be used to ask Cargo to display "why did you just rebuild x?". I'm not sure if we can implement this efficiently, but we are already saving a JSON structure for each package, so it seems feasible.
  • Reasons are too verbose. The logging right now is extremely verbose, because it covers every possible scenario on every package, and some of the information isn't available in one place (the mtime decision is made in different locations and different times). This could definitely be improved, but there are situations that are unexpected (weird filesystems or cargo bugs) where today the "spew tons of information" is the only way to debug them. Also, we only track dependencies as a hash, so if a package is rebuilt because a dependency is out-of-date, all we can say is "some dependency was outdated". Tracking more information is costly.

But if this is CI, how would you go about diagnosing it? What kind of UI would you like?

@RalfJung
Copy link
Member

How would that work on CI? You can display the reasons today using the environment variable mentioned above. I have made some improvements lately so that it displays more relevant information.

Well it's not interactive so the information has to basically be spot-on and not require further experimentation. That's what makes CI harder.

I have made some improvements lately so that it displays more relevant information.

"it" is RUST_LOG=cargo::ops::cargo_rustc::fingerprint? I just tried that locally and it doesn't show anything.

But if this is CI, how would you go about diagnosing it? What kind of UI would you like?

Something like cargo build -v or so -- not having seen the RUST_LOG output for cargo yet but having seen it for other projects, it's usually full of information that is relevant to developers but not users. Though even cargo -v already prints many things that are not relevant for debugging rebuilds, so maybe it should be a separate flag. And then I'd imagine it would write something like

   Recompiling atty v0.2.14 because feature flag X got added/removed
   Recompiling aho-corasick v0.7.10 because environment variable Y changed
   Recompiling directories v2.0.2 because file Z changed

@ehuss
Copy link
Contributor

ehuss commented May 16, 2020

just tried that locally and it doesn't show anything.

Oh, sorry, the original comment was out of date (being nearly 4 years old). I updated it:

CARGO_LOG=cargo::core::compiler::fingerprint=trace cargo build

Yea, -v can be noisy. It would be nice if there is a more granular way to indicate which extra information you want to display. CARGO_LOG sorta fills that, but it is difficult to use. I've thought about adding explicit log targets to make it easier (CARGO_LOG=fingerprint). I'm not sure if that's good enough, or if there should be something explicit from the command-line.

@RalfJung
Copy link
Member

Ah, with CARGO_LOG I am getting some output, thanks. I'll play around with this to see if I can make any sense of it.

I'm a little afraid using it on CI will just blow to an insurmountable amount of logs.^^

@RalfJung
Copy link
Member

I just debugged locally a case where cargo build && cargo install would do some building in the 2nd step. This is caused by some dev-dependency enabling a feature flag in some shared dependency that is otherwise not required, in which case cargo has to re-build everything depending on that shared dependency on cargo install.

I tried the CARGO_LOG method but I couldn't find any hint in this trace:

CARGO_LOG trace
[2020-05-21T09:05:39Z DEBUG cargo::core::compiler::fingerprint] fingerprint at: /home/r/src/rust/miri/target/release/.fingerprint/miri-48ed93d966132f43/bin-miri
[2020-05-21T09:05:39Z DEBUG cargo::core::compiler::fingerprint] old local fingerprints deps "/home/r/.cargo/registry/src/git.luolix.top-1ecc6299db9ec823/byteorder-1.3.4" precalculated="1.3.4"
[2020-05-21T09:05:39Z DEBUG cargo::core::compiler::fingerprint] max output mtime for "/home/r/.cargo/registry/src/git.luolix.top-1ecc6299db9ec823/byteorder-1.3.4" is "/home/r/src/rust/miri/target/release/build/byteorder-17173ab7ca556c80/build_script_build-17173ab7ca556c80" 1590051838.161499400s
[2020-05-21T09:05:39Z DEBUG cargo::core::compiler::fingerprint] all paths up-to-date relative to "/home/r/src/rust/miri/target/release/.fingerprint/byteorder-17173ab7ca556c80/dep-build-script-build-script-build" mtime=1590051835.761463357s
[2020-05-21T09:05:39Z DEBUG cargo::core::compiler::fingerprint] filesystem up-to-date "/home/r/.cargo/registry/src/git.luolix.top-1ecc6299db9ec823/byteorder-1.3.4"
[2020-05-21T09:05:39Z DEBUG cargo::core::compiler::fingerprint] max output mtime for "/home/r/.cargo/registry/src/git.luolix.top-1ecc6299db9ec823/byteorder-1.3.4" is "/home/r/src/rust/miri/target/release/build/byteorder-2f0d986a88f5693d/output" 1590051839.529519978s
[2020-05-21T09:05:39Z DEBUG cargo::core::compiler::fingerprint] max dep mtime for "/home/r/.cargo/registry/src/git.luolix.top-1ecc6299db9ec823/byteorder-1.3.4" is "/home/r/src/rust/miri/target/release/build/byteorder-17173ab7ca556c80/build_script_build-17173ab7ca556c80" 1590051838.161499400s
[2020-05-21T09:05:39Z DEBUG cargo::core::compiler::fingerprint] filesystem up-to-date "/home/r/.cargo/registry/src/git.luolix.top-1ecc6299db9ec823/byteorder-1.3.4"
[2020-05-21T09:05:39Z DEBUG cargo::core::compiler::fingerprint] max output mtime for "/home/r/.cargo/registry/src/git.luolix.top-1ecc6299db9ec823/byteorder-1.3.4" is "/home/r/src/rust/miri/target/release/deps/libbyteorder-f599e8cd12c13c77.rlib" 1590051841.353547452s
[2020-05-21T09:05:39Z DEBUG cargo::core::compiler::fingerprint] max dep mtime for "/home/r/.cargo/registry/src/git.luolix.top-1ecc6299db9ec823/byteorder-1.3.4" is "/home/r/src/rust/miri/target/release/build/byteorder-2f0d986a88f5693d/output" 1590051839.529519978s
[2020-05-21T09:05:39Z DEBUG cargo::core::compiler::fingerprint] all paths up-to-date relative to "/home/r/src/rust/miri/target/release/.fingerprint/byteorder-f599e8cd12c13c77/dep-lib-byteorder" mtime=1590051840.205530155s
[2020-05-21T09:05:39Z DEBUG cargo::core::compiler::fingerprint] filesystem up-to-date "/home/r/.cargo/registry/src/git.luolix.top-1ecc6299db9ec823/byteorder-1.3.4"
[2020-05-21T09:05:39Z DEBUG cargo::core::compiler::fingerprint] old local fingerprints deps "/home/r/.cargo/registry/src/git.luolix.top-1ecc6299db9ec823/libc-0.2.68" precalculated="0.2.68"
[2020-05-21T09:05:39Z DEBUG cargo::core::compiler::fingerprint] failed to get mtime of "/home/r/src/rust/miri/target/release/build/libc-de46732a7dd58a52/build_script_build-de46732a7dd58a52": failed to stat `/home/r/src/rust/miri/target/release/build/libc-de46732a7dd58a52/build_script_build-de46732a7dd58a52`
[2020-05-21T09:05:39Z DEBUG cargo::core::compiler::fingerprint] failed to get mtime of "/home/r/src/rust/miri/target/release/build/libc-c46b23a58d539580/output": failed to stat `/home/r/src/rust/miri/target/release/build/libc-c46b23a58d539580/output`
[2020-05-21T09:05:39Z DEBUG cargo::core::compiler::fingerprint] failed to get mtime of "/home/r/src/rust/miri/target/release/deps/liblibc-69fefa542c222ea3.rlib": failed to stat `/home/r/src/rust/miri/target/release/deps/liblibc-69fefa542c222ea3.rlib`
[2020-05-21T09:05:39Z DEBUG cargo::core::compiler::fingerprint] failed to get mtime of "/home/r/src/rust/miri/target/release/deps/libatty-91513423190e381c.rlib": failed to stat `/home/r/src/rust/miri/target/release/deps/libatty-91513423190e381c.rlib`
[2020-05-21T09:05:39Z DEBUG cargo::core::compiler::fingerprint] max output mtime for "/home/r/.cargo/registry/src/git.luolix.top-1ecc6299db9ec823/quick-error-1.2.3" is "/home/r/src/rust/miri/target/release/deps/libquick_error-934e6ad81d9dfa4b.rlib" 1590051835.645461616s
[2020-05-21T09:05:39Z DEBUG cargo::core::compiler::fingerprint] all paths up-to-date relative to "/home/r/src/rust/miri/target/release/.fingerprint/quick-error-934e6ad81d9dfa4b/dep-lib-quick-error" mtime=1590051835.501459457s
[2020-05-21T09:05:39Z DEBUG cargo::core::compiler::fingerprint] filesystem up-to-date "/home/r/.cargo/registry/src/git.luolix.top-1ecc6299db9ec823/quick-error-1.2.3"
[2020-05-21T09:05:39Z DEBUG cargo::core::compiler::fingerprint] max output mtime for "/home/r/.cargo/registry/src/git.luolix.top-1ecc6299db9ec823/humantime-1.3.0" is "/home/r/src/rust/miri/target/release/deps/libhumantime-bb3dee3817149864.rlib" 1590051839.153514319s
[2020-05-21T09:05:39Z DEBUG cargo::core::compiler::fingerprint] max dep mtime for "/home/r/.cargo/registry/src/git.luolix.top-1ecc6299db9ec823/humantime-1.3.0" is "/home/r/src/rust/miri/target/release/deps/libquick_error-934e6ad81d9dfa4b.rmeta" 1590051835.625461317s
[2020-05-21T09:05:39Z DEBUG cargo::core::compiler::fingerprint] all paths up-to-date relative to "/home/r/src/rust/miri/target/release/.fingerprint/humantime-bb3dee3817149864/dep-lib-humantime" mtime=1590051837.265485935s
[2020-05-21T09:05:39Z DEBUG cargo::core::compiler::fingerprint] filesystem up-to-date "/home/r/.cargo/registry/src/git.luolix.top-1ecc6299db9ec823/humantime-1.3.0"
[2020-05-21T09:05:39Z DEBUG cargo::core::compiler::fingerprint] max output mtime for "/home/r/.cargo/registry/src/git.luolix.top-1ecc6299db9ec823/cfg-if-0.1.10" is "/home/r/src/rust/miri/target/release/deps/libcfg_if-33adbc7c23a934c7.rlib" 1590051834.401442966s
[2020-05-21T09:05:39Z DEBUG cargo::core::compiler::fingerprint] all paths up-to-date relative to "/home/r/src/rust/miri/target/release/.fingerprint/cfg-if-33adbc7c23a934c7/dep-lib-cfg-if" mtime=1590051834.333441947s
[2020-05-21T09:05:39Z DEBUG cargo::core::compiler::fingerprint] filesystem up-to-date "/home/r/.cargo/registry/src/git.luolix.top-1ecc6299db9ec823/cfg-if-0.1.10"
[2020-05-21T09:05:39Z DEBUG cargo::core::compiler::fingerprint] new local fingerprints deps "/home/r/.cargo/registry/src/git.luolix.top-1ecc6299db9ec823/log-0.4.8"
[2020-05-21T09:05:39Z DEBUG cargo::core::compiler::fingerprint] max output mtime for "/home/r/.cargo/registry/src/git.luolix.top-1ecc6299db9ec823/log-0.4.8" is "/home/r/src/rust/miri/target/release/build/log-87e035bf3b1f0e1e/build_script_build-87e035bf3b1f0e1e" 1590051835.501459457s
[2020-05-21T09:05:39Z DEBUG cargo::core::compiler::fingerprint] all paths up-to-date relative to "/home/r/src/rust/miri/target/release/.fingerprint/log-87e035bf3b1f0e1e/dep-build-script-build-script-build" mtime=1590051835.077453097s
[2020-05-21T09:05:39Z DEBUG cargo::core::compiler::fingerprint] filesystem up-to-date "/home/r/.cargo/registry/src/git.luolix.top-1ecc6299db9ec823/log-0.4.8"
[2020-05-21T09:05:39Z DEBUG cargo::core::compiler::fingerprint] max output mtime for "/home/r/.cargo/registry/src/git.luolix.top-1ecc6299db9ec823/log-0.4.8" is "/home/r/src/rust/miri/target/release/build/log-3873c4462fc9dc01/output" 1590051837.253485755s
[2020-05-21T09:05:39Z DEBUG cargo::core::compiler::fingerprint] max dep mtime for "/home/r/.cargo/registry/src/git.luolix.top-1ecc6299db9ec823/log-0.4.8" is "/home/r/src/rust/miri/target/release/build/log-87e035bf3b1f0e1e/build_script_build-87e035bf3b1f0e1e" 1590051835.501459457s
[2020-05-21T09:05:39Z DEBUG cargo::core::compiler::fingerprint] all paths up-to-date relative to "/home/r/src/rust/miri/target/release/build/log-3873c4462fc9dc01/output" mtime=1590051837.253485755s
[2020-05-21T09:05:39Z DEBUG cargo::core::compiler::fingerprint] filesystem up-to-date "/home/r/.cargo/registry/src/git.luolix.top-1ecc6299db9ec823/log-0.4.8"
[2020-05-21T09:05:39Z DEBUG cargo::core::compiler::fingerprint] max output mtime for "/home/r/.cargo/registry/src/git.luolix.top-1ecc6299db9ec823/log-0.4.8" is "/home/r/src/rust/miri/target/release/deps/liblog-fc3f06ec9d60fa82.rlib" 1590051838.481504212s
[2020-05-21T09:05:39Z DEBUG cargo::core::compiler::fingerprint] max dep mtime for "/home/r/.cargo/registry/src/git.luolix.top-1ecc6299db9ec823/log-0.4.8" is "/home/r/src/rust/miri/target/release/build/log-3873c4462fc9dc01/output" 1590051837.253485755s
[2020-05-21T09:05:39Z DEBUG cargo::core::compiler::fingerprint] max dep mtime for "/home/r/.cargo/registry/src/git.luolix.top-1ecc6299db9ec823/log-0.4.8" is "/home/r/src/rust/miri/target/release/deps/libcfg_if-33adbc7c23a934c7.rmeta" 1590051834.389442786s
[2020-05-21T09:05:39Z DEBUG cargo::core::compiler::fingerprint] all paths up-to-date relative to "/home/r/src/rust/miri/target/release/.fingerprint/log-fc3f06ec9d60fa82/dep-lib-log" mtime=1590051837.589490803s
[2020-05-21T09:05:39Z DEBUG cargo::core::compiler::fingerprint] filesystem up-to-date "/home/r/.cargo/registry/src/git.luolix.top-1ecc6299db9ec823/log-0.4.8"
[2020-05-21T09:05:39Z DEBUG cargo::core::compiler::fingerprint] old local fingerprints deps "/home/r/.cargo/registry/src/git.luolix.top-1ecc6299db9ec823/memchr-2.3.3" precalculated="2.3.3"
[2020-05-21T09:05:39Z DEBUG cargo::core::compiler::fingerprint] max output mtime for "/home/r/.cargo/registry/src/git.luolix.top-1ecc6299db9ec823/memchr-2.3.3" is "/home/r/src/rust/miri/target/release/build/memchr-e58853fbb70da567/build_script_build-e58853fbb70da567" 1590051834.929450878s
[2020-05-21T09:05:39Z DEBUG cargo::core::compiler::fingerprint] all paths up-to-date relative to "/home/r/src/rust/miri/target/release/.fingerprint/memchr-e58853fbb70da567/dep-build-script-build-script-build" mtime=1590051834.409443086s
[2020-05-21T09:05:39Z DEBUG cargo::core::compiler::fingerprint] filesystem up-to-date "/home/r/.cargo/registry/src/git.luolix.top-1ecc6299db9ec823/memchr-2.3.3"
[2020-05-21T09:05:39Z DEBUG cargo::core::compiler::fingerprint] max output mtime for "/home/r/.cargo/registry/src/git.luolix.top-1ecc6299db9ec823/memchr-2.3.3" is "/home/r/src/rust/miri/target/release/build/memchr-b384440aaf555c93/output" 1590051837.101483471s
[2020-05-21T09:05:39Z DEBUG cargo::core::compiler::fingerprint] max dep mtime for "/home/r/.cargo/registry/src/git.luolix.top-1ecc6299db9ec823/memchr-2.3.3" is "/home/r/src/rust/miri/target/release/build/memchr-e58853fbb70da567/build_script_build-e58853fbb70da567" 1590051834.929450878s
[2020-05-21T09:05:39Z DEBUG cargo::core::compiler::fingerprint] filesystem up-to-date "/home/r/.cargo/registry/src/git.luolix.top-1ecc6299db9ec823/memchr-2.3.3"
[2020-05-21T09:05:39Z DEBUG cargo::core::compiler::fingerprint] max output mtime for "/home/r/.cargo/registry/src/git.luolix.top-1ecc6299db9ec823/memchr-2.3.3" is "/home/r/src/rust/miri/target/release/deps/libmemchr-86b147493fa62f8a.rlib" 1590051839.945526239s
[2020-05-21T09:05:39Z DEBUG cargo::core::compiler::fingerprint] max dep mtime for "/home/r/.cargo/registry/src/git.luolix.top-1ecc6299db9ec823/memchr-2.3.3" is "/home/r/src/rust/miri/target/release/build/memchr-b384440aaf555c93/output" 1590051837.101483471s
[2020-05-21T09:05:39Z DEBUG cargo::core::compiler::fingerprint] all paths up-to-date relative to "/home/r/src/rust/miri/target/release/.fingerprint/memchr-86b147493fa62f8a/dep-lib-memchr" mtime=1590051837.545490142s
[2020-05-21T09:05:39Z DEBUG cargo::core::compiler::fingerprint] filesystem up-to-date "/home/r/.cargo/registry/src/git.luolix.top-1ecc6299db9ec823/memchr-2.3.3"
[2020-05-21T09:05:39Z DEBUG cargo::core::compiler::fingerprint] max output mtime for "/home/r/.cargo/registry/src/git.luolix.top-1ecc6299db9ec823/aho-corasick-0.7.10" is "/home/r/src/rust/miri/target/release/deps/libaho_corasick-f2cbf3b0fc841bd2.rlib" 1590051852.337713809s
[2020-05-21T09:05:39Z DEBUG cargo::core::compiler::fingerprint] max dep mtime for "/home/r/.cargo/registry/src/git.luolix.top-1ecc6299db9ec823/aho-corasick-0.7.10" is "/home/r/src/rust/miri/target/release/deps/libmemchr-86b147493fa62f8a.rmeta" 1590051838.129498918s
[2020-05-21T09:05:39Z DEBUG cargo::core::compiler::fingerprint] all paths up-to-date relative to "/home/r/src/rust/miri/target/release/.fingerprint/aho-corasick-f2cbf3b0fc841bd2/dep-lib-aho_corasick" mtime=1590051839.373517629s
[2020-05-21T09:05:39Z DEBUG cargo::core::compiler::fingerprint] filesystem up-to-date "/home/r/.cargo/registry/src/git.luolix.top-1ecc6299db9ec823/aho-corasick-0.7.10"
[2020-05-21T09:05:39Z DEBUG cargo::core::compiler::fingerprint] max output mtime for "/home/r/.cargo/registry/src/git.luolix.top-1ecc6299db9ec823/regex-syntax-0.6.17" is "/home/r/src/rust/miri/target/release/deps/libregex_syntax-6ca8b640a5e3a7c0.rlib" 1590051865.241911191s
[2020-05-21T09:05:39Z DEBUG cargo::core::compiler::fingerprint] all paths up-to-date relative to "/home/r/src/rust/miri/target/release/.fingerprint/regex-syntax-6ca8b640a5e3a7c0/dep-lib-regex-syntax" mtime=1590051835.801463956s
[2020-05-21T09:05:39Z DEBUG cargo::core::compiler::fingerprint] filesystem up-to-date "/home/r/.cargo/registry/src/git.luolix.top-1ecc6299db9ec823/regex-syntax-0.6.17"
[2020-05-21T09:05:39Z DEBUG cargo::core::compiler::fingerprint] max output mtime for "/home/r/.cargo/registry/src/git.luolix.top-1ecc6299db9ec823/lazy_static-1.4.0" is "/home/r/src/rust/miri/target/release/deps/liblazy_static-79cb8478fcd4b466.rlib" 1590051835.049452677s
[2020-05-21T09:05:39Z DEBUG cargo::core::compiler::fingerprint] all paths up-to-date relative to "/home/r/src/rust/miri/target/release/.fingerprint/lazy_static-79cb8478fcd4b466/dep-lib-lazy_static" mtime=1590051834.941451058s
[2020-05-21T09:05:39Z DEBUG cargo::core::compiler::fingerprint] filesystem up-to-date "/home/r/.cargo/registry/src/git.luolix.top-1ecc6299db9ec823/lazy_static-1.4.0"
[2020-05-21T09:05:39Z DEBUG cargo::core::compiler::fingerprint] max output mtime for "/home/r/.cargo/registry/src/git.luolix.top-1ecc6299db9ec823/thread_local-1.0.1" is "/home/r/src/rust/miri/target/release/deps/libthread_local-db7f53207e252231.rlib" 1590051838.273501084s
[2020-05-21T09:05:39Z DEBUG cargo::core::compiler::fingerprint] max dep mtime for "/home/r/.cargo/registry/src/git.luolix.top-1ecc6299db9ec823/thread_local-1.0.1" is "/home/r/src/rust/miri/target/release/deps/liblazy_static-79cb8478fcd4b466.rmeta" 1590051835.041452557s
[2020-05-21T09:05:39Z DEBUG cargo::core::compiler::fingerprint] all paths up-to-date relative to "/home/r/src/rust/miri/target/release/.fingerprint/thread_local-db7f53207e252231/dep-lib-thread_local" mtime=1590051837.101483471s
[2020-05-21T09:05:39Z DEBUG cargo::core::compiler::fingerprint] filesystem up-to-date "/home/r/.cargo/registry/src/git.luolix.top-1ecc6299db9ec823/thread_local-1.0.1"
[2020-05-21T09:05:39Z DEBUG cargo::core::compiler::fingerprint] max output mtime for "/home/r/.cargo/registry/src/git.luolix.top-1ecc6299db9ec823/regex-1.3.6" is "/home/r/src/rust/miri/target/release/deps/libregex-ed22c5d6cd1b24c6.rlib" 1590051876.986092616s
[2020-05-21T09:05:39Z DEBUG cargo::core::compiler::fingerprint] max dep mtime for "/home/r/.cargo/registry/src/git.luolix.top-1ecc6299db9ec823/regex-1.3.6" is "/home/r/src/rust/miri/target/release/deps/libthread_local-db7f53207e252231.rmeta" 1590051837.381487678s
[2020-05-21T09:05:39Z DEBUG cargo::core::compiler::fingerprint] max dep mtime for "/home/r/.cargo/registry/src/git.luolix.top-1ecc6299db9ec823/regex-1.3.6" is "/home/r/src/rust/miri/target/release/deps/libaho_corasick-f2cbf3b0fc841bd2.rmeta" 1590051842.433563741s
[2020-05-21T09:05:39Z DEBUG cargo::core::compiler::fingerprint] max dep mtime for "/home/r/.cargo/registry/src/git.luolix.top-1ecc6299db9ec823/regex-1.3.6" is "/home/r/src/rust/miri/target/release/deps/libmemchr-86b147493fa62f8a.rmeta" 1590051838.129498918s
[2020-05-21T09:05:39Z DEBUG cargo::core::compiler::fingerprint] max dep mtime for "/home/r/.cargo/registry/src/git.luolix.top-1ecc6299db9ec823/regex-1.3.6" is "/home/r/src/rust/miri/target/release/deps/libregex_syntax-6ca8b640a5e3a7c0.rmeta" 1590051841.893555595s
[2020-05-21T09:05:39Z DEBUG cargo::core::compiler::fingerprint] all paths up-to-date relative to "/home/r/src/rust/miri/target/release/.fingerprint/regex-ed22c5d6cd1b24c6/dep-lib-regex" mtime=1590051844.765598963s
[2020-05-21T09:05:39Z DEBUG cargo::core::compiler::fingerprint] filesystem up-to-date "/home/r/.cargo/registry/src/git.luolix.top-1ecc6299db9ec823/regex-1.3.6"
[2020-05-21T09:05:39Z DEBUG cargo::core::compiler::fingerprint] max output mtime for "/home/r/.cargo/registry/src/git.luolix.top-1ecc6299db9ec823/termcolor-1.1.0" is "/home/r/src/rust/miri/target/release/deps/libtermcolor-0fda61feb678b873.rlib" 1590051838.221500302s
[2020-05-21T09:05:39Z DEBUG cargo::core::compiler::fingerprint] all paths up-to-date relative to "/home/r/src/rust/miri/target/release/.fingerprint/termcolor-0fda61feb678b873/dep-lib-termcolor" mtime=1590051835.901465457s
[2020-05-21T09:05:39Z DEBUG cargo::core::compiler::fingerprint] filesystem up-to-date "/home/r/.cargo/registry/src/git.luolix.top-1ecc6299db9ec823/termcolor-1.1.0"
[2020-05-21T09:05:39Z DEBUG cargo::core::compiler::fingerprint] failed to get mtime of "/home/r/src/rust/miri/target/release/deps/libenv_logger-a7b6af8796fba7b6.rlib": failed to stat `/home/r/src/rust/miri/target/release/deps/libenv_logger-a7b6af8796fba7b6.rlib`
[2020-05-21T09:05:39Z DEBUG cargo::core::compiler::fingerprint] old local fingerprints deps "/home/r/.cargo/registry/src/git.luolix.top-1ecc6299db9ec823/getrandom-0.1.14" precalculated="0.1.14"
[2020-05-21T09:05:39Z DEBUG cargo::core::compiler::fingerprint] max output mtime for "/home/r/.cargo/registry/src/git.luolix.top-1ecc6299db9ec823/getrandom-0.1.14" is "/home/r/src/rust/miri/target/release/build/getrandom-661d8d4e5653816f/build_script_build-661d8d4e5653816f" 1590051835.061452858s
[2020-05-21T09:05:39Z DEBUG cargo::core::compiler::fingerprint] all paths up-to-date relative to "/home/r/src/rust/miri/target/release/.fingerprint/getrandom-661d8d4e5653816f/dep-build-script-build-script-build" mtime=1590051834.337442007s
[2020-05-21T09:05:39Z DEBUG cargo::core::compiler::fingerprint] filesystem up-to-date "/home/r/.cargo/registry/src/git.luolix.top-1ecc6299db9ec823/getrandom-0.1.14"
[2020-05-21T09:05:39Z DEBUG cargo::core::compiler::fingerprint] max output mtime for "/home/r/.cargo/registry/src/git.luolix.top-1ecc6299db9ec823/getrandom-0.1.14" is "/home/r/src/rust/miri/target/release/build/getrandom-931d791e79d125bc/output" 1590051837.225485335s
[2020-05-21T09:05:39Z DEBUG cargo::core::compiler::fingerprint] max dep mtime for "/home/r/.cargo/registry/src/git.luolix.top-1ecc6299db9ec823/getrandom-0.1.14" is "/home/r/src/rust/miri/target/release/build/getrandom-661d8d4e5653816f/build_script_build-661d8d4e5653816f" 1590051835.061452858s
[2020-05-21T09:05:39Z DEBUG cargo::core::compiler::fingerprint] filesystem up-to-date "/home/r/.cargo/registry/src/git.luolix.top-1ecc6299db9ec823/getrandom-0.1.14"
[2020-05-21T09:05:39Z DEBUG cargo::core::compiler::fingerprint] failed to get mtime of "/home/r/src/rust/miri/target/release/deps/libgetrandom-e2e72cbad51d6204.rlib": failed to stat `/home/r/src/rust/miri/target/release/deps/libgetrandom-e2e72cbad51d6204.rlib`
[2020-05-21T09:05:39Z DEBUG cargo::core::compiler::fingerprint] max output mtime for "/home/r/.cargo/registry/src/git.luolix.top-1ecc6299db9ec823/hex-0.4.2" is "/home/r/src/rust/miri/target/release/deps/libhex-0fe36fb18e2bc288.rlib" 1590051837.241485575s
[2020-05-21T09:05:39Z DEBUG cargo::core::compiler::fingerprint] all paths up-to-date relative to "/home/r/src/rust/miri/target/release/.fingerprint/hex-0fe36fb18e2bc288/dep-lib-hex" mtime=1590051836.473474042s
[2020-05-21T09:05:39Z DEBUG cargo::core::compiler::fingerprint] filesystem up-to-date "/home/r/.cargo/registry/src/git.luolix.top-1ecc6299db9ec823/hex-0.4.2"
[2020-05-21T09:05:39Z DEBUG cargo::core::compiler::fingerprint] max output mtime for "/home/r/.cargo/registry/src/git.luolix.top-1ecc6299db9ec823/ppv-lite86-0.2.6" is "/home/r/src/rust/miri/target/release/deps/libppv_lite86-4ffebe3117662ef0.rlib" 1590051837.093483351s
[2020-05-21T09:05:39Z DEBUG cargo::core::compiler::fingerprint] all paths up-to-date relative to "/home/r/src/rust/miri/target/release/.fingerprint/ppv-lite86-4ffebe3117662ef0/dep-lib-ppv-lite86" mtime=1590051835.653461737s
[2020-05-21T09:05:39Z DEBUG cargo::core::compiler::fingerprint] filesystem up-to-date "/home/r/.cargo/registry/src/git.luolix.top-1ecc6299db9ec823/ppv-lite86-0.2.6"
[2020-05-21T09:05:39Z DEBUG cargo::core::compiler::fingerprint] failed to get mtime of "/home/r/src/rust/miri/target/release/deps/librand_core-fc37e18ea6ac2caa.rlib": failed to stat `/home/r/src/rust/miri/target/release/deps/librand_core-fc37e18ea6ac2caa.rlib`
[2020-05-21T09:05:39Z DEBUG cargo::core::compiler::fingerprint] failed to get mtime of "/home/r/src/rust/miri/target/release/deps/librand_chacha-f5f82a1ac5058c42.rlib": failed to stat `/home/r/src/rust/miri/target/release/deps/librand_chacha-f5f82a1ac5058c42.rlib`
[2020-05-21T09:05:39Z DEBUG cargo::core::compiler::fingerprint] failed to get mtime of "/home/r/src/rust/miri/target/release/deps/librand-0c28141f1368438b.rlib": failed to stat `/home/r/src/rust/miri/target/release/deps/librand-0c28141f1368438b.rlib`
[2020-05-21T09:05:39Z DEBUG cargo::core::compiler::fingerprint] max output mtime for "/home/r/.cargo/registry/src/git.luolix.top-1ecc6299db9ec823/rustc-workspace-hack-1.0.0" is "/home/r/src/rust/miri/target/release/deps/librustc_workspace_hack-912614a0cfccb01e.rlib" 1590051836.157469298s
[2020-05-21T09:05:39Z DEBUG cargo::core::compiler::fingerprint] all paths up-to-date relative to "/home/r/src/rust/miri/target/release/.fingerprint/rustc-workspace-hack-912614a0cfccb01e/dep-lib-rustc-workspace-hack" mtime=1590051836.061467857s
[2020-05-21T09:05:39Z DEBUG cargo::core::compiler::fingerprint] filesystem up-to-date "/home/r/.cargo/registry/src/git.luolix.top-1ecc6299db9ec823/rustc-workspace-hack-1.0.0"
[2020-05-21T09:05:39Z DEBUG cargo::core::compiler::fingerprint] max output mtime for "/home/r/.cargo/registry/src/git.luolix.top-1ecc6299db9ec823/shell-escape-0.1.4" is "/home/r/src/rust/miri/target/release/deps/libshell_escape-61ddceece0b9932a.rlib" 1590051837.217485213s
[2020-05-21T09:05:39Z DEBUG cargo::core::compiler::fingerprint] all paths up-to-date relative to "/home/r/src/rust/miri/target/release/.fingerprint/shell-escape-61ddceece0b9932a/dep-lib-shell-escape" mtime=1590051836.397472901s
[2020-05-21T09:05:39Z DEBUG cargo::core::compiler::fingerprint] filesystem up-to-date "/home/r/.cargo/registry/src/git.luolix.top-1ecc6299db9ec823/shell-escape-0.1.4"
[2020-05-21T09:05:39Z DEBUG cargo::core::compiler::fingerprint] failed to get mtime of "/home/r/src/rust/miri/target/release/deps/libmiri-2a835cf91c1e67e5.rlib": failed to stat `/home/r/src/rust/miri/target/release/deps/libmiri-2a835cf91c1e67e5.rlib`
[2020-05-21T09:05:39Z DEBUG cargo::core::compiler::fingerprint] failed to get mtime of "/home/r/src/rust/miri/target/release/deps/miri-48ed93d966132f43": failed to stat `/home/r/src/rust/miri/target/release/deps/miri-48ed93d966132f43`
[2020-05-21T09:05:39Z INFO  cargo::core::compiler::fingerprint] fingerprint error for miri v0.1.0 (/home/r/src/rust/miri)/Build/TargetInner { name: "miri", tested: false, doc: true, ..: with_path("/home/r/src/rust/miri/src/bin/miri.rs", Edition2018) }
[2020-05-21T09:05:39Z INFO  cargo::core::compiler::fingerprint]     err: failed to read `/home/r/src/rust/miri/target/release/.fingerprint/miri-48ed93d966132f43/bin-miri`
    
    Caused by:
        No such file or directory (os error 2)
[2020-05-21T09:05:39Z DEBUG cargo::core::compiler::fingerprint] fingerprint at: /home/r/src/rust/miri/target/release/.fingerprint/byteorder-f599e8cd12c13c77/lib-byteorder
[2020-05-21T09:05:39Z DEBUG cargo::core::compiler::fingerprint] fingerprint at: /home/r/src/rust/miri/target/release/.fingerprint/byteorder-2f0d986a88f5693d/run-build-script-build-script-build
[2020-05-21T09:05:39Z DEBUG cargo::core::compiler::fingerprint] fingerprint at: /home/r/src/rust/miri/target/release/.fingerprint/byteorder-17173ab7ca556c80/build-script-build-script-build
[2020-05-21T09:05:39Z DEBUG cargo::core::compiler::fingerprint] fingerprint at: /home/r/src/rust/miri/target/release/.fingerprint/env_logger-a7b6af8796fba7b6/lib-env_logger
[2020-05-21T09:05:39Z INFO  cargo::core::compiler::fingerprint] fingerprint error for env_logger v0.7.1/Build/TargetInner { ..: lib_target("env_logger", ["lib"], "/home/r/.cargo/registry/src/git.luolix.top-1ecc6299db9ec823/env_logger-0.7.1/src/lib.rs", Edition2018) }
[2020-05-21T09:05:39Z INFO  cargo::core::compiler::fingerprint]     err: failed to read `/home/r/src/rust/miri/target/release/.fingerprint/env_logger-a7b6af8796fba7b6/lib-env_logger`
    
    Caused by:
        No such file or directory (os error 2)
[2020-05-21T09:05:39Z DEBUG cargo::core::compiler::fingerprint] fingerprint at: /home/r/src/rust/miri/target/release/.fingerprint/atty-91513423190e381c/lib-atty
[2020-05-21T09:05:39Z INFO  cargo::core::compiler::fingerprint] fingerprint error for atty v0.2.14/Build/TargetInner { ..: lib_target("atty", ["lib"], "/home/r/.cargo/registry/src/git.luolix.top-1ecc6299db9ec823/atty-0.2.14/src/lib.rs", Edition2015) }
[2020-05-21T09:05:39Z INFO  cargo::core::compiler::fingerprint]     err: failed to read `/home/r/src/rust/miri/target/release/.fingerprint/atty-91513423190e381c/lib-atty`
    
    Caused by:
        No such file or directory (os error 2)
[2020-05-21T09:05:39Z DEBUG cargo::core::compiler::fingerprint] fingerprint at: /home/r/src/rust/miri/target/release/.fingerprint/libc-69fefa542c222ea3/lib-libc
[2020-05-21T09:05:39Z INFO  cargo::core::compiler::fingerprint] fingerprint error for libc v0.2.68/Build/TargetInner { ..: lib_target("libc", ["lib"], "/home/r/.cargo/registry/src/git.luolix.top-1ecc6299db9ec823/libc-0.2.68/src/lib.rs", Edition2015) }
[2020-05-21T09:05:39Z INFO  cargo::core::compiler::fingerprint]     err: failed to read `/home/r/src/rust/miri/target/release/.fingerprint/libc-69fefa542c222ea3/lib-libc`
    
    Caused by:
        No such file or directory (os error 2)
[2020-05-21T09:05:39Z DEBUG cargo::core::compiler::fingerprint] fingerprint at: /home/r/src/rust/miri/target/release/.fingerprint/libc-c46b23a58d539580/run-build-script-build-script-build
[2020-05-21T09:05:39Z INFO  cargo::core::compiler::fingerprint] fingerprint error for libc v0.2.68/RunCustomBuild/TargetInner { ..: custom_build_target("build-script-build", "/home/r/.cargo/registry/src/git.luolix.top-1ecc6299db9ec823/libc-0.2.68/build.rs", Edition2015) }
[2020-05-21T09:05:39Z INFO  cargo::core::compiler::fingerprint]     err: failed to read `/home/r/src/rust/miri/target/release/.fingerprint/libc-c46b23a58d539580/run-build-script-build-script-build`
    
    Caused by:
        No such file or directory (os error 2)
[2020-05-21T09:05:39Z DEBUG cargo::core::compiler::fingerprint] fingerprint at: /home/r/src/rust/miri/target/release/.fingerprint/libc-de46732a7dd58a52/build-script-build-script-build
[2020-05-21T09:05:39Z INFO  cargo::core::compiler::fingerprint] fingerprint error for libc v0.2.68/Build/TargetInner { ..: custom_build_target("build-script-build", "/home/r/.cargo/registry/src/git.luolix.top-1ecc6299db9ec823/libc-0.2.68/build.rs", Edition2015) }
[2020-05-21T09:05:39Z INFO  cargo::core::compiler::fingerprint]     err: failed to read `/home/r/src/rust/miri/target/release/.fingerprint/libc-de46732a7dd58a52/build-script-build-script-build`
    
    Caused by:
        No such file or directory (os error 2)
[2020-05-21T09:05:39Z DEBUG cargo::core::compiler::fingerprint] fingerprint at: /home/r/src/rust/miri/target/release/.fingerprint/humantime-bb3dee3817149864/lib-humantime
[2020-05-21T09:05:39Z DEBUG cargo::core::compiler::fingerprint] fingerprint at: /home/r/src/rust/miri/target/release/.fingerprint/quick-error-934e6ad81d9dfa4b/lib-quick-error
[2020-05-21T09:05:39Z DEBUG cargo::core::compiler::fingerprint] fingerprint at: /home/r/src/rust/miri/target/release/.fingerprint/log-fc3f06ec9d60fa82/lib-log
[2020-05-21T09:05:39Z DEBUG cargo::core::compiler::fingerprint] fingerprint at: /home/r/src/rust/miri/target/release/.fingerprint/cfg-if-33adbc7c23a934c7/lib-cfg-if
[2020-05-21T09:05:39Z DEBUG cargo::core::compiler::fingerprint] fingerprint at: /home/r/src/rust/miri/target/release/.fingerprint/log-3873c4462fc9dc01/run-build-script-build-script-build
[2020-05-21T09:05:39Z DEBUG cargo::core::compiler::fingerprint] fingerprint at: /home/r/src/rust/miri/target/release/.fingerprint/log-87e035bf3b1f0e1e/build-script-build-script-build
[2020-05-21T09:05:39Z DEBUG cargo::core::compiler::fingerprint] fingerprint at: /home/r/src/rust/miri/target/release/.fingerprint/regex-ed22c5d6cd1b24c6/lib-regex
[2020-05-21T09:05:39Z DEBUG cargo::core::compiler::fingerprint] fingerprint at: /home/r/src/rust/miri/target/release/.fingerprint/aho-corasick-f2cbf3b0fc841bd2/lib-aho_corasick
[2020-05-21T09:05:39Z DEBUG cargo::core::compiler::fingerprint] fingerprint at: /home/r/src/rust/miri/target/release/.fingerprint/memchr-86b147493fa62f8a/lib-memchr
[2020-05-21T09:05:39Z DEBUG cargo::core::compiler::fingerprint] fingerprint at: /home/r/src/rust/miri/target/release/.fingerprint/memchr-b384440aaf555c93/run-build-script-build-script-build
[2020-05-21T09:05:39Z DEBUG cargo::core::compiler::fingerprint] fingerprint at: /home/r/src/rust/miri/target/release/.fingerprint/memchr-e58853fbb70da567/build-script-build-script-build
[2020-05-21T09:05:39Z DEBUG cargo::core::compiler::fingerprint] fingerprint at: /home/r/src/rust/miri/target/release/.fingerprint/regex-syntax-6ca8b640a5e3a7c0/lib-regex-syntax
[2020-05-21T09:05:39Z DEBUG cargo::core::compiler::fingerprint] fingerprint at: /home/r/src/rust/miri/target/release/.fingerprint/thread_local-db7f53207e252231/lib-thread_local
[2020-05-21T09:05:39Z DEBUG cargo::core::compiler::fingerprint] fingerprint at: /home/r/src/rust/miri/target/release/.fingerprint/lazy_static-79cb8478fcd4b466/lib-lazy_static
[2020-05-21T09:05:39Z DEBUG cargo::core::compiler::fingerprint] fingerprint at: /home/r/src/rust/miri/target/release/.fingerprint/termcolor-0fda61feb678b873/lib-termcolor
[2020-05-21T09:05:39Z DEBUG cargo::core::compiler::fingerprint] fingerprint at: /home/r/src/rust/miri/target/release/.fingerprint/getrandom-e2e72cbad51d6204/lib-getrandom
[2020-05-21T09:05:39Z INFO  cargo::core::compiler::fingerprint] fingerprint error for getrandom v0.1.14/Build/TargetInner { ..: lib_target("getrandom", ["lib"], "/home/r/.cargo/registry/src/git.luolix.top-1ecc6299db9ec823/getrandom-0.1.14/src/lib.rs", Edition2018) }
[2020-05-21T09:05:39Z INFO  cargo::core::compiler::fingerprint]     err: failed to read `/home/r/src/rust/miri/target/release/.fingerprint/getrandom-e2e72cbad51d6204/lib-getrandom`
    
    Caused by:
        No such file or directory (os error 2)
[2020-05-21T09:05:39Z DEBUG cargo::core::compiler::fingerprint] fingerprint at: /home/r/src/rust/miri/target/release/.fingerprint/getrandom-931d791e79d125bc/run-build-script-build-script-build
[2020-05-21T09:05:39Z DEBUG cargo::core::compiler::fingerprint] fingerprint at: /home/r/src/rust/miri/target/release/.fingerprint/getrandom-661d8d4e5653816f/build-script-build-script-build
[2020-05-21T09:05:39Z DEBUG cargo::core::compiler::fingerprint] fingerprint at: /home/r/src/rust/miri/target/release/.fingerprint/hex-0fe36fb18e2bc288/lib-hex
[2020-05-21T09:05:39Z DEBUG cargo::core::compiler::fingerprint] fingerprint at: /home/r/src/rust/miri/target/release/.fingerprint/miri-2a835cf91c1e67e5/lib-miri
[2020-05-21T09:05:39Z INFO  cargo::core::compiler::fingerprint] fingerprint error for miri v0.1.0 (/home/r/src/rust/miri)/Build/TargetInner { doctest: false, ..: lib_target("miri", ["lib"], "/home/r/src/rust/miri/src/lib.rs", Edition2018) }
[2020-05-21T09:05:39Z INFO  cargo::core::compiler::fingerprint]     err: failed to read `/home/r/src/rust/miri/target/release/.fingerprint/miri-2a835cf91c1e67e5/lib-miri`
    
    Caused by:
        No such file or directory (os error 2)
[2020-05-21T09:05:39Z DEBUG cargo::core::compiler::fingerprint] fingerprint at: /home/r/src/rust/miri/target/release/.fingerprint/rand-0c28141f1368438b/lib-rand
[2020-05-21T09:05:39Z INFO  cargo::core::compiler::fingerprint] fingerprint error for rand v0.7.3/Build/TargetInner { ..: lib_target("rand", ["lib"], "/home/r/.cargo/registry/src/git.luolix.top-1ecc6299db9ec823/rand-0.7.3/src/lib.rs", Edition2018) }
[2020-05-21T09:05:39Z INFO  cargo::core::compiler::fingerprint]     err: failed to read `/home/r/src/rust/miri/target/release/.fingerprint/rand-0c28141f1368438b/lib-rand`
    
    Caused by:
        No such file or directory (os error 2)
[2020-05-21T09:05:39Z DEBUG cargo::core::compiler::fingerprint] fingerprint at: /home/r/src/rust/miri/target/release/.fingerprint/rand_chacha-f5f82a1ac5058c42/lib-rand_chacha
[2020-05-21T09:05:39Z INFO  cargo::core::compiler::fingerprint] fingerprint error for rand_chacha v0.2.2/Build/TargetInner { ..: lib_target("rand_chacha", ["lib"], "/home/r/.cargo/registry/src/git.luolix.top-1ecc6299db9ec823/rand_chacha-0.2.2/src/lib.rs", Edition2018) }
[2020-05-21T09:05:39Z INFO  cargo::core::compiler::fingerprint]     err: failed to read `/home/r/src/rust/miri/target/release/.fingerprint/rand_chacha-f5f82a1ac5058c42/lib-rand_chacha`
    
    Caused by:
        No such file or directory (os error 2)
[2020-05-21T09:05:39Z DEBUG cargo::core::compiler::fingerprint] fingerprint at: /home/r/src/rust/miri/target/release/.fingerprint/ppv-lite86-4ffebe3117662ef0/lib-ppv-lite86
[2020-05-21T09:05:39Z DEBUG cargo::core::compiler::fingerprint] fingerprint at: /home/r/src/rust/miri/target/release/.fingerprint/rand_core-fc37e18ea6ac2caa/lib-rand_core
[2020-05-21T09:05:39Z INFO  cargo::core::compiler::fingerprint] fingerprint error for rand_core v0.5.1/Build/TargetInner { ..: lib_target("rand_core", ["lib"], "/home/r/.cargo/registry/src/git.luolix.top-1ecc6299db9ec823/rand_core-0.5.1/src/lib.rs", Edition2018) }
[2020-05-21T09:05:39Z INFO  cargo::core::compiler::fingerprint]     err: failed to read `/home/r/src/rust/miri/target/release/.fingerprint/rand_core-fc37e18ea6ac2caa/lib-rand_core`
    
    Caused by:
        No such file or directory (os error 2)
[2020-05-21T09:05:39Z DEBUG cargo::core::compiler::fingerprint] fingerprint at: /home/r/src/rust/miri/target/release/.fingerprint/rustc-workspace-hack-912614a0cfccb01e/lib-rustc-workspace-hack
[2020-05-21T09:05:39Z DEBUG cargo::core::compiler::fingerprint] fingerprint at: /home/r/src/rust/miri/target/release/.fingerprint/shell-escape-61ddceece0b9932a/lib-shell-escape
   Compiling libc v0.2.68
[2020-05-21T09:05:39Z DEBUG cargo::core::compiler::fingerprint] write fingerprint (145efb6537c1b89) : /home/r/src/rust/miri/target/release/.fingerprint/libc-de46732a7dd58a52/build-script-build-script-build                              
[2020-05-21T09:05:39Z DEBUG cargo::core::compiler::fingerprint] write fingerprint (d1e618ad399d0665) : /home/r/src/rust/miri/target/release/.fingerprint/libc-c46b23a58d539580/run-build-script-build-script-build                         
   Compiling getrandom v0.1.14
   Compiling atty v0.2.14
   Compiling env_logger v0.7.1
[2020-05-21T09:05:40Z DEBUG cargo::core::compiler::fingerprint] write fingerprint (4e36eb66c715d6b6) : /home/r/src/rust/miri/target/release/.fingerprint/libc-69fefa542c222ea3/lib-libc                                                    
[2020-05-21T09:05:40Z DEBUG cargo::core::compiler::fingerprint] write fingerprint (5937ef1ebba27673) : /home/r/src/rust/miri/target/release/.fingerprint/atty-91513423190e381c/lib-atty                                                    
   Compiling rand_core v0.5.1
[2020-05-21T09:05:40Z DEBUG cargo::core::compiler::fingerprint] write fingerprint (e37213f74e80ce21) : /home/r/src/rust/miri/target/release/.fingerprint/getrandom-e2e72cbad51d6204/lib-getrandom                                          
   Compiling rand_chacha v0.2.2
[2020-05-21T09:05:41Z DEBUG cargo::core::compiler::fingerprint] write fingerprint (f3881f4084cce477) : /home/r/src/rust/miri/target/release/.fingerprint/rand_core-fc37e18ea6ac2caa/lib-rand_core                                          
   Compiling rand v0.7.3
[2020-05-21T09:05:41Z DEBUG cargo::core::compiler::fingerprint] write fingerprint (8d4f9228fe8245b0) : /home/r/src/rust/miri/target/release/.fingerprint/env_logger-a7b6af8796fba7b6/lib-env_logger                                        
[2020-05-21T09:05:42Z DEBUG cargo::core::compiler::fingerprint] write fingerprint (a2d3d3daae441efe) : /home/r/src/rust/miri/target/release/.fingerprint/rand_chacha-f5f82a1ac5058c42/lib-rand_chacha                                      
   Compiling miri v0.1.0 (/home/r/src/rust/miri)
[2020-05-21T09:05:42Z DEBUG cargo::core::compiler::fingerprint] write fingerprint (705f6ffcf4856eb0) : /home/r/src/rust/miri/target/release/.fingerprint/rand-0c28141f1368438b/lib-rand                                                    
[2020-05-21T09:06:20Z DEBUG cargo::core::compiler::fingerprint] write fingerprint (901d27b92f1570c5) : /home/r/src/rust/miri/target/release/.fingerprint/miri-2a835cf91c1e67e5/lib-miri                                                    
[2020-05-21T09:06:23Z DEBUG cargo::core::compiler::fingerprint] write fingerprint (d6bebc15a891bf23) : /home/r/src/rust/miri/target/release/.fingerprint/miri-48ed93d966132f43/bin-miri                                                    
    Finished release [optimized] target(s) in 44.33s
   Replacing /home/r/.cargo/bin/miri
    Replaced package `miri v0.1.0 (/home/r/src/rust/miri)` with `miri v0.1.0 (/home/r/src/rust/miri)` (executable `miri`)

Instead I used cargo tree to figure out what depends on the first rebuilt package, and then went through all their Cargo.toml files manually to check the enabled features. That is quite tedious.

Possibly this is not even considered a "rebuild" by cargo, it's "just" different feature flags, but the user-facing effect is similar. Maybe cargo tree could also say which feature flag of which crate is enabled from where to avoid having to go through all those Cargo.toml files manually?

@ehuss
Copy link
Contributor

ehuss commented May 21, 2020

Hm, I don't see how cargo build would select different features from cargo install --path .. What were the exact commands?

And, yea, the trace doesn't help much because the hash changes, so as far as Cargo is concerned it is an independent thing. Cargo would need some kind of database for tracking artifacts to be able to correlate what changed.

cargo tree has flags for indicating where features are enabled from. cargo tree -e features -i syn will show how each syn feature is enabled. There's more info in the docs.

@RalfJung
Copy link
Member

cargo tree has flags for indicating where features are enabled from. cargo tree -e features -i syn will show how each syn feature is enabled.

Oh that's awesome, I should have checked the docs before posting! Sorry for that.

Hm, I don't see how cargo build would select different features from cargo install --path .. What were the exact commands?

I'm invoking cargo through a script as we need some flags to make things actually work... I'll see if I can reproduce this with simple cargo invocations.

@RalfJung
Copy link
Member

To reproduce, fetch this branch and use a recent nightly toolchain with rustc-dev installed. Then run:

cargo build --release
cargo install --path . --force --locked

The second command then does

$ cargo install --path . --force --locked
  Installing miri v0.1.0 (/home/r/src/rust/miri)
    Updating crates.io index
   Compiling serde v1.0.106
   Compiling semver v0.9.0
   Compiling serde_json v1.0.51
   Compiling rustc_version v0.2.3
   Compiling cargo_metadata v0.9.1
   [...]

@ehuss
Copy link
Contributor

ehuss commented May 21, 2020

Oh, I forgot that cargo install ignores dev dependencies altogether. Well at least the new feature resolver does that, too (-Zfeatures=all won't rebuild between the two).

@RalfJung
Copy link
Member

Well at least the new feature resolver does that, too

As in, the new feature resolver replicates the behavior of the old one?

@ehuss
Copy link
Contributor

ehuss commented May 21, 2020

No, it ignores dev-dependencies if they aren't used, so cargo build and cargo install will resolve to the same features.

@RalfJung
Copy link
Member

Oh I see. But then cargo test will still do the same rebuilds? Or can it avoid rebuilding the big binary and just build the test suite with dev-dependencies?

@ehuss
Copy link
Contributor

ehuss commented May 21, 2020

cargo test would trigger a rebuild compared to cargo build. It's a limitation of how dependencies are constructed, but also an intentional design to avoid duplicate builds during a normal cargo test for most projects. If you want to avoid rebuilds in all situations, you'll have to add features to your normal dependencies to sync them with the dev-dependencies.

@weihanglo
Copy link
Member

#11407 is an attempt to provide recompile reasons in verbose mode (e.g. cargo build --verbose).
#11407 (comment) contains screenshots to preview the change. Those messages are nearly 1 to 1 copied from old log messages and could be extended with more useful information.

@ehuss
Copy link
Contributor

ehuss commented Dec 30, 2022

I'm going to reopen since this is not complete. The current implementation only tracks a small number of reasons that can trigger a rebuild, and doesn't provide after-the-fact reporting. The longer term plan is:

  • Start recording fingerprints in sqlite (or similar).
  • Keep a journal of reasons a build was dirty.
  • Offer a CLI command to query that journal (such as cargo report rebuild).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
A-rebuild-detection Area: rebuild detection and fingerprinting C-feature-request Category: proposal for a feature. Before PR, ping rust-lang/cargo if this is not `Feature accepted` Command-report S-needs-design Status: Needs someone to work further on the design for the feature or fix. NOT YET accepted.
Projects
Status: Big Projects, no backers
Development

Successfully merging a pull request may close this issue.

8 participants