Cleanup some global vars

This commit is contained in:
2022-01-06 14:23:09 -05:00
parent ddcb2df5a9
commit 9d264e2708

View File

@@ -27,7 +27,7 @@ _exec_user=$(whoami)
_systemddir="/usr/lib/systemd/system" _systemddir="/usr/lib/systemd/system"
# MC version # MC version
# _mcversion="28.0.87" # to set manually, if unset use automatic latest check # mcversion="28.0.87" # to set manually, if unset use automatic latest check
printHelp() { printHelp() {
debug "Running: ${FUNCNAME[0]}" debug "Running: ${FUNCNAME[0]}"
@@ -167,21 +167,21 @@ init() {
[[ "$ID" == "centos" ]] && installPackage epel-release [[ "$ID" == "centos" ]] && installPackage epel-release
# Select MC version to work with # Select MC version to work with
if [[ -v _mcversion ]]; then if [[ -v mcversion ]]; then
_version_source="user input" _version_source="user input"
else else
getLatestVersion getLatestVersion
fi fi
[[ ! "$_mcversion" =~ ([0-9]+.[0-9]+.[0-9]+) ]] && err "Invalid version number" && exit 1 [[ ! "$mcversion" =~ ([0-9]+.[0-9]+.[0-9]+) ]] && err "Invalid version number" && exit 1
echo "Using MC version $_mcversion determined by $_version_source" echo "Using MC version $mcversion determined by $_version_source"
[[ "$_version_source" != "user input" ]] && echo "To override, use --mcversion" [[ "$_version_source" != "user input" ]] && echo "To override, use --mcversion"
# Extract major version number # Extract major version number
_mversion="${_mcversion%%.*}" _mversion="${mcversion%%.*}"
# Saving this substituion in case it's needed in the future # Saving this substituion in case it's needed in the future
# _variation="${_mcversion##*.}" # _variation="${mcversion##*.}"
} }
# Some helper functions # Some helper functions
@@ -264,7 +264,7 @@ parseInput() {
shift && _outputdir="$1" shift && _outputdir="$1"
;; ;;
--mcversion) --mcversion)
shift && _mcversion="$1" shift && mcversion="$1"
;; ;;
--restorefile) --restorefile)
shift && _restorefile="$1" shift && _restorefile="$1"
@@ -344,15 +344,15 @@ parseInput() {
getLatestVersion() { getLatestVersion() {
debug "Running: ${FUNCNAME[0]}" debug "Running: ${FUNCNAME[0]}"
declare -g _mcversion declare -g mcversion base boardurl
# Latest defaults # Latest defaults
_base="buster" # For container method base="buster" # For container method
_boardurl="https://yabb.jriver.com/interact/index.php/board,71.0.html" # MC28 (Buster), for fallback webscrape boardurl="https://yabb.jriver.com/interact/index.php/board,71.0.html" # MC28 (Buster), for fallback webscrape
#_base_next="bullseye" # TODO use for fallback to smooth upgrades #base_next="bullseye" # TODO use for fallback to smooth upgrades
# Legacy # Legacy
#_boardurl26="https://yabb.jriver.com/interact/index.php/board,64.0.html" # jessie/stretch #boardurl26="https://yabb.jriver.com/interact/index.php/board,64.0.html" # jessie/stretch
# Peg older versions to prevent ABI and dependency mismatches in automatic mode # Peg older versions to prevent ABI and dependency mismatches in automatic mode
# This can be overriden w/ --mcversion # This can be overriden w/ --mcversion
@@ -361,42 +361,42 @@ getLatestVersion() {
# if [[ -v _install ]]; then # if [[ -v _install ]]; then
# if [[ "$ID" == "ubuntu" ]]; then # if [[ "$ID" == "ubuntu" ]]; then
# # [[ "$VERSION_CODENAME" =~ ^(focal|groovy|hirsute|impish)$ ]] && \ # # [[ "$VERSION_CODENAME" =~ ^(focal|groovy|hirsute|impish)$ ]] && \
# # _base="bullseye" # # base="bullseye"
# [[ "$VERSION_CODENAME" =~ ^(cosmic|disco|eoan)$ ]] && \ # [[ "$VERSION_CODENAME" =~ ^(cosmic|disco|eoan)$ ]] && \
# _base="buster" # base="buster"
# [[ "$VERSION_CODENAME" =~ ^(xenial|yakkety|zesty|artful|bionic)$ ]] && \ # [[ "$VERSION_CODENAME" =~ ^(xenial|yakkety|zesty|artful|bionic)$ ]] && \
# _mcversion="26.0.107" # mcversion="26.0.107"
# [[ "$VERSION_CODENAME" =~ ^(trusty|utopic|vivid|wily)$ ]] && \ # [[ "$VERSION_CODENAME" =~ ^(trusty|utopic|vivid|wily)$ ]] && \
# _mcversion="26.0.107" # mcversion="26.0.107"
# elif [[ "$ID" == "debian" ]]; then # elif [[ "$ID" == "debian" ]]; then
# _base="$VERSION_CODENAME" # base="$VERSION_CODENAME"
# [[ $VERSION_ID -eq 10 ]] && \ # [[ $VERSION_ID -eq 10 ]] && \
# _base="buster" # base="buster"
# [[ $VERSION_ID -le 9 ]] && \ # [[ $VERSION_ID -le 9 ]] && \
# _mcversion="26.0.107" # For 9 and 8 # mcversion="26.0.107" # For 9 and 8
# elif [[ "$ID" == "centos" ]]; then # elif [[ "$ID" == "centos" ]]; then
# [[ "$VERSION_ID" -eq "8" ]] && \ # [[ "$VERSION_ID" -eq "8" ]] && \
# _base="buster" # base="buster"
# [[ "$VERSION_ID" -lt "8" ]] && \ # [[ "$VERSION_ID" -lt "8" ]] && \
# _mcversion="26.0.107" # Doubtful # mcversion="26.0.107" # Doubtful
# fi # fi
# [[ -v _mcversion ]] && \ # [[ -v mcversion ]] && \
# _version_source="compatibility lookup" && \ # _version_source="compatibility lookup" && \
# debug "To override, use --mcversion" && \ # debug "To override, use --mcversion" && \
# return 0 # return 0
# fi # fi
# Use a containerized package manager # Use a containerized package manager
# TODO but how to determine build distro ($_base=buster)? # TODO but how to determine build distro ($base=buster)?
installPackage --silent buildah installPackage --silent buildah
if [[ -x $(command -v buildah) ]] && CNT=$(buildah from debian:$_base); then if [[ -x $(command -v buildah) ]] && CNT=$(buildah from debian:$base); then
buildah run "$CNT" -- bash -c \ buildah run "$CNT" -- bash -c \
"echo 'deb [trusted=yes arch=amd64,i386,armhf,arm64] http://dist.jriver.com/latest/mediacenter/ $_base main' > /etc/apt/sources.list 2>&1" "echo 'deb [trusted=yes arch=amd64,i386,armhf,arm64] http://dist.jriver.com/latest/mediacenter/ $base main' > /etc/apt/sources.list 2>&1"
buildah run "$CNT" -- bash -c \ buildah run "$CNT" -- bash -c \
"apt-get update --allow-insecure-repositories -y > /dev/null 2>&1" "apt-get update --allow-insecure-repositories -y > /dev/null 2>&1"
if _mcversion=$(buildah run "$CNT" -- apt-cache policy mediacenter?? | grep Candidate | awk '{print $2}' | sort -V | tail -n1) \ if mcversion=$(buildah run "$CNT" -- apt-cache policy mediacenter?? | grep Candidate | awk '{print $2}' | sort -V | tail -n1) \
&& [[ "$_mcversion" =~ ([0-9]+.[0-9]+.[0-9]+) ]]; then && [[ "$mcversion" =~ ([0-9]+.[0-9]+.[0-9]+) ]]; then
_version_source="containerized package manager" _version_source="containerized package manager"
buildah rm "$CNT" > /dev/null 2>&1 buildah rm "$CNT" > /dev/null 2>&1
return 0 return 0
@@ -405,12 +405,12 @@ getLatestVersion() {
fi fi
# Scrape from Interact # Scrape from Interact
installPackage wget installPackage wget
if _mcversion=$(wget -qO- "$_boardurl" | grep -o "[0-9][0-9]\.[0-9]\.[0-9]\+" | head -n 1); then if mcversion=$(wget -qO- "$boardurl" | grep -o "[0-9][0-9]\.[0-9]\.[0-9]\+" | head -n 1); then
_version_source="webscrape" _version_source="webscrape"
fi fi
if ! [[ -v _mcversion ]]; then if ! [[ -v mcversion ]]; then
err "MC version could not be determined. Please check the boardurl: $_boardurl or specify a version manually using --mcversion" err "MC version could not be determined. Please check the boardurl: $boardurl or specify a version manually using --mcversion"
exit 1 exit 1
fi fi
} }
@@ -506,7 +506,7 @@ addRepo() {
gpgcheck=0 gpgcheck=0
EOF' EOF'
elif [[ "$ID" =~ ^(debian|ubuntu|linuxmint)$ ]]; then elif [[ "$ID" =~ ^(debian|ubuntu|linuxmint)$ ]]; then
# _mversion will depend on _base unless --mcversion is passed # _mversion will depend on base unless --mcversion is passed
installPackage wget installPackage wget
wget -q "http://dist.jriver.com/mediacenter@jriver.com.gpg.key" -O- | ifSudo apt-key add - > /dev/null 2>&1 wget -q "http://dist.jriver.com/mediacenter@jriver.com.gpg.key" -O- | ifSudo apt-key add - > /dev/null 2>&1
ifSudo wget "http://dist.jriver.com/latest/mediacenter/mediacenter$_mversion.list" -O "/etc/apt/sources.list.d/mediacenter$_mversion.list" > /dev/null 2>&1 ifSudo wget "http://dist.jriver.com/latest/mediacenter/mediacenter$_mversion.list" -O "/etc/apt/sources.list.d/mediacenter$_mversion.list" > /dev/null 2>&1
@@ -524,7 +524,7 @@ installMCFromRepo() {
local _mcpkg local _mcpkg
echo "Installing JRiver Media Center $_mcversion from repository." echo "Installing JRiver Media Center $mcversion from repository."
echo "Future updates will be handled by your package manager." echo "Future updates will be handled by your package manager."
if ! debug; then if ! debug; then
@@ -549,9 +549,9 @@ installMCFromRepo() {
if [[ -v _specific_version ]]; then if [[ -v _specific_version ]]; then
if [[ "$ID" =~ ^(fedora|centos|opensuse.*)$ ]]; then if [[ "$ID" =~ ^(fedora|centos|opensuse.*)$ ]]; then
_mcpkg="$_mcpkg-$_mcversion" _mcpkg="$_mcpkg-$mcversion"
elif [[ "$ID" =~ ^(debian|ubuntu|linuxmint)$ ]]; then elif [[ "$ID" =~ ^(debian|ubuntu|linuxmint)$ ]]; then
_mcpkg="$_mcpkg=$_mcversion" _mcpkg="$_mcpkg=$mcversion"
fi fi
fi fi
@@ -573,7 +573,7 @@ acquireDeb() {
debug "Running: ${FUNCNAME[0]}" debug "Running: ${FUNCNAME[0]}"
declare -g DEBFILENAME declare -g DEBFILENAME
DEBFILENAME="$_outputdir/SOURCES/MediaCenter-$_mcversion-amd64.deb" DEBFILENAME="$_outputdir/SOURCES/MediaCenter-$mcversion-amd64.deb"
# If necessary, create SOURCES dir # If necessary, create SOURCES dir
[[ ! -d "$_outputdir/SOURCES" ]] && mkdir -p "$_outputdir/SOURCES" [[ ! -d "$_outputdir/SOURCES" ]] && mkdir -p "$_outputdir/SOURCES"
@@ -584,15 +584,15 @@ acquireDeb() {
elif [[ -v _betapass ]]; then elif [[ -v _betapass ]]; then
echo "Checking beta repo..." echo "Checking beta repo..."
if wget -q -O "$DEBFILENAME" \ if wget -q -O "$DEBFILENAME" \
"https://files.jriver.com/mediacenter/channels/v$_mversion/beta/$_betapass/MediaCenter-$_mcversion-amd64.deb"; then "https://files.jriver.com/mediacenter/channels/v$_mversion/beta/$_betapass/MediaCenter-$mcversion-amd64.deb"; then
echo "Found!" echo "Found!"
fi fi
elif echo "Checking test repo..." && wget -q -O "$DEBFILENAME" \ elif echo "Checking test repo..." && wget -q -O "$DEBFILENAME" \
"https://files.jriver.com/mediacenter/test/MediaCenter-$_mcversion-amd64.deb"; then "https://files.jriver.com/mediacenter/test/MediaCenter-$mcversion-amd64.deb"; then
echo "Found!" echo "Found!"
# Else check latest repo # Else check latest repo
elif echo "Checking latest repo..." && wget -q -O "$DEBFILENAME" \ elif echo "Checking latest repo..." && wget -q -O "$DEBFILENAME" \
"https://files.jriver.com/mediacenter/channels/v$_mversion/latest/MediaCenter-$_mcversion-amd64.deb"; then "https://files.jriver.com/mediacenter/channels/v$_mversion/latest/MediaCenter-$mcversion-amd64.deb"; then
echo "Found!" echo "Found!"
else else
err "Cannot find DEB file." err "Cannot find DEB file."
@@ -706,7 +706,7 @@ buildRPM() {
local _ec local _ec
declare -g _mcrpm="$_outputdir/RPMS/x86_64/MediaCenter-$_mcversion.x86_64.rpm" declare -g _mcrpm="$_outputdir/RPMS/x86_64/MediaCenter-$mcversion.x86_64.rpm"
# skip rebuilding the rpm if it already exists # skip rebuilding the rpm if it already exists
if [[ -f "$_mcrpm" ]]; then if [[ -f "$_mcrpm" ]]; then
@@ -724,11 +724,11 @@ buildRPM() {
# Create spec file # Create spec file
cat <<- EOF > "$_outputdir/SPECS/mediacenter.spec" cat <<- EOF > "$_outputdir/SPECS/mediacenter.spec"
Name: MediaCenter Name: MediaCenter
Version: $_mcversion Version: $mcversion
Release: 1 Release: 1
Summary: JRiver Media Center Summary: JRiver Media Center
Group: Applications/Media Group: Applications/Media
Source0: http://files.jriver.com/mediacenter/channels/v$_mversion/latest/MediaCenter-$_mcversion-amd64.deb Source0: http://files.jriver.com/mediacenter/channels/v$_mversion/latest/MediaCenter-$mcversion-amd64.deb
BuildArch: x86_64 BuildArch: x86_64
%define _rpmfilename %%{ARCH}/%%{NAME}-%%{version}.%%{ARCH}.rpm %define _rpmfilename %%{ARCH}/%%{NAME}-%%{version}.%%{ARCH}.rpm
@@ -767,7 +767,7 @@ buildRPM() {
EOF EOF
# Run rpmbuild # Run rpmbuild
echo "Building version $_mcversion, please wait..." echo "Building version $mcversion, please wait..."
if debug; then if debug; then
rpmbuild --define="%_topdir $_outputdir" --define="%_libdir /usr/lib" -bb "$_outputdir/SPECS/mediacenter.spec" rpmbuild --define="%_topdir $_outputdir" --define="%_libdir /usr/lib" -bb "$_outputdir/SPECS/mediacenter.spec"
@@ -1233,7 +1233,7 @@ service_jriver-createrepo() {
# installPackage buildah podman # installPackage buildah podman
# # Eventually try to switch to Debian # # Eventually try to switch to Debian
# # if ! CNT=$(buildah from debian:$_base); then # # if ! CNT=$(buildah from debian:$base); then
# # echo "Bad base image for container $CNAME, skipping" # # echo "Bad base image for container $CNAME, skipping"
# # continue # # continue
# # fi # # fi