diff options
Diffstat (limited to 'community/rust/ensure-stage0-libs-have-unique-metadata.patch')
-rw-r--r-- | community/rust/ensure-stage0-libs-have-unique-metadata.patch | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/community/rust/ensure-stage0-libs-have-unique-metadata.patch b/community/rust/ensure-stage0-libs-have-unique-metadata.patch new file mode 100644 index 0000000000..8141a4784e --- /dev/null +++ b/community/rust/ensure-stage0-libs-have-unique-metadata.patch @@ -0,0 +1,39 @@ +From e8e5eb58c0d6890f73ea01354e18f51b1a6697f8 Mon Sep 17 00:00:00 2001 +From: Josh Stone <jistone@redhat.com> +Date: Tue, 15 May 2018 17:48:02 -0700 +Subject: [PATCH] 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. + +Patch-Source: https://github.com/rust-lang/rust/pull/50789 +--- + src/bootstrap/builder.rs | 10 +++++++++- + 1 file changed, 9 insertions(+), 1 deletion(-) + +diff --git a/src/bootstrap/builder.rs b/src/bootstrap/builder.rs +index 17f19222e6ea..e5824010ef2c 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 { |