Jelajahi Sumber

Allow RPM croosbuilding

bryan 3 tahun lalu
induk
melakukan
07cc841252
2 mengubah file dengan 43 tambahan dan 23 penghapusan
  1. 5 0
      README.md
  2. 38 23
      installJRMC

+ 5 - 0
README.md

@@ -23,6 +23,8 @@ You can always find the latest supported options by running `installJRMC --help`
     rpm: Build and install MC locally (RPM-based OSes only)
 --build
     Build RPM from source DEB (no installation)
+--build-suse
+    Override OS detection and build SUSE RPM
 --mcversion VERSION
     Build or install a specific MC version, ex. "28.0.25"
 --outputdir PATH
@@ -37,7 +39,10 @@ You can always find the latest supported options by running `installJRMC --help`
     Install systemd services and containers for user USER (Default: executing user)
 --container, -c CONTAINER (TODO: Under construction)
     See CONTAINERS section below for a list of containers to deploy
+--createrepo
     Build rpm, copy to webroot, and run createrepo
+--createrepo-suse
+    Override OS detection and run --createrepo with SUSE RPM
 --createrepo-webroot PATH
     The webroot directory to install the repo (Default: /srv/jriver/)
 --createrepo-user USER

+ 38 - 23
installJRMC

@@ -44,6 +44,8 @@ printHelp() {
 		        rpm: Build and install RPM locally (RPM-based distros only)
 		    --build
 		        Build RPM from source DEB (but don't install it)
+            --build-suse
+                Override OS detection and build SUSE RPM
 		    --mcversion VERSION
 		        Specify the MC version, ex. "28.0.25" (Default: latest version)
 		    --outputdir PATH
@@ -64,6 +66,8 @@ printHelp() {
 		            The webroot directory to install the repo (Default: /var/www/jriver)
 		        --createrepo-user USER
 		            The web server user (Default: current user)
+            --createrepo-suse
+                Override OS detection and run --createrepo with SUSE RPM
 		    --version, -v
 		        Print this script version and exit
 		    --debug, -d
@@ -234,7 +238,7 @@ parseInput() {
         _install="repo"
     fi
 
-    if _input=$(getopt -o +i:vdhus:c: -l install:,build,outputdir:,mcversion:,restorefile:,betapass:,service-user:,service:,version,debug,help,uninstall,createrepo,createrepo-webroot:,createrepo-user:,vncpass:,display:,container:,tests -- "$@"); then
+    if _input=$(getopt -o +i:vdhus:c: -l install:,build,build-suse,outputdir:,mcversion:,restorefile:,betapass:,service-user:,service:,version,debug,help,uninstall,createrepo,createrepo-suse,createrepo-webroot:,createrepo-user:,vncpass:,display:,container:,tests -- "$@"); then
         eval set -- "$_input"
         while true; do
             case "$1" in
@@ -252,6 +256,10 @@ parseInput() {
                 --build)
                     _build=true
                     ;;
+                --build-suse)
+                    _build=true
+                    _build_suse=true
+                    ;;
                 --outputdir)
                     shift && _outputdir="$1"
                     ;;
@@ -274,6 +282,11 @@ parseInput() {
                     _build=true
                     _createrepo=true
                     ;;
+                --createrepo-suse)
+                    _build=true
+                    _build_suse=true
+                    _createrepo=true
+                    ;;
                 --createrepo-webroot)
                     shift && _createrepo_webroot="$1"
                     ;;
@@ -586,7 +599,7 @@ acquireDeb() {
 buildRPM() {
     debug "Running: ${FUNCNAME[0]}"
 
-    local _build_requires _requires _ec
+    local _build_requires _global_requires _custom_requires _ec
 
     declare -g _mcrpm="$_outputdir/RPMS/x86_64/MediaCenter-$_mcversion.x86_64.rpm"
 
@@ -607,10 +620,24 @@ buildRPM() {
         _build_requires=$'BuildRequires: rpm >= 4.11.0\nBuildRequires: dpkg'
     fi
 
-    # If you are building on SUSE, I assume you want SUSE RPMs
-    # i.e. cross-building not an option but could be added
-    if [[ "$ID" =~ ^opensuse.*$ ]]; then
-        read -r -d '' _requires <<- 'EOF'
+    read -r -d '' _global_requires <<- 'EOF'
+		Requires: glibc >= 2.28
+		Requires: alsa-lib >= 1.1.8
+		Requires: gtk3 >= 3.24
+		Requires: pango >= 1.42
+		Requires: python3
+		Requires: xdg-utils
+		Requires: fribidi >= 1.0.5
+		Requires: fontconfig >= 2.13
+		Requires: lcms2 >= 2.9
+		Requires: vulkan-headers >= 1.1
+		Requires: ca-certificates
+		Requires: libXScrnSaver
+	EOF
+
+    # SUSE dependency name variations
+    if [[ "$ID" =~ ^opensuse.*$ || -v _build_suse ]]; then
+        read -r -d '' _custom_requires <<- 'EOF'
 			Requires: Mesa-libVulkan-devel
 			Requires: freetype >= 1.3.1
 			Requires: libharfbuzz0 >= 2.3.1
@@ -628,9 +655,8 @@ buildRPM() {
 			Requires: mozilla-nspr >= 4.20
 			Requires: mozilla-nss >= 3.42
 		EOF
-        #_requires=$'Requires: Mesa-libVulkan-devel\nRequires: freetype >= 1.3.1\nRequires: libharfbuzz0 >= 2.3.1\nRequires: libX11-6 >= 1.6\nRequires: libX11-data >= 1.6\nRequires: libXdmcp6 >= 1.1\nRequires: libXext6 >= 1.3\nRequires: libepoxy0 >= 1.5.3\nRequires: libgomp1 >= 7.4\nRequires: libstdc++6 >= 7.4\nRequires: libuuid1 >= 2.33\nRequires: libva2 >= 2.4.0\nRequires: libxcb1 >= 1.1\nRequires: libgbm1 >= 18.3.6\nRequires: mozilla-nspr >= 4.20\nRequires: mozilla-nss >= 3.42'
     else
-        read -r -d '' _requires <<- 'EOF'
+        read -r -d '' _custom_requires <<- 'EOF'
 			Requires: mesa-vulkan-drivers
 			Requires: freetype >= 2.9.1
 			Requires: harfbuzz >= 2.3.1
@@ -648,7 +674,6 @@ buildRPM() {
 			Requires: nspr >= 4.20
 			Requires: nss >= 3.42
 		EOF
-        #_requires=$'Requires: mesa-vulkan-drivers\nRequires: freetype >= 2.9.1\nRequires: harfbuzz >= 2.3.1\nRequires: libX11 >= 1.6\nRequires: libX11-common >= 1.6\nRequires: libXdmcp >= 1.1\nRequires: libXext >= 1.3\nRequires: libepoxy >= 1.5.3\nRequires: libgomp >= 7.4\nRequires: libstdc++ >= 7.4\nRequires: libuuid >= 2.33\nRequires: libva >= 2.4.0\nRequires: libxcb >= 1.1\nRequires: mesa-libgbm >= 18.3.6\nRequires: nspr >= 4.20\nRequires: nss >= 3.42'
     fi
 
     #debug "Requires: $_requires"
@@ -666,26 +691,16 @@ buildRPM() {
 		%define _rpmfilename %%{ARCH}/%%{NAME}-%%{version}.%%{ARCH}.rpm
 
 		AutoReq:  0
-		Requires: glibc >= 2.28
-		Requires: alsa-lib >= 1.1.8
-		Requires: gtk3 >= 3.24
-		Requires: pango >= 1.42
-		Requires: python3
-		Requires: xdg-utils
-		Requires: fribidi >= 1.0.5
-		Requires: fontconfig >= 2.13
-		Requires: lcms2 >= 2.9
-		Requires: vulkan-headers >= 1.1
-		Requires: ca-certificates
-		Requires: libXScrnSaver
-		${_requires:-}
+
+		${_global_requires:-}
+        ${_custom_requires:-}
 
 		Recommends: vorbis-tools >= 1.4.0
 		Recommends: lame >= 3.0
 
 		Provides: mediacenter$_mversion
 
-		License: Copyright 1998-2021, JRiver, Inc.  All rights reserved.  Protected by U.S. patents #7076468 and #7062468
+		License: Copyright 1998-2022, JRiver, Inc.  All rights reserved.  Protected by U.S. patents #7076468 and #7062468
 		URL: http://www.jriver.com/
 
 		%define __provides_exclude_from ^%{_libdir}/jriver/.*/.*\\.so.*$