diff options
| author | The rustc-dev-guide Cronjob Bot <github-actions@github.com> | 2025-06-09 04:09:17 +0000 |
|---|---|---|
| committer | The rustc-dev-guide Cronjob Bot <github-actions@github.com> | 2025-06-09 04:09:17 +0000 |
| commit | 7565e75591c2ef184bc7a359b3a436a62d45358a (patch) | |
| tree | 84784da83b710a97f9944b753c9d7717e37b631b /src/ci/docker/scripts/shared.sh | |
| parent | f598bbd66b8e0cf5ac1adf0ff6147baa7601a731 (diff) | |
| parent | c31cccb7b5cc098b1a8c1794ed38d7fdbec0ccb0 (diff) | |
| download | rust-7565e75591c2ef184bc7a359b3a436a62d45358a.tar.gz rust-7565e75591c2ef184bc7a359b3a436a62d45358a.zip | |
Merge from rustc
Diffstat (limited to 'src/ci/docker/scripts/shared.sh')
| -rw-r--r-- | src/ci/docker/scripts/shared.sh | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/src/ci/docker/scripts/shared.sh b/src/ci/docker/scripts/shared.sh index 9969659088d..6efdbb2070d 100644 --- a/src/ci/docker/scripts/shared.sh +++ b/src/ci/docker/scripts/shared.sh @@ -40,3 +40,37 @@ function retry { } done } + +download_tar_and_extract_into_dir() { + local url="$1" + local sum="$2" + local dir="$3" + local file=$(mktemp -u) + + while :; do + if [[ -f "$file" ]]; then + if ! h="$(sha256sum "$file" | awk '{ print $1 }')"; then + printf 'ERROR: reading hash\n' >&2 + exit 1 + fi + + if [[ "$h" == "$sum" ]]; then + break + fi + + printf 'WARNING: hash mismatch: %s != expected %s\n' "$h" "$sum" >&2 + rm -f "$file" + fi + + printf 'Downloading: %s\n' "$url" + if ! curl -f -L -o "$file" "$url"; then + rm -f "$file" + sleep 1 + fi + done + + mkdir -p "$dir" + cd "$dir" + tar -xf "$file" + rm -f "$file" +} |
