Allow RPM croosbuilding

This commit is contained in:
2021-12-05 13:39:46 -05:00
parent d94081b7b4
commit 07cc841252
2 changed files with 43 additions and 23 deletions

View File

@@ -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) rpm: Build and install MC locally (RPM-based OSes only)
--build --build
Build RPM from source DEB (no installation) Build RPM from source DEB (no installation)
--build-suse
Override OS detection and build SUSE RPM
--mcversion VERSION --mcversion VERSION
Build or install a specific MC version, ex. "28.0.25" Build or install a specific MC version, ex. "28.0.25"
--outputdir PATH --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) Install systemd services and containers for user USER (Default: executing user)
--container, -c CONTAINER (TODO: Under construction) --container, -c CONTAINER (TODO: Under construction)
See CONTAINERS section below for a list of containers to deploy See CONTAINERS section below for a list of containers to deploy
--createrepo
Build rpm, copy to webroot, and run createrepo Build rpm, copy to webroot, and run createrepo
--createrepo-suse
Override OS detection and run --createrepo with SUSE RPM
--createrepo-webroot PATH --createrepo-webroot PATH
The webroot directory to install the repo (Default: /srv/jriver/) The webroot directory to install the repo (Default: /srv/jriver/)
--createrepo-user USER --createrepo-user USER

View File

@@ -44,6 +44,8 @@ printHelp() {
rpm: Build and install RPM locally (RPM-based distros only) rpm: Build and install RPM locally (RPM-based distros only)
--build --build
Build RPM from source DEB (but don't install it) Build RPM from source DEB (but don't install it)
--build-suse
Override OS detection and build SUSE RPM
--mcversion VERSION --mcversion VERSION
Specify the MC version, ex. "28.0.25" (Default: latest version) Specify the MC version, ex. "28.0.25" (Default: latest version)
--outputdir PATH --outputdir PATH
@@ -64,6 +66,8 @@ printHelp() {
The webroot directory to install the repo (Default: /var/www/jriver) The webroot directory to install the repo (Default: /var/www/jriver)
--createrepo-user USER --createrepo-user USER
The web server user (Default: current user) The web server user (Default: current user)
--createrepo-suse
Override OS detection and run --createrepo with SUSE RPM
--version, -v --version, -v
Print this script version and exit Print this script version and exit
--debug, -d --debug, -d
@@ -234,7 +238,7 @@ parseInput() {
_install="repo" _install="repo"
fi 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" eval set -- "$_input"
while true; do while true; do
case "$1" in case "$1" in
@@ -252,6 +256,10 @@ parseInput() {
--build) --build)
_build=true _build=true
;; ;;
--build-suse)
_build=true
_build_suse=true
;;
--outputdir) --outputdir)
shift && _outputdir="$1" shift && _outputdir="$1"
;; ;;
@@ -274,6 +282,11 @@ parseInput() {
_build=true _build=true
_createrepo=true _createrepo=true
;; ;;
--createrepo-suse)
_build=true
_build_suse=true
_createrepo=true
;;
--createrepo-webroot) --createrepo-webroot)
shift && _createrepo_webroot="$1" shift && _createrepo_webroot="$1"
;; ;;
@@ -586,7 +599,7 @@ acquireDeb() {
buildRPM() { buildRPM() {
debug "Running: ${FUNCNAME[0]}" 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" 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' _build_requires=$'BuildRequires: rpm >= 4.11.0\nBuildRequires: dpkg'
fi fi
# If you are building on SUSE, I assume you want SUSE RPMs read -r -d '' _global_requires <<- 'EOF'
# i.e. cross-building not an option but could be added Requires: glibc >= 2.28
if [[ "$ID" =~ ^opensuse.*$ ]]; then Requires: alsa-lib >= 1.1.8
read -r -d '' _requires <<- 'EOF' 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: Mesa-libVulkan-devel
Requires: freetype >= 1.3.1 Requires: freetype >= 1.3.1
Requires: libharfbuzz0 >= 2.3.1 Requires: libharfbuzz0 >= 2.3.1
@@ -628,9 +655,8 @@ buildRPM() {
Requires: mozilla-nspr >= 4.20 Requires: mozilla-nspr >= 4.20
Requires: mozilla-nss >= 3.42 Requires: mozilla-nss >= 3.42
EOF 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 else
read -r -d '' _requires <<- 'EOF' read -r -d '' _custom_requires <<- 'EOF'
Requires: mesa-vulkan-drivers Requires: mesa-vulkan-drivers
Requires: freetype >= 2.9.1 Requires: freetype >= 2.9.1
Requires: harfbuzz >= 2.3.1 Requires: harfbuzz >= 2.3.1
@@ -648,7 +674,6 @@ buildRPM() {
Requires: nspr >= 4.20 Requires: nspr >= 4.20
Requires: nss >= 3.42 Requires: nss >= 3.42
EOF 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 fi
#debug "Requires: $_requires" #debug "Requires: $_requires"
@@ -666,26 +691,16 @@ buildRPM() {
%define _rpmfilename %%{ARCH}/%%{NAME}-%%{version}.%%{ARCH}.rpm %define _rpmfilename %%{ARCH}/%%{NAME}-%%{version}.%%{ARCH}.rpm
AutoReq: 0 AutoReq: 0
Requires: glibc >= 2.28
Requires: alsa-lib >= 1.1.8 ${_global_requires:-}
Requires: gtk3 >= 3.24 ${_custom_requires:-}
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:-}
Recommends: vorbis-tools >= 1.4.0 Recommends: vorbis-tools >= 1.4.0
Recommends: lame >= 3.0 Recommends: lame >= 3.0
Provides: mediacenter$_mversion 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/ URL: http://www.jriver.com/
%define __provides_exclude_from ^%{_libdir}/jriver/.*/.*\\.so.*$ %define __provides_exclude_from ^%{_libdir}/jriver/.*/.*\\.so.*$