termux-packages/scripts/build/termux_download_deb.sh
Leonid Pliushch 5ddf251200 build-package.sh: retry if downloading of Release{,.gpg} failed when fast-build mode is on
Release or Release.gpg files may be absent if a new .deb file was uploaded
to apt repository recently. We may need to do a multiple attempts in a loop
to retry downloading of these files.

Needed after 99e9ab67b634a89d0be9eca12c4f1cdc091ee6e8, where I have disabled
looping in termux_download but curl doesn't do retries on 404 error. We
want immediate failure only for 404's on source and build tool URLs.
2020-08-21 15:46:41 +03:00

41 lines
1.3 KiB
Bash
Executable File

termux_download_deb() {
local PACKAGE=$1
local PACKAGE_ARCH=$2
local VERSION=$3
if [ "$TERMUX_ON_DEVICE_BUILD" = "true" ]; then
apt install -y "${PACKAGE}=${VERSION}"
return "$?"
fi
local DEB_FILE="${PACKAGE}_${VERSION}_${PACKAGE_ARCH}.deb"
PKG_HASH=""
for idx in $(seq ${#TERMUX_REPO_URL[@]}); do
local TERMUX_REPO_NAME=$(echo ${TERMUX_REPO_URL[$idx-1]} | sed -e 's%https://%%g' -e 's%http://%%g' -e 's%/%-%g')
local PACKAGE_FILE_PATH="${TERMUX_REPO_NAME}-${TERMUX_REPO_DISTRIBUTION[$idx-1]}-${TERMUX_REPO_COMPONENT[$idx-1]}-Packages"
if [ -f "${TERMUX_COMMON_CACHEDIR}-${PACKAGE_ARCH}/${PACKAGE_FILE_PATH}" ]; then
read -d "\n" PKG_PATH PKG_HASH <<<$(./scripts/get_hash_from_file.py "${TERMUX_COMMON_CACHEDIR}-${PACKAGE_ARCH}/$PACKAGE_FILE_PATH" $PACKAGE $VERSION)
if [ -n "$PKG_HASH" ]; then
if [ ! "$TERMUX_QUIET_BUILD" = true ]; then
echo "Found $PACKAGE in ${TERMUX_REPO_URL[$idx-1]}/dists/${TERMUX_REPO_DISTRIBUTION[$idx-1]}"
fi
break
fi
fi
done
if [ "$PKG_HASH" = "" ]; then
return 1
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
if [[ "${BASH_SOURCE[0]}" == "${0}" ]]; then
termux_download "$@"
fi