diff --git a/scripts/build/termux_download.sh b/scripts/build/termux_download.sh index 97d188b55..8c0af6331 100755 --- a/scripts/build/termux_download.sh +++ b/scripts/build/termux_download.sh @@ -23,17 +23,18 @@ termux_download() { if [ "$CHECKSUM" != "$ACTUAL_CHECKSUM" ]; then >&2 printf "Wrong checksum for %s:\nExpected: %s\nActual: %s\n" \ "$URL" "$CHECKSUM" "$ACTUAL_CHECKSUM" - exit 1 + return 1 fi else printf "WARNING: No checksum check for %s:\nActual: %s\n" \ "$URL" "$ACTUAL_CHECKSUM" fi mv "$TMPFILE" "$DESTINATION" - return + return 0 fi - termux_error_exit "Failed to download $URL" + echo "Failed to download $URL" >&2 + return 1 } # Make script standalone executable as well as sourceable diff --git a/scripts/build/termux_download_deb.sh b/scripts/build/termux_download_deb.sh index 6a081cf10..183a0dc69 100755 --- a/scripts/build/termux_download_deb.sh +++ b/scripts/build/termux_download_deb.sh @@ -8,7 +8,7 @@ termux_download_deb() { return "$?" fi - local DEB_FILE=${PACKAGE}_${VERSION}_${PACKAGE_ARCH}.deb + local DEB_FILE="${PACKAGE}_${VERSION}_${PACKAGE_ARCH}.deb" PKG_HASH="" for idx in $(seq ${#TERMUX_REPO_URL[@]}); do @@ -27,12 +27,11 @@ termux_download_deb() { if [ "$PKG_HASH" = "" ]; then return 1 - else - termux_download ${TERMUX_REPO_URL[$idx-1]}/${PKG_PATH} \ - $TERMUX_COMMON_CACHEDIR-$PACKAGE_ARCH/${DEB_FILE} \ - $PKG_HASH - return 0 fi + + termux_download "${TERMUX_REPO_URL[${idx}-1]}/${PKG_PATH}" \ + "${TERMUX_COMMON_CACHEDIR}-${PACKAGE_ARCH}/${DEB_FILE}" \ + "$PKG_HASH" } # Make script standalone executable as well as sourceable diff --git a/scripts/build/termux_get_repo_files.sh b/scripts/build/termux_get_repo_files.sh index b8b3e4253..497296ec3 100644 --- a/scripts/build/termux_get_repo_files.sh +++ b/scripts/build/termux_get_repo_files.sh @@ -25,11 +25,23 @@ termux_get_repo_files() { local TERMUX_REPO_NAME=$(echo ${TERMUX_REPO_URL[$idx-1]} | sed -e 's%https://%%g' -e 's%http://%%g' -e 's%/%-%g') local RELEASE_FILE=${TERMUX_COMMON_CACHEDIR}/${TERMUX_REPO_NAME}-${TERMUX_REPO_DISTRIBUTION[$idx-1]}-Release - termux_download "${TERMUX_REPO_URL[$idx-1]}/dists/${TERMUX_REPO_DISTRIBUTION[$idx-1]}/Release" \ - "$RELEASE_FILE" SKIP_CHECKSUM + local download_attempts=6 + while ((download_attempts > 0)); do + if termux_download "${TERMUX_REPO_URL[$idx-1]}/dists/${TERMUX_REPO_DISTRIBUTION[$idx-1]}/Release" \ + "$RELEASE_FILE" SKIP_CHECKSUM && \ + termux_download "${TERMUX_REPO_URL[$idx-1]}/dists/${TERMUX_REPO_DISTRIBUTION[$idx-1]}/Release.gpg" \ + "${RELEASE_FILE}.gpg" SKIP_CHECKSUM; then + break + fi - termux_download "${TERMUX_REPO_URL[$idx-1]}/dists/${TERMUX_REPO_DISTRIBUTION[$idx-1]}/Release.gpg" \ - "${RELEASE_FILE}.gpg" SKIP_CHECKSUM + download_attempts=$((download_attempts - 1)) + if ((download_attempts < 1)); then + termux_error_exit "Failed to download package repository metadata. Try to build without -i/-I option." + fi + + echo "Retrying download in 30 seconds (${download_attempts} attempts left)..." >&2 + sleep 30 + done gpg --verify "${RELEASE_FILE}.gpg" "$RELEASE_FILE"