Fingerprint build script deps only for path packages.#6734
Merged
bors merged 1 commit intorust-lang:masterfrom Mar 11, 2019
Merged
Fingerprint build script deps only for path packages.#6734bors merged 1 commit intorust-lang:masterfrom
bors merged 1 commit intorust-lang:masterfrom
Conversation
|
(rust_highfive has picked a reviewer for you, use r? to override) |
Member
|
@bors: r+ |
Contributor
|
📌 Commit 5e7b50a has been approved by |
Contributor
|
⌛ Testing commit 5e7b50a with merge 06fdf54c330f6908c0435ba48f16a9ea12da7a6a... |
Contributor
|
💔 Test failed - checks-travis |
Member
|
@bors: retry |
Contributor
bors
added a commit
that referenced
this pull request
Mar 11, 2019
Fingerprint build script deps only for path packages. #6720 introduced some protection that if there is a build script, and two commands are used (such as `cargo build` then `cargo test`), the second command would correctly get rebuilt. However, the way it was implemented relies on mtimes working correctly. A common use case is to cache built dependencies in Docker, and Docker zeros the nanoseconds from mtime when the image is saved. This caused all packages that had build scripts to get rebuilt when the Docker image runs. The solution here is to only use the #6720 protection for local (path) packages. This runs under the assumption that mtimes need to work for those anyways. The consequence is that the scenario in #6720 will no longer work for detecting changes in registry dependencies with build scripts. Fixing that final edge case is nontrivial. Since it is unlikely to happen often, I figure this workaround should be sufficient for now. cc rust-lang/rust-playground#469 cc rust-lang/rust#59061
Contributor
|
☀️ Test successful - checks-travis, status-appveyor |
Member
|
Will this just make its way into a regular nightly automatically? |
Contributor
Author
|
No. I'll post an update now. |
bors
added a commit
to rust-lang/rust
that referenced
this pull request
Mar 13, 2019
Update cargo 5 commits in 95b45eca19ac785263fed98ecefe540bb47337ac..dd761226d944712a363ea515cb294f4e2b6bdbe5 2019-03-06 19:24:30 +0000 to 2019-03-11 18:51:14 +0000 - Fingerprint build script deps only for path packages. (rust-lang/cargo#6734) - Add --quiet option for `cargo test` (rust-lang/cargo#6358) - .gitignore should end with a newline. (rust-lang/cargo#6732) - Emit warning on misspelled environment variables (rust-lang/cargo#6694) - Update glob requirement from 0.2.11 to 0.3.0 (rust-lang/cargo#6724)
bors
added a commit
to rust-lang/rust
that referenced
this pull request
Mar 13, 2019
Update cargo 6 commits in 95b45eca19ac785263fed98ecefe540bb47337ac..0e35bd8af0ec72d3225c4819b330b94628f0e9d0 2019-03-06 19:24:30 +0000 to 2019-03-13 06:52:51 +0000 - Make `hg` optional for tests. (rust-lang/cargo#6739) - Fingerprint build script deps only for path packages. (rust-lang/cargo#6734) - Add --quiet option for `cargo test` (rust-lang/cargo#6358) - .gitignore should end with a newline. (rust-lang/cargo#6732) - Emit warning on misspelled environment variables (rust-lang/cargo#6694) - Update glob requirement from 0.2.11 to 0.3.0 (rust-lang/cargo#6724)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
#6720 introduced some protection that if there is a build script, and two commands are used (such as
cargo buildthencargo test), the second command would correctly get rebuilt. However, the way it was implemented relies on mtimes working correctly. A common use case is to cache built dependencies in Docker, and Docker zeros the nanoseconds from mtime when the image is saved. This caused all packages that had build scripts to get rebuilt when the Docker image runs.The solution here is to only use the #6720 protection for local (path) packages. This runs under the assumption that mtimes need to work for those anyways.
The consequence is that the scenario in #6720 will no longer work for detecting changes in registry dependencies with build scripts. Fixing that final edge case is nontrivial. Since it is unlikely to happen often, I figure this workaround should be sufficient for now.
cc rust-lang/rust-playground#469
cc rust-lang/rust#59061