Suggest disabling download-ci-llvm option if url fails to download
This commit is contained in:
parent
e646f3d2a9
commit
410145e0a7
@ -63,7 +63,7 @@ def support_xz():
|
|||||||
except tarfile.CompressionError:
|
except tarfile.CompressionError:
|
||||||
return False
|
return False
|
||||||
|
|
||||||
def get(base, url, path, checksums, verbose=False, do_verify=True):
|
def get(base, url, path, checksums, verbose=False, do_verify=True, help_on_error=None):
|
||||||
with tempfile.NamedTemporaryFile(delete=False) as temp_file:
|
with tempfile.NamedTemporaryFile(delete=False) as temp_file:
|
||||||
temp_path = temp_file.name
|
temp_path = temp_file.name
|
||||||
|
|
||||||
@ -82,7 +82,7 @@ def get(base, url, path, checksums, verbose=False, do_verify=True):
|
|||||||
print("ignoring already-download file",
|
print("ignoring already-download file",
|
||||||
path, "due to failed verification")
|
path, "due to failed verification")
|
||||||
os.unlink(path)
|
os.unlink(path)
|
||||||
download(temp_path, "{}/{}".format(base, url), True, verbose)
|
download(temp_path, "{}/{}".format(base, url), True, verbose, help_on_error=help_on_error)
|
||||||
if do_verify and not verify(temp_path, sha256, verbose):
|
if do_verify and not verify(temp_path, sha256, verbose):
|
||||||
raise RuntimeError("failed verification")
|
raise RuntimeError("failed verification")
|
||||||
if verbose:
|
if verbose:
|
||||||
@ -95,17 +95,17 @@ def get(base, url, path, checksums, verbose=False, do_verify=True):
|
|||||||
os.unlink(temp_path)
|
os.unlink(temp_path)
|
||||||
|
|
||||||
|
|
||||||
def download(path, url, probably_big, verbose):
|
def download(path, url, probably_big, verbose, help_on_error=None):
|
||||||
for _ in range(0, 4):
|
for _ in range(0, 4):
|
||||||
try:
|
try:
|
||||||
_download(path, url, probably_big, verbose, True)
|
_download(path, url, probably_big, verbose, True, help_on_error=help_on_error)
|
||||||
return
|
return
|
||||||
except RuntimeError:
|
except RuntimeError:
|
||||||
print("\nspurious failure, trying again")
|
print("\nspurious failure, trying again")
|
||||||
_download(path, url, probably_big, verbose, False)
|
_download(path, url, probably_big, verbose, False, help_on_error=help_on_error)
|
||||||
|
|
||||||
|
|
||||||
def _download(path, url, probably_big, verbose, exception):
|
def _download(path, url, probably_big, verbose, exception, help_on_error=None):
|
||||||
if probably_big or verbose:
|
if probably_big or verbose:
|
||||||
print("downloading {}".format(url))
|
print("downloading {}".format(url))
|
||||||
# see https://serverfault.com/questions/301128/how-to-download
|
# see https://serverfault.com/questions/301128/how-to-download
|
||||||
@ -126,7 +126,8 @@ def _download(path, url, probably_big, verbose, exception):
|
|||||||
"--connect-timeout", "30", # timeout if cannot connect within 30 seconds
|
"--connect-timeout", "30", # timeout if cannot connect within 30 seconds
|
||||||
"--retry", "3", "-Sf", "-o", path, url],
|
"--retry", "3", "-Sf", "-o", path, url],
|
||||||
verbose=verbose,
|
verbose=verbose,
|
||||||
exception=exception)
|
exception=exception,
|
||||||
|
help_on_error=help_on_error)
|
||||||
|
|
||||||
|
|
||||||
def verify(path, expected, verbose):
|
def verify(path, expected, verbose):
|
||||||
@ -167,7 +168,7 @@ def unpack(tarball, tarball_suffix, dst, verbose=False, match=None):
|
|||||||
shutil.rmtree(os.path.join(dst, fname))
|
shutil.rmtree(os.path.join(dst, fname))
|
||||||
|
|
||||||
|
|
||||||
def run(args, verbose=False, exception=False, is_bootstrap=False, **kwargs):
|
def run(args, verbose=False, exception=False, is_bootstrap=False, help_on_error=None, **kwargs):
|
||||||
"""Run a child program in a new process"""
|
"""Run a child program in a new process"""
|
||||||
if verbose:
|
if verbose:
|
||||||
print("running: " + ' '.join(args))
|
print("running: " + ' '.join(args))
|
||||||
@ -178,6 +179,8 @@ def run(args, verbose=False, exception=False, is_bootstrap=False, **kwargs):
|
|||||||
code = ret.wait()
|
code = ret.wait()
|
||||||
if code != 0:
|
if code != 0:
|
||||||
err = "failed to run: " + ' '.join(args)
|
err = "failed to run: " + ' '.join(args)
|
||||||
|
if help_on_error is not None:
|
||||||
|
err += "\n" + help_on_error
|
||||||
if verbose or exception:
|
if verbose or exception:
|
||||||
raise RuntimeError(err)
|
raise RuntimeError(err)
|
||||||
# For most failures, we definitely do want to print this error, or the user will have no
|
# For most failures, we definitely do want to print this error, or the user will have no
|
||||||
@ -624,6 +627,14 @@ class RustBuild(object):
|
|||||||
filename = "rust-dev-nightly-" + self.build + tarball_suffix
|
filename = "rust-dev-nightly-" + self.build + tarball_suffix
|
||||||
tarball = os.path.join(rustc_cache, filename)
|
tarball = os.path.join(rustc_cache, filename)
|
||||||
if not os.path.exists(tarball):
|
if not os.path.exists(tarball):
|
||||||
|
help_on_error = "error: failed to download llvm from ci"
|
||||||
|
help_on_error += "\nhelp: old builds get deleted after a certain time"
|
||||||
|
help_on_error += "\nhelp: if trying to compile an old commit of rustc,"
|
||||||
|
help_on_error += " disable `download-ci-llvm` in config.toml:"
|
||||||
|
help_on_error += "\n"
|
||||||
|
help_on_error += "\n[llvm]"
|
||||||
|
help_on_error += "\ndownload-ci-llvm = false"
|
||||||
|
help_on_error += "\n"
|
||||||
get(
|
get(
|
||||||
base,
|
base,
|
||||||
"{}/{}".format(url, filename),
|
"{}/{}".format(url, filename),
|
||||||
@ -631,6 +642,7 @@ class RustBuild(object):
|
|||||||
self.checksums_sha256,
|
self.checksums_sha256,
|
||||||
verbose=self.verbose,
|
verbose=self.verbose,
|
||||||
do_verify=False,
|
do_verify=False,
|
||||||
|
help_on_error=help_on_error,
|
||||||
)
|
)
|
||||||
unpack(tarball, tarball_suffix, self.llvm_root(),
|
unpack(tarball, tarball_suffix, self.llvm_root(),
|
||||||
match="rust-dev",
|
match="rust-dev",
|
||||||
|
Loading…
x
Reference in New Issue
Block a user