소스 검색

Housekeeping

bryan 3 년 전
부모
커밋
5e9b0be628
1개의 변경된 파일29개의 추가작업 그리고 9개의 파일을 삭제
  1. 29 9
      installJRMC

+ 29 - 9
installJRMC

@@ -8,11 +8,15 @@
 # Use installJRMC --help to see available options or
 # read printHelp() below.
 #
-# TODO:
+# TODO
 #   1. Raspberry Pi OS support
 #   2. Interactive installation (ncurses?)
-#   3. Additional containerization
+#   3. Additional containerization (createrepo and rpmbuild)
 #   4. Tests
+#
+# BUGS
+#   1. SUSE probably broken
+#   2. No createrepo on Mint
 
 shopt -s extglob
 
@@ -23,7 +27,6 @@ _exec_user="$(whoami)"
 
 # MC version
 _boardurl="https://yabb.jriver.com/interact/index.php/board,71.0.html" # Media Center 28, only required if buildah is unavailable
-_base="buster" # TODO maybe support for older versions and legacy distros? A lot of work...
 # _mcversion="28.0.87" # to set manually
 
 printHelp() {
@@ -102,6 +105,23 @@ init() {
 
     getOS
 
+    _base="buster" # default
+    #_base_next="bullseye" # TODO use for fallback to smooth upgrades
+
+    # Peg older versions to prevent ABI mismatches
+    # This can be overriden w/ --mcversion
+    if [[ "$ID" == "ubuntu" ]]; then
+        [[ "$VERSION_CODENAME" =~ ^(bionic|cosmic|disco|eoan)$ ]] && _base="buster"
+        # [[ "$VERSION_CODENAME" =~ ^(focal|groovy|hirsute|impish)$ ]] && _base="bullseye"
+        [[ "$VERSION_CODENAME" =~ ^(xenial|yakkety|zesty|artful)$ ]] && _base="stretch"
+        [[ "$VERSION_CODENAME" =~ ^(trusty|utopic|vivid|wily)$ ]] && _base="jessie"
+    elif [[ "$ID" == "debian" ]]; then
+        _base="$VERSION_CODENAME"
+    elif [[ "$ID" == "centos" ]]; then
+        [[ "$VERSION_ID" == "7" ]] && _base="stretch"
+        [[ "$VERSION_ID" == "8" ]] && _base="buster"
+    fi
+   
     # Agnostic commands
     bash_cmd(){ ifSudo bash -c "$@"; }
     rm_cmd(){ ifSudo rm -rf "$@"; }
@@ -324,7 +344,7 @@ getLatestVersion() {
     # Use a containerized package manager
     # TODO but how to determine build distro ($_base=buster)?
     [[ ! -x $(command -v buildah) ]] && installPackage --silent buildah
-    if [[ -x $(command -v buildah) ]] && CNT=$(buildah from ubuntu:18.04); then 
+    if [[ -x $(command -v buildah) ]] && CNT=$(buildah from debian$_base); then 
         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"
         buildah run "$CNT" -- bash  -c \
@@ -430,6 +450,7 @@ addRepo() {
 			gpgcheck=0
 		EOF'
     elif [[ "$ID" =~ ^(debian|ubuntu|linuxmint)$ ]]; then
+        # _mversion will depend on _base unless --mcversion is passed
         installPackage wget
         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
@@ -891,8 +912,8 @@ setServiceVars() {
     if [[ "$_service_user" == "root" ]]; then
         _service_fname="/usr/lib/systemd/system/${1}.service"
         _timer_fname="/usr/lib/systemd/system/${1}.timer"
-        _service_name="jriver-${1}.service"
-        _timer_name="jriver-${1}.timer"
+        _service_name="${1}.service"
+        _timer_name="${1}.timer"
         _user_specifier=""
     else
         _service_fname="/usr/lib/systemd/system/${1}@.service"
@@ -1155,14 +1176,13 @@ uninstall() {
     for _service in $(compgen -A "function" "service"); do
         _service="${_service##service_}"
         setServiceVars "$_service"
-        for unit in "$_service_name."{service,timer} "$_service_name@$_service_user."{service,timer}; do
+        for unit in "$_service_name" "$_timer_name"; do
             if systemctl is-active -q "$unit" > /dev/null 2>&1 || systemctl is-enabled -q "$unit" > /dev/null 2>&1; then
                 debug "Disabling $unit"
                 systemctl_disable "$unit"
             fi
         done
-        for f in "/usr/lib/systemd/system/${_service_name}."{service,timer} \
-                 "/usr/lib/systemd/system/${_service_name}@${_service_user}."{service,timer}; do
+        for f in "$_service_fname" "$_timer_fname"; do
             debug "Removing $f"
             rm_cmd "$f"
         done