diff options
| author | Joshua Nelson <jyn514@gmail.com> | 2021-03-22 02:31:47 -0400 |
|---|---|---|
| committer | Joshua Nelson <jyn514@gmail.com> | 2021-04-05 09:46:43 -0400 |
| commit | 580a740bdd35706e487abd5beb76bd28f2be4012 (patch) | |
| tree | 935573b39c41531ff59b924c1dda349d5102566a /src/bootstrap | |
| parent | 35385770ae1ea86a911cc44ac43f856831e44b26 (diff) | |
| download | rust-580a740bdd35706e487abd5beb76bd28f2be4012.tar.gz rust-580a740bdd35706e487abd5beb76bd28f2be4012.zip | |
Add `download-rustc = "if-unchanged"`
This allows keeping the setting to a fixed value without having to toggle it when you want to work on the compiler instead of on tools.
Diffstat (limited to 'src/bootstrap')
| -rw-r--r-- | src/bootstrap/bootstrap.py | 8 | ||||
| -rw-r--r-- | src/bootstrap/config.rs | 5 |
2 files changed, 10 insertions, 3 deletions
diff --git a/src/bootstrap/bootstrap.py b/src/bootstrap/bootstrap.py index 3e7d1d54f12..59f22f3310c 100644 --- a/src/bootstrap/bootstrap.py +++ b/src/bootstrap/bootstrap.py @@ -638,8 +638,10 @@ class RustBuild(object): # Return the stage1 compiler to download, if any. def maybe_download_rustc(self): # If `download-rustc` is not set, default to rebuilding. - if self.get_toml("download-rustc", section="rust") != "true": + download_rustc = self.get_toml("download-rustc", section="rust") + if download_rustc is None or download_rustc == "false": return None + assert download_rustc == "true" or download_rustc == "if-unchanged", download_rustc # Handle running from a directory other than the top level rev_parse = ["git", "rev-parse", "--show-toplevel"] @@ -654,6 +656,8 @@ class RustBuild(object): # Warn if there were changes to the compiler since the ancestor commit. status = subprocess.call(["git", "diff-index", "--quiet", commit, "--", compiler]) if status != 0: + if download_rustc == "if-unchanged": + return None print("warning: `download-rustc` is enabled, but there are changes to compiler/") return commit @@ -1158,6 +1162,8 @@ def bootstrap(help_triggered): env["RUSTC_BOOTSTRAP"] = '1' if toml_path: env["BOOTSTRAP_CONFIG"] = toml_path + if build.rustc_commit is not None: + env["BOOTSTRAP_DOWNLOAD_RUSTC"] = '1' run(args, env=env, verbose=build.verbose) diff --git a/src/bootstrap/config.rs b/src/bootstrap/config.rs index b9b090bb2d2..43ae146e866 100644 --- a/src/bootstrap/config.rs +++ b/src/bootstrap/config.rs @@ -510,7 +510,8 @@ struct Rust { new_symbol_mangling: Option<bool>, profile_generate: Option<String>, profile_use: Option<String>, - download_rustc: Option<bool>, + // ignored; this is set from an env var set by bootstrap.py + download_rustc: Option<StringOrBool>, } /// TOML representation of how each build target is configured. @@ -897,7 +898,7 @@ impl Config { config.rust_codegen_units_std = rust.codegen_units_std.map(threads_from_config); config.rust_profile_use = flags.rust_profile_use.or(rust.profile_use); config.rust_profile_generate = flags.rust_profile_generate.or(rust.profile_generate); - config.download_rustc = rust.download_rustc.unwrap_or(false); + config.download_rustc = env::var("BOOTSTRAP_DOWNLOAD_RUSTC").as_deref() == Ok("1"); } else { config.rust_profile_use = flags.rust_profile_use; config.rust_profile_generate = flags.rust_profile_generate; |
