diff --git a/install_sdrplay_universal.sh b/install_sdrplay_universal.sh index 8b771b9..d1eafca 100755 --- a/install_sdrplay_universal.sh +++ b/install_sdrplay_universal.sh @@ -11,23 +11,30 @@ set -Eeuo pipefail # CONFIG ####################################### -SDRCONNECT_GITBUILD="a4b8da76b" -RIGCONTROL_GITBUILD="4a50e06" +# Build hashes are resolved at runtime from the upstream installer +# (https://www.sdrplay.com/software/install.sh). The values below are used +# as fallbacks if upstream is unreachable, and are also honoured as user +# overrides when set in the environment before invocation. +_SDRCONNECT_GITBUILD_USER_SET="${SDRCONNECT_GITBUILD+set}" +_RIGCONTROL_GITBUILD_USER_SET="${RIGCONTROL_GITBUILD+set}" +: "${SDRCONNECT_GITBUILD:=a4b8da76b}" +: "${RIGCONTROL_GITBUILD:=4a50e06}" + +UPSTREAM_INSTALLER_URL="https://www.sdrplay.com/software/install.sh" SDRCONNECT_DIR="/opt/sdrconnect" RIGCONTROL_DIR="/opt/rigcontrol" -SDRCONNECT_TAR_X86_64="sdrconnect_linux-x64_${SDRCONNECT_GITBUILD}.tar.gz" -SDRCONNECT_TAR_ARM64="sdrconnect_linux-arm64_${SDRCONNECT_GITBUILD}.tar.gz" - -RIGCONTROL_TAR_X86_64="rigcontrol_linux-x64_${RIGCONTROL_GITBUILD}.tar.gz" -RIGCONTROL_TAR_ARM64="rigcontrol_linux-arm64_${RIGCONTROL_GITBUILD}.tar.gz" - -SDRCONNECT_URL_X86_64="https://www.sdrplay.com/software/${SDRCONNECT_TAR_X86_64}" -SDRCONNECT_URL_ARM64="https://www.sdrplay.com/software/${SDRCONNECT_TAR_ARM64}" - -RIGCONTROL_URL_X86_64="https://www.sdrplay.com/software/${RIGCONTROL_TAR_X86_64}" -RIGCONTROL_URL_ARM64="https://www.sdrplay.com/software/${RIGCONTROL_TAR_ARM64}" +# Artifact filenames and URLs depend on the resolved build hashes and are +# populated by resolve_artifacts() after fetch_gitbuilds() runs. +SDRCONNECT_TAR_X86_64="" +SDRCONNECT_TAR_ARM64="" +RIGCONTROL_TAR_X86_64="" +RIGCONTROL_TAR_ARM64="" +SDRCONNECT_URL_X86_64="" +SDRCONNECT_URL_ARM64="" +RIGCONTROL_URL_X86_64="" +RIGCONTROL_URL_ARM64="" PROFILE_SCRIPT="/etc/profile.d/sdrconnect.sh" UDEV_RULES="/etc/udev/rules.d/66-sdrplay.rules" @@ -312,6 +319,60 @@ show_license() { esac } +####################################### +# VERSION RESOLUTION +####################################### +fetch_gitbuilds(){ + if [[ "${DONOTDOWNLOAD:-0}" == "1" ]]; then + info "DONOTDOWNLOAD=1: skipping upstream version lookup" + return + fi + if [[ "$DRY_RUN" -eq 1 ]]; then + info "[DRY-RUN] would fetch $UPSTREAM_INSTALLER_URL for current build hashes" + return + fi + + info "Fetching current build hashes from upstream..." + local upstream + if ! upstream=$(curl -fsSL --retry 2 "$UPSTREAM_INSTALLER_URL" 2>/dev/null); then + warn "Could not fetch $UPSTREAM_INSTALLER_URL; using built-in fallback hashes" + return + fi + + local up_sdrc up_rig + up_sdrc=$(grep -E '^SDRCONNECT_GITBUILD=' <<<"$upstream" | head -1 | cut -d'"' -f2) + up_rig=$(grep -E '^RIGCONTROL_GITBUILD=' <<<"$upstream" | head -1 | cut -d'"' -f2) + + if [[ "$_SDRCONNECT_GITBUILD_USER_SET" == "set" ]]; then + info "Honouring SDRCONNECT_GITBUILD override: $SDRCONNECT_GITBUILD" + elif [[ -n "$up_sdrc" ]]; then + SDRCONNECT_GITBUILD="$up_sdrc" + else + warn "Could not parse SDRCONNECT_GITBUILD from upstream; using fallback $SDRCONNECT_GITBUILD" + fi + + if [[ "$_RIGCONTROL_GITBUILD_USER_SET" == "set" ]]; then + info "Honouring RIGCONTROL_GITBUILD override: $RIGCONTROL_GITBUILD" + elif [[ -n "$up_rig" ]]; then + RIGCONTROL_GITBUILD="$up_rig" + else + warn "Could not parse RIGCONTROL_GITBUILD from upstream; using fallback $RIGCONTROL_GITBUILD" + fi + + info "Resolved SDRconnect=$SDRCONNECT_GITBUILD, RigControl=$RIGCONTROL_GITBUILD" +} + +resolve_artifacts(){ + SDRCONNECT_TAR_X86_64="sdrconnect_linux-x64_${SDRCONNECT_GITBUILD}.tar.gz" + SDRCONNECT_TAR_ARM64="sdrconnect_linux-arm64_${SDRCONNECT_GITBUILD}.tar.gz" + RIGCONTROL_TAR_X86_64="rigcontrol_linux-x64_${RIGCONTROL_GITBUILD}.tar.gz" + RIGCONTROL_TAR_ARM64="rigcontrol_linux-arm64_${RIGCONTROL_GITBUILD}.tar.gz" + SDRCONNECT_URL_X86_64="https://www.sdrplay.com/software/${SDRCONNECT_TAR_X86_64}" + SDRCONNECT_URL_ARM64="https://www.sdrplay.com/software/${SDRCONNECT_TAR_ARM64}" + RIGCONTROL_URL_X86_64="https://www.sdrplay.com/software/${RIGCONTROL_TAR_X86_64}" + RIGCONTROL_URL_ARM64="https://www.sdrplay.com/software/${RIGCONTROL_TAR_ARM64}" +} + ####################################### # DOWNLOAD ####################################### @@ -576,6 +637,9 @@ main(){ check_dependencies ensure_sudo + fetch_gitbuilds + resolve_artifacts + [[ "$ARCH" == "x86_64" ]] && { U1="$SDRCONNECT_URL_X86_64"; U2="$RIGCONTROL_URL_X86_64" F1="$SDRCONNECT_TAR_X86_64"; F2="$RIGCONTROL_TAR_X86_64"