Auto merge of #34644 - infinity0:master, r=alexcrichton
Avoid redundant downloads when bootstrapping If the local file is available, then verify it against the hash we just downloaded, and if it matches then we don't need to download it again.
This commit is contained in:
commit
a120ae70d0
2 changed files with 13 additions and 8 deletions
|
|
@ -31,8 +31,16 @@ def get(url, path, verbose=False):
|
|||
|
||||
try:
|
||||
download(sha_path, sha_url, verbose)
|
||||
if os.path.exists(path):
|
||||
if verify(path, sha_path, False):
|
||||
print("using already-download file " + path)
|
||||
return
|
||||
else:
|
||||
print("ignoring already-download file " + path + " due to failed verification")
|
||||
os.unlink(path)
|
||||
download(temp_path, url, verbose)
|
||||
verify(temp_path, sha_path, verbose)
|
||||
if not verify(temp_path, sha_path, True):
|
||||
raise RuntimeError("failed verification")
|
||||
print("moving {} to {}".format(temp_path, path))
|
||||
shutil.move(temp_path, path)
|
||||
finally:
|
||||
|
|
@ -64,13 +72,12 @@ def verify(path, sha_path, verbose):
|
|||
found = hashlib.sha256(f.read()).hexdigest()
|
||||
with open(sha_path, "r") as f:
|
||||
expected, _ = f.readline().split()
|
||||
if found != expected:
|
||||
err = ("invalid checksum:\n"
|
||||
verified = found == expected
|
||||
if not verified and verbose:
|
||||
print("invalid checksum:\n"
|
||||
" found: {}\n"
|
||||
" expected: {}".format(found, expected))
|
||||
if verbose:
|
||||
raise RuntimeError(err)
|
||||
sys.exit(err)
|
||||
return verified
|
||||
|
||||
|
||||
def unpack(tarball, dst, verbose=False, match=None):
|
||||
|
|
|
|||
|
|
@ -31,8 +31,6 @@ def main(triple):
|
|||
filename = 'rustc-{}-{}.tar.gz'.format(channel, triple)
|
||||
url = 'https://static.rust-lang.org/dist/{}/{}'.format(date, filename)
|
||||
dst = dl_dir + '/' + filename
|
||||
if os.path.exists(dst):
|
||||
os.unlink(dst)
|
||||
bootstrap.get(url, dst)
|
||||
|
||||
stage0_dst = triple + '/stage0'
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue