diff options
| author | Matthias Krüger <matthias.krueger@famsik.de> | 2024-01-21 12:28:54 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-01-21 12:28:54 +0100 |
| commit | ac713695f30f1c0b8fedef9896bb201dea0dbeda (patch) | |
| tree | cfbc9165a952c255db532b0bd83ac9212fa3a279 | |
| parent | e59a6fe63f28e3feaac778e08df782b937ccee89 (diff) | |
| parent | f6b3bcc4313b7d6c217a92f8e9615f0b136c9ab3 (diff) | |
| download | rust-ac713695f30f1c0b8fedef9896bb201dea0dbeda.tar.gz rust-ac713695f30f1c0b8fedef9896bb201dea0dbeda.zip | |
Rollup merge of #120167 - dtolnay:bootstrap, r=clubby789
Capture the rationale for `-Zallow-features=` in bootstrap.py Based on the discussion in https://github.com/rust-lang/rust/pull/120096.
| -rw-r--r-- | src/bootstrap/bootstrap.py | 28 |
1 files changed, 20 insertions, 8 deletions
diff --git a/src/bootstrap/bootstrap.py b/src/bootstrap/bootstrap.py index 28d96cb1cfe..83fdcddecf2 100644 --- a/src/bootstrap/bootstrap.py +++ b/src/bootstrap/bootstrap.py @@ -924,17 +924,29 @@ class RustBuild(object): # default toolchain is not nightly. # # But that setting has the collateral effect of rust-analyzer also - # passing RUSTC_BOOTSTRAP=1 to all x.py invocations too (the various overrideCommand). - # For compiling bootstrap that can cause spurious rebuilding of bootstrap when - # rust-analyzer x.py invocations are interleaved with handwritten ones on the - # command line. + # passing RUSTC_BOOTSTRAP=1 to all x.py invocations too (the various + # overrideCommand). # - # Set RUSTC_BOOTSTRAP=1 consistently. + # Set a consistent RUSTC_BOOTSTRAP=1 here to prevent spurious rebuilds + # of bootstrap when rust-analyzer x.py invocations are interleaved with + # handwritten ones on the command line. env["RUSTC_BOOTSTRAP"] = "1" - default_rustflags = "" if env.get("RUSTFLAGS_BOOTSTRAP", "") else "-Zallow-features=" - - env.setdefault("RUSTFLAGS", default_rustflags) + # If any of RUSTFLAGS or RUSTFLAGS_BOOTSTRAP are present and nonempty, + # we allow arbitrary compiler flags in there, including unstable ones + # such as `-Zthreads=8`. + # + # But if there aren't custom flags being passed to bootstrap, then we + # cancel the RUSTC_BOOTSTRAP=1 from above by passing `-Zallow-features=` + # to ensure unstable language or library features do not accidentally + # get introduced into bootstrap over time. Distros rely on being able to + # compile bootstrap with a variety of their toolchains, not necessarily + # the same as Rust's CI uses. + if env.get("RUSTFLAGS", "") or env.get("RUSTFLAGS_BOOTSTRAP", ""): + # Preserve existing RUSTFLAGS. + env.setdefault("RUSTFLAGS", "") + else: + env["RUSTFLAGS"] = "-Zallow-features=" target_features = [] if self.get_toml("crt-static", build_section) == "true": |
