Browse Source

Improve debugger and host OS detection

bryan 2 years ago
parent
commit
9cd401ace5
1 changed files with 81 additions and 57 deletions
  1. 81 57
      installJRMC

+ 81 - 57
installJRMC

@@ -36,7 +36,7 @@ printHelp() {
 		    --install, -i repo|local
 		        repo: Install MC from repository, updates are handled by the system package manager
 		        local: Build and install MC package locally
-		    --build[=suse|fedora|centos]
+		    --build[=suse|fedora|centos|rhel]
 		        Build RPM from source DEB but do not install
 		        Optionally, specify a target distro for cross-building (ex. --build=suse, note the '=')
 		    --compat
@@ -55,7 +55,7 @@ printHelp() {
 		          Starts services at boot (system) or at user login (user) (Default: boot)
 		    --container, -c CONTAINER (TODO: Under construction)
 		        See CONTAINERS section below for a list of possible services to install
-		    --createrepo[=suse|fedora|centos]
+		    --createrepo[=suse|fedora|centos|rhel]
 		        Build rpm, copy to webroot, and run createrepo. Use in conjunction with --build=TARGET for crossbuilding repos
 		        Optionally, specify a target distro for non-native repo (ex. --createrepo=fedora, note the '=')
 		        --createrepo-webroot PATH
@@ -303,7 +303,7 @@ installPackage() {
                         install_flags+=(--allow-downgrades)
                     ;;
                 --nogpgcheck)
-                    if [[ "$ID" =~ ^(fedora|centos)$ ]]; then
+                    if [[ "$ID" =~ ^(fedora|centos|rhel)$ ]]; then
                         install_flags+=(--nogpgcheck)
                     elif [[ "$ID" == "suse" ]]; then
                         install_flags+=(--allow-unsigned-rpm)
@@ -369,7 +369,7 @@ addRepo() {
     fi
 
     echo "Adding JRiver repository to package manager"
-    if [[ "$ID" =~ ^(fedora|centos)$ ]]; then
+    if [[ "$ID" =~ ^(fedora|centos|rhel)$ ]]; then
         declare sources_dir="/etc/yum.repos.d/"
         sudo bash -c "cat <<- EOF > $sources_dir/jriver.repo
 			[jriver]
@@ -531,7 +531,7 @@ buildRPM() {
 
     # Translate package names
     case "$TARGET" in
-        fedora|centos)
+        fedora|centos|rhel)
             requires=("${requires[@]/libc6/glibc}")
             requires=("${requires[@]/libasound2/alsa-lib}")
             requires=("${requires[@]/libuuid1/libuuid}")
@@ -801,7 +801,7 @@ openFirewall() {
     fi
 
     # Open the ports
-    if [[ "$ID" =~ ^(fedora|centos|suse)$ ]]; then
+    if [[ "$ID" =~ ^(fedora|centos|rhel|suse)$ ]]; then
         installPackage firewalld
         if ! firewall_cmd --get-services | grep -q "$1"; then
             firewall_cmd --permanent --new-service="$1" &>/dev/null
@@ -1308,6 +1308,71 @@ service_jriver-createrepo() {
 #     brc del-pkg .build-deps
 # }
 
+#######################################
+# Perform OS detection and use compatability modes if necessary
+#######################################
+getOS() {
+    debug "Running: ${FUNCNAME[0]}"
+
+    declare -g ID MGR
+
+    if [[ -e "/etc/os-release" ]]; then
+        source "/etc/os-release"
+    else
+        err "/etc/os-release not found"
+        err "Your OS is unsupported"
+        printHelp && exit 1
+    fi
+
+    debug "Detected host platform: $ID $VERSION_ID"
+
+    # normalize ID
+    case "$ID" in
+        fedora|arch|debian|centos)
+            ;;
+        rhel)
+            ID="centos"
+            ;;
+        linuxmint|neon|*ubuntu*)
+            ID="ubuntu"
+            ;;
+        *suse*)
+            ID="suse"
+            ;;
+        *)
+            echo "Autodetecting distro, this may be unreliable and --compat may also be required"
+            if hash dnf &>/dev/null; then
+                ID="fedora"
+                MGR="dnf"
+            elif hash yum &>/dev/null; then
+                ID="centos"
+                MGR="yum"
+                COMPAT_SWITCH=1
+            elif hash apt &>/dev/null; then
+                ID="ubuntu"
+            elif hash pacman &>/dev/null; then
+                ID="arch"
+            else
+                err "OS detection failed!"
+                exit 1
+            fi
+    esac
+    
+    # Set package manager for RPM distros
+    case "$ID" in
+        centos|fedora|rhel)
+            if hash dnf &>/dev/null; then
+                MGR="dnf"
+            elif hash yum &>/dev/null; then
+                MGR="yum"
+            fi
+            ;;
+    esac
+
+    debug "Using host platform: $ID $VERSION_ID"
+}
+
+
 uninstall() {
     debug "Running: ${FUNCNAME[0]}"
 
@@ -1396,55 +1461,10 @@ tests() {
 main() {
     debug "Running: ${FUNCNAME[0]}"
 
-    declare -g ID MGR
-
-    if [[ -e "/etc/os-release" ]]; then
-        source "/etc/os-release"
-    else
-        err "/etc/os-release not found"
-        err "Your OS is unsupported"
-        printHelp && exit 1
-    fi
-
-    debug "Host platform: $ID $VERSION_ID"
-
-    case "$ID" in
-        centos|fedora)
-            if hash dnf &>/dev/null; then
-                MGR="dnf"
-            elif hash yum &>/dev/null; then
-                MGR="yum"
-            fi
-            ;;
-        debian|ubuntu|arch)
-            return 0
-            ;;
-        linuxmint|neon)
-            ID="ubuntu"
-            ;;
-        *suse*)
-            ID="suse"
-            ;;
-        *)
-            echo "Autodetecting distro, this may be unreliable and --compat may also be required"
-            if hash dnf &>/dev/null; then
-                ID="fedora"
-                MGR="dnf"
-            elif hash yum &>/dev/null; then
-                ID="centos"
-                MGR="yum"
-            elif hash apt &>/dev/null; then
-                ID="ubuntu"
-            elif hash pacman &>/dev/null; then
-                ID="arch"
-            fi
-            ;;
-    esac
-
-    debug "Host compatability platform: $ID $VERSION_ID"
+    getOS
 
     # Distro-specific commands
-    if [[ "$ID" =~ ^(fedora|centos)$ ]]; then
+    if [[ "$ID" =~ ^(fedora|centos|rhel)$ ]]; then
         pkg_install(){ sudo "$MGR" install -y "$@"; }
         pkg_remove(){ sudo "$MGR" remove -y "$@"; }
         pkg_update(){ sudo "$MGR" makecache; }
@@ -1475,7 +1495,7 @@ main() {
     getVersion
 
     # Set target package name
-    if [[ "$ID" =~ ^(fedora|centos|suse)$ ]]; then
+    if [[ "$ID" =~ ^(fedora|centos|rhel|suse)$ ]]; then
         MCPKG="MediaCenter"
         [[ "$VERSION_SOURCE" == "user input" ]] && MCPKG="$MCPKG-$MCVERSION"
     elif [[ "$ID" =~ ^(debian|ubuntu)$ ]]; then
@@ -1496,9 +1516,11 @@ main() {
             echo "Adding universe repository"
             sudo add-apt-repository universe
         fi 
-    elif [[ "$ID" == "centos" ]]; then
+    elif [[ "$ID" =~ ^(centos|rhel)$ ]]; then
         echo "Adding EPEL repository"
         installPackage epel-release
+    elif [[ "$ID" =~ ^(rhel)$ ]] && ! hash dpkg &>/dev/null; then
+        installPackage epel-release
     fi
 
     if (( REPO_INSTALL_SWITCH )); then
@@ -1516,7 +1538,7 @@ main() {
     if (( BUILD_SWITCH )); then
         installPackage "wget"
         acquireDeb
-        if [[ "$TARGET" =~ (centos|fedora|suse) ]]; then
+        if [[ "$TARGET" =~ (centos|fedora|rhel|suse) ]]; then
             installPackage "dpkg" "rpm-build"
             buildRPM
         fi
@@ -1524,7 +1546,7 @@ main() {
 
     if (( LOCAL_INSTALL_SWITCH )); then
         if ([[ "$TARGET" =~ (debian|ubuntu) ]] && installMCDEB) ||
-        ([[ "$TARGET" =~ (fedora|centos|suse) ]] && 
+        ([[ "$TARGET" =~ (fedora|centos|rhel|suse) ]] && 
         installPackage --skip-check-installed --nogpgcheck "$MCRPM") ||
         ([[ "$TARGET" == "arch" ]] && installMCArch); then
             echo "JRiver Media Center installed successfully from local package"
@@ -1565,5 +1587,7 @@ main() {
     # done
 }
 
+# Quickly turn debugging on (catch for real with getopt in parseInput())
+[[ " $* " =~ ( --debug | -d ) ]] && echo "First Debugging on!" && DEBUG=1
 
 main "$@"