10 Commits

Author SHA1 Message Date
156718b659 v1.0.4 release 2024-05-29 14:12:03 -04:00
346f5838ee Fix debug bug 2024-05-29 14:08:59 -04:00
0944c18be4 Simplify user arch 2024-05-28 20:34:07 -04:00
d8f7764ad7 Hardcode container image 2024-05-28 19:33:26 -04:00
f4a967853d Add temp debug 2024-05-28 19:06:38 -04:00
fe7fdbbc7b Redeclare vars 2024-05-28 19:04:19 -04:00
dd2838dbb2 Refactor setMCVersion() 2024-05-28 18:58:42 -04:00
c1a9a5330e Add temp debug output 2024-05-28 17:51:31 -04:00
16c35e2e2c Add temp debug output 2024-05-28 17:50:40 -04:00
be2d29fd7f Add repo autodetect based on MCVERSION 2024-05-28 17:47:34 -04:00

View File

@@ -16,10 +16,10 @@
shopt -s extglob shopt -s extglob
declare -g SCRIPTVERSION="1.0.3" declare -g SCRIPTVERSION="1.0.4"
declare -g BOARDURL="https://yabb.jriver.com/interact/index.php/board,83.0.html" # MC32 declare -g BOARDURL="https://yabb.jriver.com/interact/index.php/board,83.0.html" # MC32
declare -g MC_REPO="bullseye" declare -g MC_VERSION="32.0.45" # Do find all replace
declare -g MC_VERSION_HARDCODE="32.0.45" # Do find all replace declare -g MC_REPO="bullseye" # should match the MC_VERSION
printHelp() { printHelp() {
debug "Running: ${FUNCNAME[0]}" debug "Running: ${FUNCNAME[0]}"
@@ -40,7 +40,7 @@ printHelp() {
--compat --compat
Build/install MC locally without minimum dependency version requirements Build/install MC locally without minimum dependency version requirements
--mcversion VERSION --mcversion VERSION
Specify the MC version, ex. "$MC_VERSION_HARDCODE" (default: latest version) Specify the MC version, ex. "$MC_VERSION" (default: latest version)
--arch VERSION --arch VERSION
Specify the MC architecture, ex. "amd64", "arm64", etc (default: host architecture) Specify the MC architecture, ex. "amd64", "arm64", etc (default: host architecture)
--mcrepo REPO --mcrepo REPO
@@ -178,7 +178,7 @@ init() {
ID="ubuntu" ID="ubuntu"
if [[ ${VERSION_ID%.*} -ge 24 ]]; then if [[ ${VERSION_ID%.*} -ge 24 ]]; then
debug "Switching to noble repo for *buntu 24" debug "Switching to noble repo for *buntu 24"
declare -g MC_REPO='noble' declare -g USER_MC_REPO='noble' # Pretend to be user input
fi fi
;; ;;
*suse*) *suse*)
@@ -219,35 +219,35 @@ init() {
PKG_REMOVE=(execute sudo "$RPM_MGR" remove -y) PKG_REMOVE=(execute sudo "$RPM_MGR" remove -y)
PKG_UPDATE=(execute sudo "$RPM_MGR" makecache) PKG_UPDATE=(execute sudo "$RPM_MGR" makecache)
PKG_QUERY=(rpm -q) PKG_QUERY=(rpm -q)
PKG_INSTALL_LOCAL(){ installMCRPM; } PKG_INSTALL_LOCAL(){ installMCRpm; }
;; ;;
debian|ubuntu) debian|ubuntu)
PKG_INSTALL=(execute sudo apt-get -f install -y -q0) PKG_INSTALL=(execute sudo apt-get -f install -y -q0)
PKG_REMOVE=(execute sudo apt-get remove --auto-remove -y -q0) PKG_REMOVE=(execute sudo apt-get remove --auto-remove -y -q0)
PKG_UPDATE=(execute sudo apt-get update -y -q0) PKG_UPDATE=(execute sudo apt-get update -y -q0)
PKG_QUERY=(dpkg -s) PKG_QUERY=(dpkg -s)
PKG_INSTALL_LOCAL(){ installMCDEB; } PKG_INSTALL_LOCAL(){ installMCDeb; }
;; ;;
suse) suse)
PKG_INSTALL=(execute sudo zypper --gpg-auto-import-keys --non-interactive --quiet install --force --no-confirm) PKG_INSTALL=(execute sudo zypper --gpg-auto-import-keys --non-interactive --quiet install --force --no-confirm)
PKG_REMOVE=(execute sudo zypper --non-interactive --quiet remove --clean-deps) PKG_REMOVE=(execute sudo zypper --non-interactive --quiet remove --clean-deps)
PKG_UPDATE=(execute sudo zypper --non-interactive --quiet refresh jriver) PKG_UPDATE=(execute sudo zypper --non-interactive --quiet refresh jriver)
PKG_QUERY=(rpm -q) PKG_QUERY=(rpm -q)
PKG_INSTALL_LOCAL(){ installMCRPM; } PKG_INSTALL_LOCAL(){ installMCRpm; }
;; ;;
arch) arch)
PKG_INSTALL=(execute sudo pacman -Sy --noconfirm) PKG_INSTALL=(execute sudo pacman -Sy --noconfirm)
PKG_REMOVE=(execute sudo pacman -Rs --noconfirm) PKG_REMOVE=(execute sudo pacman -Rs --noconfirm)
PKG_UPDATE=(execute sudo pacman -Syy) PKG_UPDATE=(execute sudo pacman -Syy)
PKG_QUERY=(sudo pacman -Qs) PKG_QUERY=(sudo pacman -Qs)
PKG_INSTALL_LOCAL(){ installMCARCH; } PKG_INSTALL_LOCAL(){ installMCArch; }
;; ;;
unknown) unknown)
PKG_INSTALL=(:) PKG_INSTALL=(:)
PKG_REMOVE=(:) PKG_REMOVE=(:)
PKG_UPDATE=(:) PKG_UPDATE=(:)
PKG_QUERY=(:) PKG_QUERY=(:)
PKG_INSTALL_LOCAL(){ installMCGENERIC; } PKG_INSTALL_LOCAL(){ installMCGeneric; }
esac esac
} }
@@ -260,7 +260,7 @@ parseInput() {
declare -g BUILD_SWITCH REPO_INSTALL_SWITCH COMPAT_SWITCH TEST_SWITCH declare -g BUILD_SWITCH REPO_INSTALL_SWITCH COMPAT_SWITCH TEST_SWITCH
declare -g LOCAL_INSTALL_SWITCH CREATEREPO_SWITCH UNINSTALL_SWITCH declare -g LOCAL_INSTALL_SWITCH CREATEREPO_SWITCH UNINSTALL_SWITCH
declare -g YES_SWITCH USER_VERSION_SWITCH USER_ARCH declare -g YES_SWITCH USER_MC_VERSION
declare -g RESTOREFILE BETAPASS SERVICE_TYPE declare -g RESTOREFILE BETAPASS SERVICE_TYPE
declare -g VNCPASS USER_DISPLAY declare -g VNCPASS USER_DISPLAY
declare -ga SERVICES CONTAINERS declare -ga SERVICES CONTAINERS
@@ -321,14 +321,21 @@ parseInput() {
;; ;;
--mcversion) --mcversion)
shift shift
MC_VERSION="$1" if [[ $1 =~ ([0-9]+.[0-9]+.[0-9]+) ]]; then
USER_VERSION_SWITCH=1 USER_MC_VERSION="$1"
else
err "Bad --mcversion"
printHelp
exit 1
fi
;; ;;
--arch) --arch)
shift && USER_ARCH="$1" shift
echo "Switching from $ARCH to $1 architecture"
ARCH="$1"
;; ;;
--mcrepo) --mcrepo)
shift && declare -g MC_REPO="$1" shift && declare -g USER_MC_REPO="$1"
;; ;;
--restorefile) --restorefile)
shift && RESTOREFILE="$1" shift && RESTOREFILE="$1"
@@ -407,41 +414,52 @@ parseInput() {
setMCVersion() { setMCVersion() {
debug "Running: ${FUNCNAME[0]}" debug "Running: ${FUNCNAME[0]}"
declare -g MC_VERSION_SOURCE MC_MVERSION MC_ROOT declare -g MC_VERSION_SOURCE MC_MVERSION MC_ROOT
declare -g MC_PKG MC_RPM MC_STUB MC_STUB_TARGET declare -g MC_PKG MC_RPM MC_STUB MC_STUB_TARGET
declare cnt declare cnt
# User input # User input
if (( USER_VERSION_SWITCH )) && if [[ -n $USER_MC_VERSION ]]; then
[[ $MC_VERSION =~ ([0-9]+.[0-9]+.[0-9]+) ]]; then
MC_VERSION_SOURCE="user input" MC_VERSION_SOURCE="user input"
MC_VERSION="$USER_MC_VERSION"
# Containerized package manager # Containerized package manager
elif installPackage --silent buildah &&
cnt=$(buildah from --quiet debian:stable-slim) &>/dev/null &&
buildah run "$cnt" -- bash -c \
"echo 'deb [trusted=no arch=amd64,i386,armhf,arm64] http://dist.jriver.com/latest/mediacenter/ $MC_REPO main' > /etc/apt/sources.list 2>&1" &>/dev/null &&
buildah run "$cnt" -- bash -c \
"apt update --allow-insecure-repositories &>/dev/null" &>/dev/null &&
MC_VERSION=$(buildah run "$cnt" -- apt-cache policy mediacenter?? | grep Candidate | awk '{print $2}' | sort -V | tail -n1) &>/dev/null &&
[[ $MC_VERSION =~ ([0-9]+.[0-9]+.[0-9]+) ]]; then
MC_VERSION_SOURCE="containerized package manager"
execute buildah rm "$cnt"
# Webscrape
elif installPackage --silent wget &&
MC_VERSION=$(wget -qO- "$BOARDURL" | grep -o "[0-9][0-9]\.[0-9]\.[0-9]\+" | head -n 1) &&
[[ $MC_VERSION =~ ([0-9]+.[0-9]+.[0-9]+) ]]; then
MC_VERSION_SOURCE="webscrape"
# Hardcoded
else else
echo "Determining latest MC version" MC_VERSION_SOURCE="hardcoded"
if installPackage --silent buildah && err "Warning! Using hardcoded version number"
hash buildah &>/dev/null &&
cnt=$(buildah from --quiet debian:"${MC_REPO/noble/bullseye}"-slim) &>/dev/null &&
buildah run "$cnt" -- bash -c \
"echo 'deb [trusted=no arch=amd64,i386,armhf,arm64] http://dist.jriver.com/latest/mediacenter/ $MC_REPO main' > /etc/apt/sources.list 2>&1" &>/dev/null &&
buildah run "$cnt" -- bash -c \
"apt update --allow-insecure-repositories &>/dev/null" &>/dev/null &&
MC_VERSION=$(buildah run "$cnt" -- apt-cache policy mediacenter?? | grep Candidate | awk '{print $2}' | sort -V | tail -n1) &>/dev/null &&
[[ $MC_VERSION =~ ([0-9]+.[0-9]+.[0-9]+) ]]; then
MC_VERSION_SOURCE="containerized package manager"
execute buildah rm "$cnt"
# Webscrape
elif installPackage wget && MC_VERSION=$(wget -qO- "$BOARDURL" | grep -o "[0-9][0-9]\.[0-9]\.[0-9]\+" | head -n 1) &&
[[ $MC_VERSION =~ ([0-9]+.[0-9]+.[0-9]+) ]]; then
MC_VERSION_SOURCE="webscrape"
# Hardcoded
else
declare -g MC_VERSION="$MC_VERSION_HARDCODE"
MC_VERSION_SOURCE="hardcoded or MC_VERSION env"
err "Warning! Using hardcoded version number"
fi
fi fi
# Set major version var
MC_MVERSION="${MC_VERSION%%.*}" MC_MVERSION="${MC_VERSION%%.*}"
# Set legacy MC repos based on the major version number
# Users can override with --mcrepo
if [[ -z $USER_MC_REPO ]]; then
case $MC_MVERSION in
2[0-6])
MC_REPO="jessie"
;;
2[7-9]|30)
MC_REPO="buster"
;;
esac
fi
MC_PKG="mediacenter$MC_MVERSION" MC_PKG="mediacenter$MC_MVERSION"
MC_RPM="$OUTPUTDIR/RPMS/x86_64/mediacenter$MC_MVERSION-$MC_VERSION.x86_64.rpm" MC_RPM="$OUTPUTDIR/RPMS/x86_64/mediacenter$MC_MVERSION-$MC_VERSION.x86_64.rpm"
MC_ROOT="/usr/lib/jriver/Media Center $MC_MVERSION" MC_ROOT="/usr/lib/jriver/Media Center $MC_MVERSION"
@@ -459,9 +477,11 @@ setMCVersion() {
;; ;;
esac esac
fi fi
echo "Using MC version $MC_VERSION determined by $MC_VERSION_SOURCE"
echo "Using the $MC_REPO repository"
echo "Using MC version $MC_VERSION from the $MC_REPO repo determined by $MC_VERSION_SOURCE"
[[ $MC_VERSION_SOURCE == "user input" ]] || echo "To override, use --mcversion" [[ $MC_VERSION_SOURCE == "user input" ]] || echo "To override, use --mcversion"
debug "MVERSION: $MC_MVERSION, MC_VERSION: $MC_VERSION, MC_PKG: $MC_PKG, MC_RPM: $MC_RPM" debug "MC_VERSION=$MC_VERSION, MC_REPO=$MC_REPO, MC_PKG=$MC_PKG, MC_RPM=$MC_RPM"
} }
@@ -664,7 +684,7 @@ installMCFromRepo() {
acquireDeb() { acquireDeb() {
debug "Running: ${FUNCNAME[0]}" debug "Running: ${FUNCNAME[0]}"
declare -g MC_DEB="$OUTPUTDIR/SOURCES/MediaCenter-$MC_VERSION-${USER_ARCH:-$ARCH}.deb" declare -g MC_DEB="$OUTPUTDIR/SOURCES/MediaCenter-$MC_VERSION-$ARCH.deb"
debug "MC_DEB=$MC_DEB" debug "MC_DEB=$MC_DEB"
@@ -676,13 +696,13 @@ acquireDeb() {
if [[ -v BETAPASS ]] && if [[ -v BETAPASS ]] &&
echo "Checking beta repo for DEB package" && execute wget -q -O "$MC_DEB" \ echo "Checking beta repo for DEB package" && execute wget -q -O "$MC_DEB" \
"https://files.jriver-cdn.com/mediacenter/channels/v$MC_MVERSION/beta/$BETAPASS/MediaCenter-$MC_VERSION-${USER_ARCH:-$ARCH}.deb"; then "https://files.jriver-cdn.com/mediacenter/channels/v$MC_MVERSION/beta/$BETAPASS/MediaCenter-$MC_VERSION-$ARCH.deb"; then
echo "Found!" echo "Found!"
elif echo "Checking latest repo for DEB package" && execute wget -q -O "$MC_DEB" \ elif echo "Checking latest repo for DEB package" && execute wget -q -O "$MC_DEB" \
"https://files.jriver-cdn.com/mediacenter/channels/v$MC_MVERSION/latest/MediaCenter-$MC_VERSION-${USER_ARCH:-$ARCH}.deb"; then "https://files.jriver-cdn.com/mediacenter/channels/v$MC_MVERSION/latest/MediaCenter-$MC_VERSION-$ARCH.deb"; then
echo "Found!" echo "Found!"
elif echo "Checking test repo for DEB package" && execute wget -q -O "$MC_DEB" \ elif echo "Checking test repo for DEB package" && execute wget -q -O "$MC_DEB" \
"https://files.jriver-cdn.com/mediacenter/test/MediaCenter-$MC_VERSION-${USER_ARCH:-$ARCH}.deb"; then "https://files.jriver-cdn.com/mediacenter/test/MediaCenter-$MC_VERSION-$ARCH.deb"; then
echo "Found!" echo "Found!"
else else
err "Cannot find DEB file" err "Cannot find DEB file"
@@ -811,7 +831,7 @@ buildRPM() {
Release: 1 Release: 1
Summary: JRiver Media Center Summary: JRiver Media Center
Group: Applications/Media Group: Applications/Media
Source0: http://files.jriver-cdn.com/mediacenter/channels/v$MC_MVERSION/latest/MediaCenter-$MC_VERSION-${USER_ARCH:-$ARCH}.deb Source0: http://files.jriver-cdn.com/mediacenter/channels/v$MC_MVERSION/latest/MediaCenter-$MC_VERSION-$ARCH.deb
BuildArch: x86_64 BuildArch: x86_64
%define _rpmfilename %%{ARCH}/%%{NAME}-%%{version}.%%{ARCH}.rpm %define _rpmfilename %%{ARCH}/%%{NAME}-%%{version}.%%{ARCH}.rpm
@@ -876,7 +896,7 @@ buildRPM() {
####################################### #######################################
# Installs Media Center DEB package and optional compatability fixes # Installs Media Center DEB package and optional compatability fixes
####################################### #######################################
installMCDEB() { installMCDeb() {
debug "Running: ${FUNCNAME[0]}" debug "Running: ${FUNCNAME[0]}"
if (( COMPAT_SWITCH )); then if (( COMPAT_SWITCH )); then
@@ -909,7 +929,7 @@ installMCDEB() {
####################################### #######################################
# Installs Media Center RPM package # Installs Media Center RPM package
####################################### #######################################
installMCRPM() { installMCRpm() {
debug "Running: ${FUNCNAME[0]}" debug "Running: ${FUNCNAME[0]}"
# Install mesa-va-freeworld separately from the RPM for dnf swap # Install mesa-va-freeworld separately from the RPM for dnf swap
@@ -922,7 +942,7 @@ installMCRPM() {
####################################### #######################################
# Installs Media Center manually # Installs Media Center manually
####################################### #######################################
installMCGENERIC() { installMCGeneric() {
debug "Running: ${FUNCNAME[0]}" debug "Running: ${FUNCNAME[0]}"
declare -a raw_files declare -a raw_files
@@ -953,7 +973,7 @@ installMCGENERIC() {
####################################### #######################################
# Installs local Media Center PKGBUILD # Installs local Media Center PKGBUILD
####################################### #######################################
installMCARCH() { installMCArch() {
debug "Running: ${FUNCNAME[0]}" debug "Running: ${FUNCNAME[0]}"
[[ -d $OUTPUTDIR/PKGBUILD ]] || execute mkdir -p "$OUTPUTDIR/PKGBUILD" [[ -d $OUTPUTDIR/PKGBUILD ]] || execute mkdir -p "$OUTPUTDIR/PKGBUILD"
@@ -976,7 +996,7 @@ installMCARCH() {
'vorbis-tools: ogg vorbis support' 'vorbis-tools: ogg vorbis support'
'musepack-tools: musepack support' 'musepack-tools: musepack support'
) )
source=("http://files.jriver-cdn.com/mediacenter/channels/v$MC_MVERSION/latest/MediaCenter-$MC_VERSION-${USER_ARCH:-$ARCH}.deb") source=("http://files.jriver-cdn.com/mediacenter/channels/v$MC_MVERSION/latest/MediaCenter-$MC_VERSION-$ARCH.deb")
package() { package() {
cd "\$srcdir" cd "\$srcdir"