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.
This commit is contained in:
parent
f0fdaba04e
commit
e8e5eb58c0
1 changed files with 9 additions and 1 deletions
|
@ -592,7 +592,15 @@ impl<'a> Builder<'a> {
|
||||||
|
|
||||||
// FIXME: Temporary fix for https://github.com/rust-lang/cargo/issues/3005
|
// FIXME: Temporary fix for https://github.com/rust-lang/cargo/issues/3005
|
||||||
// Force cargo to output binaries with disambiguating hashes in the name
|
// 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;
|
let stage;
|
||||||
if compiler.stage == 0 && self.local_rebuild {
|
if compiler.stage == 0 && self.local_rebuild {
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue