check.sh (861B)
1 #!/bin/sh 2 set -eu 3 4 . "$(dirname "$0")/config.sh" 5 need sha256sum 6 [ -f "$SOURCES_FILE" ] || die "source manifest not found: $SOURCES_FILE" 7 case "${1:-pull}" in 8 pull) need curl; mkdir -p "$SOURCES_DIR" ;; 9 verify) ;; 10 *) die "usage: check.sh [pull|verify]" ;; 11 esac 12 13 for name in musl linux llvm atomic; do 14 source_info "$name" 15 if archive_ok; then 16 printf 'OK %s\n' "$archive" 17 continue 18 fi 19 [ "${1:-pull}" = pull ] || die "missing or corrupt archive: $archive" 20 printf 'Downloading %s\n' "$archive" 21 part="$SOURCES_DIR/$archive.part.$$" 22 trap 'rm -f "$part"' 0 23 trap 'exit 1' HUP INT TERM 24 curl --fail --location --show-error --retry 3 --connect-timeout 20 \ 25 --output "$part" "$url" 26 actual_digest=$(sha256sum "$part") 27 [ "${actual_digest%% *}" = "$digest" ] || die "SHA-256 mismatch for $archive" 28 mv "$part" "$SOURCES_DIR/$archive" 29 trap - 0 HUP INT TERM 30 done