From 785176b7ccc3f6acdf18496473ec5f2345897067 Mon Sep 17 00:00:00 2001 From: Michael Pankov Date: Thu, 15 Jan 2015 16:45:59 +0300 Subject: [PATCH] rustup: Don't attempt to download SHA if it exists This way installer can work fully in offline mode. Put pre-downloaded files (rust-nightly-x86_64-unknown-linux-gnu.tar.gz and rust-nightly-x86_64-unknown-linux-gnu.tar.gz.sha256) into the $HOME/.rustup/YYYY-MM-DD directory as it would be done by script itself. Specify --save and --date=YYYY-MM-DD when running. Files will be picked up and used to install in offline mode. --- src/etc/rustup.sh | 25 +++++++++++++++++++++---- 1 file changed, 21 insertions(+), 4 deletions(-) diff --git a/src/etc/rustup.sh b/src/etc/rustup.sh index 749d9eaa173e..5a34770b88ea 100755 --- a/src/etc/rustup.sh +++ b/src/etc/rustup.sh @@ -453,16 +453,33 @@ then RUST_URL="${RUST_URL}/${CFG_DATE}" fi -verify_hash() { - remote_sha256="$1" - local_file="$2" - +download_hash() { msg "Downloading ${remote_sha256}" remote_sha256=`"${CFG_CURL}" -f "${remote_sha256}"` + if [ -n "${CFG_SAVE}" ]; then + echo "${remote_sha256}" > "${local_sha_file}" + fi if [ "$?" -ne 0 ]; then rm -Rf "${CFG_TMP_DIR}" err "Failed to download ${remote_url}" fi +} + +verify_hash() { + remote_sha256="$1" + local_file="$2" + local_sha_file="${local_file}.sha256" + + if [ -n "${CFG_SAVE}" ]; then + if [ -f "${local_sha_file}" ]; then + msg "Local ${local_sha_file} exists, treating as remote hash" + remote_sha256=`cat "${local_sha_file}"` + else + download_hash + fi + else + download_hash + fi msg "Verifying hash" local_sha256=$(calculate_hash "${local_file}")