@@ -638,8 +638,10 @@ def fix_bin_or_dylib(self, fname, rpath_libz=False):
638638 # Return the stage1 compiler to download, if any.
639639 def maybe_download_rustc (self ):
640640 # If `download-rustc` is not set, default to rebuilding.
641- if self .get_toml ("download-rustc" , section = "rust" ) != "true" :
641+ download_rustc = self .get_toml ("download-rustc" , section = "rust" )
642+ if download_rustc is None or download_rustc == "false" :
642643 return None
644+ assert download_rustc == "true" or download_rustc == "if-unchanged" , download_rustc
643645
644646 # Handle running from a directory other than the top level
645647 rev_parse = ["git" , "rev-parse" , "--show-toplevel" ]
@@ -654,6 +656,8 @@ def maybe_download_rustc(self):
654656 # Warn if there were changes to the compiler since the ancestor commit.
655657 status = subprocess .call (["git" , "diff-index" , "--quiet" , commit , "--" , compiler ])
656658 if status != 0 :
659+ if download_rustc == "if-unchanged" :
660+ return None
657661 print ("warning: `download-rustc` is enabled, but there are changes to compiler/" )
658662
659663 return commit
@@ -1158,6 +1162,8 @@ def bootstrap(help_triggered):
11581162 env ["RUSTC_BOOTSTRAP" ] = '1'
11591163 if toml_path :
11601164 env ["BOOTSTRAP_CONFIG" ] = toml_path
1165+ if build .rustc_commit is not None :
1166+ env ["BOOTSTRAP_DOWNLOAD_RUSTC" ] = '1'
11611167 run (args , env = env , verbose = build .verbose )
11621168
11631169
0 commit comments