5ddf251200
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.
41 lines
1.3 KiB
Bash
Executable File
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
|