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

Fix avoiding a rebuild when moving around a workspace #5671

Merged
merged 1 commit into from
Jun 29, 2018

Conversation

Mark-Simulacrum
Copy link
Member

This is a backport of #5669.

There's a case where Cargo will recompile a project even if the fingerprint
looks like it's fresh, when some output files are missing. This was intended to
cover the case where an output file was deleted manually or otherwise messed
with. The check here was a bit too eager, however. It checked not only the
actual output destination of the compiler but also the location that we hard
link the output file up to.

Due to recent changes in #5460 we don't always create the hard links for path
dependencies in the top-level dir, and this meant that if the library were
compiled and then tested later on the test may recompile the original library by
accident.

The fix in this commit is to cease looking for the hardlink if it exists or not.
This way we only check for the presence of the output file itself and only
recompile if that file is missing. The reason for this is that we
unconditionally relink files into place whether it's fresh or not, so we'll
always recreate the hard link anyway if it's missing.

cc rust-lang/rust#51717

r? @alexcrichton

There's a case where Cargo will recompile a project even if the fingerprint
looks like it's fresh, when some output files are missing. This was intended to
cover the case where an output file was deleted manually or otherwise messed
with. The check here was a bit too eager, however. It checked not only the
actual output destination of the compiler but *also* the location that we hard
link the output file up to.

Due to recent changes in rust-lang#5460 we don't always create the hard links for path
dependencies in the top-level dir, and this meant that if the library were
compiled and then tested later on the test may recompile the original library by
accident.

The fix in this commit is to cease looking for the hardlink if it exists or not.
This way we only check for the presence of the output file itself and only
recompile if that file is missing. The reason for this is that we
unconditionally relink files into place whether it's fresh or not, so we'll
always recreate the hard link anyway if it's missing.

cc rust-lang/rust#51717
@rust-highfive
Copy link

warning Warning warning

  • Pull requests are usually filed against the master branch for this repo, but this one is against rust-1.28.0. Please double check that you specified the right target!

@alexcrichton
Copy link
Member

@bors: r+

@bors
Copy link
Contributor

bors commented Jun 29, 2018

📌 Commit 68572ee has been approved by alexcrichton

@bors
Copy link
Contributor

bors commented Jun 29, 2018

⌛ Testing commit 68572ee with merge ecd127c71c1dfaa311b66cc88e51995e41000d6d...

@bors
Copy link
Contributor

bors commented Jun 29, 2018

💔 Test failed - status-appveyor

@alexcrichton
Copy link
Member

@bors: retry

@bors
Copy link
Contributor

bors commented Jun 29, 2018

⌛ Testing commit 68572ee with merge f6719ff...

bors added a commit that referenced this pull request Jun 29, 2018
Fix avoiding a rebuild when moving around a workspace

This is a backport of #5669.

There's a case where Cargo will recompile a project even if the fingerprint
looks like it's fresh, when some output files are missing. This was intended to
cover the case where an output file was deleted manually or otherwise messed
with. The check here was a bit too eager, however. It checked not only the
actual output destination of the compiler but *also* the location that we hard
link the output file up to.

Due to recent changes in #5460 we don't always create the hard links for path
dependencies in the top-level dir, and this meant that if the library were
compiled and then tested later on the test may recompile the original library by
accident.

The fix in this commit is to cease looking for the hardlink if it exists or not.
This way we only check for the presence of the output file itself and only
recompile if that file is missing. The reason for this is that we
unconditionally relink files into place whether it's fresh or not, so we'll
always recreate the hard link anyway if it's missing.

cc rust-lang/rust#51717

r? @alexcrichton
@bors
Copy link
Contributor

bors commented Jun 29, 2018

☀️ Test successful - status-appveyor, status-travis
Approved by: alexcrichton
Pushing f6719ff to rust-1.28.0...

@bors bors merged commit 68572ee into rust-lang:rust-1.28.0 Jun 29, 2018
Mark-Simulacrum added a commit to Mark-Simulacrum/rust that referenced this pull request Jun 29, 2018
This pulls in rust-lang/cargo#5671.

It should permit us to bootstrap from the new beta compiler
successfully.
@ehuss
Copy link
Contributor

ehuss commented Jun 29, 2018

Ah, crud. @alexcrichton I guess my fix for linux for changing_bin_features_caches_targets re-broke it on the windows side. 😦 I can't remember if I stress-tested that on Windows, but I'll try again and see if there is a good solution. I'm wondering if there is a thread-safe way to implement fs::copy.

bors added a commit to rust-lang/rust that referenced this pull request Jun 30, 2018
…chton

Update beta Cargo

This pulls in rust-lang/cargo#5671.

It should permit us to bootstrap from the new beta compiler
successfully.

r? @alexcrichton
moshg pushed a commit to moshg/rust-std-ja that referenced this pull request Apr 4, 2020
This pulls in rust-lang/cargo#5671.

It should permit us to bootstrap from the new beta compiler
successfully.
moshg pushed a commit to moshg/rust-std-ja that referenced this pull request Apr 4, 2020
…chton

Update beta Cargo

This pulls in rust-lang/cargo#5671.

It should permit us to bootstrap from the new beta compiler
successfully.

r? @alexcrichton
@ehuss ehuss added this to the 1.28.0 milestone Feb 6, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants