diff options
| author | Josh Stone <jistone@redhat.com> | 2018-05-15 17:48:02 -0700 |
|---|---|---|
| committer | Josh Stone <jistone@redhat.com> | 2018-05-15 17:48:02 -0700 |
| commit | e8e5eb58c0d6890f73ea01354e18f51b1a6697f8 (patch) | |
| tree | 34d6cac4bd2a9c355a4344791eafe382fa766711 | |
| parent | f0fdaba04ea7474cd1f66264ef4edb3485a95864 (diff) | |
| download | rust-e8e5eb58c0d6890f73ea01354e18f51b1a6697f8.tar.gz rust-e8e5eb58c0d6890f73ea01354e18f51b1a6697f8.zip | |
Ensure libraries built in stage0 have unique metadata
Issue #50786 shows a case with local rebuild where the libraries built by stage0 had the same suffix as stage0's own, and were accidentally loaded by that stage0 rustc when compiling `librustc_trans`. Now we set `__CARGO_DEFAULT_LIB_METADATA` to "bootstrap" during stage0, rather than the release channel like usual, so the library suffix will always be completely distinct from the stage0 compiler.
| -rw-r--r-- | src/bootstrap/builder.rs | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/src/bootstrap/builder.rs b/src/bootstrap/builder.rs index 17f19222e6e..e5824010ef2 100644 --- a/src/bootstrap/builder.rs +++ b/src/bootstrap/builder.rs @@ -592,7 +592,15 @@ impl<'a> Builder<'a> { // FIXME: Temporary fix for https://github.com/rust-lang/cargo/issues/3005 // Force cargo to output binaries with disambiguating hashes in the name - cargo.env("__CARGO_DEFAULT_LIB_METADATA", &self.config.channel); + let metadata = if compiler.stage == 0 { + // Treat stage0 like special channel, whether it's a normal prior- + // release rustc or a local rebuild with the same version, so we + // never mix these libraries by accident. + "bootstrap" + } else { + &self.config.channel + }; + cargo.env("__CARGO_DEFAULT_LIB_METADATA", &metadata); let stage; if compiler.stage == 0 && self.local_rebuild { |
