1
Fork 0

Remove download-rustc handling from bootstrap.py

This commit is contained in:
Joshua Nelson 2022-05-21 21:13:48 -05:00
parent 512d7bf874
commit 00bb4df1fb

View file

@ -444,9 +444,8 @@ class RustBuild(object):
self.verbose = False self.verbose = False
self.git_version = None self.git_version = None
self.nix_deps_dir = None self.nix_deps_dir = None
self.rustc_commit = None
def download_toolchain(self, rustc_channel=None): def download_toolchain(self):
"""Fetch the build system for Rust, written in Rust """Fetch the build system for Rust, written in Rust
This method will build a cache directory, then it will fetch the This method will build a cache directory, then it will fetch the
@ -456,8 +455,7 @@ class RustBuild(object):
Each downloaded tarball is extracted, after that, the script Each downloaded tarball is extracted, after that, the script
will move all the content to the right place. will move all the content to the right place.
""" """
if rustc_channel is None: rustc_channel = self.stage0_compiler.version
rustc_channel = self.stage0_compiler.version
bin_root = self.bin_root() bin_root = self.bin_root()
key = self.stage0_compiler.date key = self.stage0_compiler.date
@ -628,51 +626,6 @@ class RustBuild(object):
print("warning: failed to call patchelf:", reason) print("warning: failed to call patchelf:", reason)
return return
# If `download-rustc` is set, download the most recent commit with CI artifacts
def maybe_download_ci_toolchain(self):
# If `download-rustc` is not set, default to rebuilding.
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"]
top_level = subprocess.check_output(rev_parse, universal_newlines=True).strip()
compiler = "{}/compiler/".format(top_level)
library = "{}/library/".format(top_level)
# Look for a version to compare to based on the current commit.
# Only commits merged by bors will have CI artifacts.
merge_base = [
"git", "rev-list", "--author=bors@rust-lang.org", "-n1",
"--first-parent", "HEAD"
]
commit = subprocess.check_output(merge_base, universal_newlines=True).strip()
if not commit:
print("error: could not find commit hash for downloading rustc")
print("help: maybe your repository history is too shallow?")
print("help: consider disabling `download-rustc`")
print("help: or fetch enough history to include one upstream commit")
exit(1)
# Warn if there were changes to the compiler or standard library since the ancestor commit.
status = subprocess.call(["git", "diff-index", "--quiet", commit, "--", compiler, library])
if status != 0:
if download_rustc == "if-unchanged":
if self.verbose:
print("warning: saw changes to compiler/ or library/ since {}; " \
"ignoring `download-rustc`".format(commit))
return None
print("warning: `download-rustc` is enabled, but there are changes to " \
"compiler/ or library/")
if self.verbose:
print("using downloaded stage2 artifacts from CI (commit {})".format(commit))
self.rustc_commit = commit
# FIXME: support downloading artifacts from the beta channel
self.download_toolchain(False, "nightly")
def rustc_stamp(self): def rustc_stamp(self):
"""Return the path for .rustc-stamp at the given stage """Return the path for .rustc-stamp at the given stage
@ -1144,8 +1097,6 @@ def bootstrap(help_triggered):
# Fetch/build the bootstrap # Fetch/build the bootstrap
build.download_toolchain() build.download_toolchain()
# Download the master compiler if `download-rustc` is set
# build.maybe_download_ci_toolchain()
sys.stdout.flush() sys.stdout.flush()
build.ensure_vendored() build.ensure_vendored()
build.build_bootstrap() build.build_bootstrap()
@ -1157,8 +1108,6 @@ def bootstrap(help_triggered):
env = os.environ.copy() env = os.environ.copy()
env["BOOTSTRAP_PARENT_ID"] = str(os.getpid()) env["BOOTSTRAP_PARENT_ID"] = str(os.getpid())
env["BOOTSTRAP_PYTHON"] = sys.executable env["BOOTSTRAP_PYTHON"] = sys.executable
if build.rustc_commit is not None:
env["BOOTSTRAP_DOWNLOAD_RUSTC"] = '1'
run(args, env=env, verbose=build.verbose, is_bootstrap=True) run(args, env=env, verbose=build.verbose, is_bootstrap=True)