# shellcheck shell=bash termux_pkg_upgrade_version() { if [[ "$#" -lt 1 ]]; then termux_error_exit <<-EndUsage Usage: ${FUNCNAME[0]} LATEST_VERSION [--skip-version-check] EndUsage fi local LATEST_VERSION="$1" local SKIP_VERSION_CHECK="${2:-}" local EPOCH EPOCH="${TERMUX_PKG_VERSION%%:*}" # If there is no epoch, this will be the full version. # Check if it isn't the full version and add ':'. if [[ "${EPOCH}" != "${TERMUX_PKG_VERSION}" ]]; then EPOCH="${EPOCH}:" else EPOCH="" fi # If needed, filter version numbers using grep regexp. if [[ -n "${TERMUX_PKG_UPDATE_VERSION_REGEXP:-}" ]]; then # Extract version numbers. local OLD_LATEST_VERSION="${LATEST_VERSION}" LATEST_VERSION="$(grep -oP "${TERMUX_PKG_UPDATE_VERSION_REGEXP}" <<< "${LATEST_VERSION}" || true)" if [[ -z "${LATEST_VERSION:-}" ]]; then termux_error_exit <<-EndOfError ERROR: failed to filter version numbers using regexp '${TERMUX_PKG_UPDATE_VERSION_REGEXP}'. Ensure that it works correctly with ${OLD_LATEST_VERSION}. EndOfError fi unset OLD_LATEST_VERSION fi # If needed, filter version numbers using sed regexp. if [[ -n "${TERMUX_PKG_UPDATE_VERSION_SED_REGEXP:-}" ]]; then # Extract version numbers. local OLD_LATEST_VERSION="${LATEST_VERSION}" LATEST_VERSION="$(sed "${TERMUX_PKG_UPDATE_VERSION_SED_REGEXP}" <<< "${LATEST_VERSION}" || true)" if [[ -z "${LATEST_VERSION:-}" ]]; then termux_error_exit <<-EndOfError ERROR: failed to filter version numbers using regexp '${TERMUX_PKG_UPDATE_VERSION_SED_REGEXP}'. Ensure that it works correctly with ${OLD_LATEST_VERSION}. EndOfError fi unset OLD_LATEST_VERSION fi # Translate "_" into ".": some packages use underscores to seperate # version numbers, but we require them to be separated by dots. LATEST_VERSION="${LATEST_VERSION//_/.}" if [[ "${SKIP_VERSION_CHECK}" != "--skip-version-check" ]]; then if ! termux_pkg_is_update_needed \ "${TERMUX_PKG_VERSION#*:}" "${LATEST_VERSION}"; then echo "INFO: No update needed. Already at version '${LATEST_VERSION}'." return 0 fi fi if [[ -n "${TERMUX_PKG_UPGRADE_VERSION_DRY_RUN:-}" ]]; then return 1 fi if [[ "${BUILD_PACKAGES}" == "false" ]]; then echo "INFO: package needs to be updated to ${LATEST_VERSION}." else echo "INFO: package being updated to ${LATEST_VERSION}." sed -i \ "s/^\(TERMUX_PKG_VERSION=\)\(.*\)\$/\1\"${EPOCH}${LATEST_VERSION}\"/g" \ "${TERMUX_PKG_BUILDER_DIR}/build.sh" sed -i \ "/TERMUX_PKG_REVISION=/d" \ "${TERMUX_PKG_BUILDER_DIR}/build.sh" # Update checksum if [[ "${TERMUX_PKG_SHA256[*]}" != "SKIP_CHECKSUM" ]] && [[ "${TERMUX_PKG_SRCURL:0:4}" != "git+" ]]; then echo n | "${TERMUX_SCRIPTDIR}/scripts/bin/update-checksum" "${TERMUX_PKG_NAME}" || { git checkout -- "${TERMUX_PKG_BUILDER_DIR}" git pull --rebase termux_error_exit "ERROR: failed to update checksum." } fi echo "INFO: Trying to build package." for repo_path in $(jq --raw-output 'del(.pkg_format) | keys | .[]' ${TERMUX_SCRIPTDIR}/repo.json); do _buildsh_path="${TERMUX_SCRIPTDIR}/${repo_path}/${TERMUX_PKG_NAME}/build.sh" repo=$(jq --raw-output ".\"${repo_path}\".name" ${TERMUX_SCRIPTDIR}/repo.json) repo=${repo#"termux-"} if [ -f "${_buildsh_path}" ]; then echo "INFO: Package ${TERMUX_PKG_NAME} exists in ${repo} repo." unset _buildsh_path repo_path break fi done if "${TERMUX_SCRIPTDIR}/scripts/run-docker.sh" ./build-package.sh -a "${TERMUX_ARCH}" -i "${TERMUX_PKG_NAME}"; then if [[ "${GIT_COMMIT_PACKAGES}" == "true" ]]; then echo "INFO: Committing package." stderr="$( git add "${TERMUX_PKG_BUILDER_DIR}" 2>&1 >/dev/null git commit -m "bump(${repo}/${TERMUX_PKG_NAME}): ${LATEST_VERSION}" \ -m "This commit has been automatically submitted by Github Actions." 2>&1 >/dev/null )" || { termux_error_exit <<-EndOfError ERROR: git commit failed. See below for details. ${stderr} EndOfError } fi if [[ "${GIT_PUSH_PACKAGES}" == "true" ]]; then echo "INFO: Pushing package." stderr="$( git pull --rebase 2>&1 >/dev/null git push 2>&1 >/dev/null )" || { termux_error_exit <<-EndOfError ERROR: git push failed. See below for details. ${stderr} EndOfError } fi else git checkout -- "${TERMUX_PKG_BUILDER_DIR}" termux_error_exit "ERROR: failed to build." fi fi }