From fb1c961655401c64a8406f0cd58dfa39109ecd35 Mon Sep 17 00:00:00 2001 From: Greg Gauthier Date: Sun, 3 May 2026 13:26:32 +0100 Subject: [PATCH] feat(installer): fetch licence text from upstream Update the installer to resolve licence text at runtime from the upstream installer, similar to build hashes. Add fallback handling with warnings if upstream is unreachable or unparseable. Rename fetch_gitbuilds to fetch_upstream to reflect expanded scope. --- install_sdrplay_universal.sh | 51 +++++++++++++++++++++++++++--------- 1 file changed, 38 insertions(+), 13 deletions(-) diff --git a/install_sdrplay_universal.sh b/install_sdrplay_universal.sh index 13e84cb..780d2d3 100755 --- a/install_sdrplay_universal.sh +++ b/install_sdrplay_universal.sh @@ -11,10 +11,11 @@ set -Eeuo pipefail # CONFIG ####################################### -# 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. +# Build hashes and the licence text 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 or unparseable, and the +# build hashes 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}" @@ -136,6 +137,18 @@ info(){ echo -e "${GREEN}[INFO]${NC} $*"; } warn(){ echo -e "${YELLOW}[WARN]${NC} $*"; } error(){ echo -e "${RED}[ERROR]${NC} $*" >&2; } +warn_license_fallback(){ + local reason="$1" + echo + echo -e "${YELLOW}========================================================================${NC}" + echo -e "${YELLOW} WARNING: ${reason}${NC}" + echo -e "${YELLOW} Falling back to the licence text embedded in this installer.${NC}" + echo -e "${YELLOW} This may differ from the current upstream licence at:${NC}" + echo -e "${YELLOW} ${UPSTREAM_INSTALLER_URL}${NC}" + echo -e "${YELLOW}========================================================================${NC}" + echo +} + ####################################### # ARGS ####################################### @@ -328,28 +341,30 @@ show_license() { } ####################################### -# VERSION RESOLUTION +# UPSTREAM RESOLUTION ####################################### -fetch_gitbuilds(){ +fetch_upstream(){ if [[ "${DONOTDOWNLOAD:-0}" == "1" ]]; then - info "DONOTDOWNLOAD=1: skipping upstream version lookup" + info "DONOTDOWNLOAD=1: skipping upstream lookup" return fi if [[ "$DRY_RUN" -eq 1 ]]; then - info "[DRY-RUN] would fetch $UPSTREAM_INSTALLER_URL for current build hashes" + info "[DRY-RUN] would fetch $UPSTREAM_INSTALLER_URL for current build hashes and licence" return fi - info "Fetching current build hashes from upstream..." + info "Fetching current build hashes and licence 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" + warn_license_fallback "Could not fetch $UPSTREAM_INSTALLER_URL" return fi - local up_sdrc up_rig + local up_sdrc up_rig up_license up_sdrc=$(grep -E '^SDRCONNECT_GITBUILD=' <<<"$upstream" | head -1 | cut -d'"' -f2) up_rig=$(grep -E '^RIGCONTROL_GITBUILD=' <<<"$upstream" | head -1 | cut -d'"' -f2) + up_license=$(awk '/^LICENSE_TEXT=\$\(cat/{flag=1; next} flag && /^EOF$/{flag=0; exit} flag' <<<"$upstream") if [[ "$_SDRCONNECT_GITBUILD_USER_SET" == "set" ]]; then info "Honouring SDRCONNECT_GITBUILD override: $SDRCONNECT_GITBUILD" @@ -367,6 +382,15 @@ fetch_gitbuilds(){ warn "Could not parse RIGCONTROL_GITBUILD from upstream; using fallback $RIGCONTROL_GITBUILD" fi + if [[ -n "$up_license" ]] \ + && [[ ${#up_license} -gt 500 ]] \ + && grep -q "SDRPLAY LIMITED" <<<"$up_license"; then + LICENSE_TEXT="$up_license" + info "Licence text refreshed from upstream" + else + warn_license_fallback "Could not extract licence text from upstream" + fi + info "Resolved SDRconnect=$SDRCONNECT_GITBUILD, RigControl=$RIGCONTROL_GITBUILD" } @@ -641,13 +665,14 @@ refresh(){ main(){ check_platform setup_sudo + + fetch_upstream + resolve_artifacts + show_license 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"