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"