Add rpmfusion and mesa-freeworld on RHEL

This commit is contained in:
2022-12-20 11:38:32 -05:00
parent b3148f822f
commit 37a1ac35ac

View File

@@ -16,12 +16,12 @@
shopt -s extglob
declare -g SCRIPTVERSION="1.0-rc1"
declare -g SCRIPTVERSION="1.0-rc2"
declare -g OUTPUTDIR="$PWD/output"
declare -g BOARDURL="https://yabb.jriver.com/interact/index.php/board,76.0.html" # MC30 (Buster)
declare -g DEBIANBASE="buster"
declare -g MCVERSION_HARDCODE="30.0.17" # Hardcoded fallback
declare -g MCVERSION_HARDCODE="30.0.40" # Hardcoded fallback
declare -g CREATEREPO_WEBROOT="/var/www/jriver"
declare -g USER="${SUDO_USER:-$USER}"
@@ -402,9 +402,10 @@ installPackage() {
debug "Running: ${FUNCNAME[0]}" "$@"
declare -a pkg_array install_flags
declare pkg skip_check_installed silent _return pkg_install_cmd
declare pkg skip_check_installed silent pkg_install_cmd refresh allow_downgrades no_gpg_check
declare -A pkg_aliases
if _input=$(getopt -o +s -l skip-check-installed,allow-downgrades,nogpgcheck,refresh,silent -- "$@"); then
if _input=$(getopt -o +s -l skip-check-installed,allow-downgrades,nogpgcheck,repo,refresh,silent -- "$@"); then
eval set -- "$_input"
while true; do
case "$1" in
@@ -412,23 +413,13 @@ installPackage() {
skip_check_installed=1
;;
--allow-downgrades)
if [[ "$ID" =~ ^(debian|ubuntu)$ ]]; then
install_flags+=(--allow-downgrades)
elif [[ "$ID" =~ ^(fedora|centos)$ ]]; then
install_flags+=(--allowerasing)
fi
allow_downgrades=1
;;
--nogpgcheck)
if [[ "$ID" =~ ^(fedora|centos)$ ]]; then
install_flags+=(--nogpgcheck)
elif [[ "$ID" == "suse" ]]; then
install_flags+=(--allow-unsigned-rpm)
fi
no_gpg_check=1
;;
--refresh)
if [[ "$ID" =~ ^(fedora|centos)$ ]]; then
install_flags+=(--refresh)
fi
refresh=1
;;
--silent|-s)
silent=1
@@ -446,25 +437,44 @@ installPackage() {
fi
# Aliases
if [[ "$ID" =~ ^(debian|ubuntu)$ ]]; then
declare -A PKG_ALIASES
PKG_ALIASES["xorg-x11-utils"]="xorg-x11"
PKG_ALIASES["rpm-build"]="rpm"
PKG_ALIASES["createrepo_c"]="createrepo"
PKG_ALIASES["tigervnc-server"]="tigervnc-standalone-server"
fi
case "$ID" in
debian|ubuntu)
pkg_aliases["rpm-build"]="rpm"
pkg_aliases["createrepo_c"]="createrepo"
pkg_aliases["tigervnc-server"]="tigervnc-standalone-server"
;;
fedora|centos)
;;
esac
# Filter installed packages
if ! (( skip_check_installed )); then
for pkg in "$@"; do
if [[ ! -v skip_check_installed && -v PKG_ALIASES[$pkg] ]]; then
pkg=${PKG_ALIASES[$pkg]}
if [[ ! -v skip_check_installed && -v pkg_aliases[$pkg] ]]; then
pkg=${pkg_aliases[$pkg]}
fi
# Check if already installed
if (( skip_check_installed )) || ! (hash "$pkg" &>/dev/null || pkg_query "$pkg" &>/dev/null); then
if ! (hash "$pkg" &>/dev/null || pkg_query "$pkg" &>/dev/null); then
pkg_array+=("$pkg")
else
debug "$pkg already installed, skipping installation"
fi
done
fi
# Generate distro-specific install flags
case "$ID" in
debian|ubuntu)
(( allow_downgrades )) && install_flags+=(--allow-downgrades)
;;
fedora|centos)
(( allow_downgrades )) && install_flags+=(--allowerasing)
(( no_gpg_check )) && install_flags+=(--nogpgcheck)
(( refresh )) && install_flags+=(--refresh)
;;
suse)
(( no_gpg_check )) && install_flags+=(--allow-unsigned-rpm)
esac
# Install packages from package array
if [[ ${#pkg_array[@]} -ge 1 ]]; then
@@ -514,8 +524,6 @@ installMCFromRepo() {
;;
esac
installMesa
declare pkg_update_cmd="pkg_update"
debug "$pkg_update_cmd" || pkg_update_cmd+=" &>/dev/null"
if ! eval "$pkg_update_cmd"; then
@@ -641,6 +649,7 @@ buildRPM() {
requires=("${requires[@]/libvulkan1/vulkan-loader}")
requires=("${requires[@]/libepoxy0/libepoxy}")
requires=("${requires[@]/python/python3}")
recommends+=(mesa-va-drivers-freeworld)
;;
suse)
requires=("${requires[@]/libc6/glibc}")
@@ -775,38 +784,12 @@ installMCDEB() {
}
#######################################
# Installs mesa-va-drivers-freeworld
#######################################
installMesa() {
debug "Running: ${FUNCNAME[0]}"
declare url_pkg
case "$ID" in
fedora)
url_pkg="https://download1.rpmfusion.org/free/fedora/rpmfusion-free-release-$VERSION_ID.noarch.rpm"
;;
centos)
url_pkg="https://download1.rpmfusion.org/free/el/rpmfusion-free-release-$VERSION_ID.noarch.rpm"
;;
*)
return
;;
esac
installPackage "$url_pkg"
installPackage --refresh mesa-va-drivers-freeworld
}
#######################################
# Installs local Media Center RPM package
#######################################
installMCRPM() {
debug "Running: ${FUNCNAME[0]}"
installMesa
installPackage --skip-check-installed --nogpgcheck --allow-downgrades "$MCRPM"
}
@@ -1082,7 +1065,7 @@ setServiceVars() {
systemctl_enable_cmd(){ systemctl --user enable --now "$@"; }
systemctl_disable_cmd(){ systemctl --user disable --now "$@"; }
systemctl_is_enabled_cmd(){ systemctl --user is-enabled -q "$@"; }
systemctl_is_active(){ sudo systemctl is-active -q "$@"; }
systemctl_is_active_cmd(){ systemctl --user is-active -q "$@"; }
GRAPHICAL_TARGET="default.target"
fi
@@ -1212,15 +1195,6 @@ service_jriver-x11vnc() {
setVNCPass x11vnc
# Get current desktop resolution
# TODO: may need to break this out into its own function and get smarter at identifying multi-monitors
# _getResolution() {
# debug "Running: ${FUNCNAME[0]}"
# installPackage xorg-x11-utils
# _res=$(xdpyinfo | grep dimensions | awk '{print $2}')
# }
# _getResolution
# If .Xauthority file is missing, generate a dummy for x11vnc -auth guess
if [[ ! -f "$HOME/.Xauthority" ]]; then
[[ "$XDG_SESSION_TYPE" == "wayland" ]] && ask_ok "Unsupported Wayland session detected for x11vnc, continue?" || return 1
@@ -1578,7 +1552,7 @@ uninstall() {
tests() {
# To test on Mint/16.04: sudo apt install -y spice-vdagent ca-certificates git; export GIT_SSL_NO_VERIFY=1
exit
: # TODO
}
@@ -1623,9 +1597,17 @@ main() {
echo "Adding EPEL repository"
installPackage epel-release
fi
if ! pkg_query rpmfusion-free-release; then
installPackage --skip-check-installed \
"https://download1.rpmfusion.org/free/el/rpmfusion-free-release-$VERSION_ID.noarch.rpm"
fi
;;
fedora)
if ! pkg_query rpmfusion-free-release; then
installPackage --skip-check-installed \
"https://download1.rpmfusion.org/free/fedora/rpmfusion-free-release-$VERSION_ID.noarch.rpm"
fi
;;
esac
if (( REPO_INSTALL_SWITCH )); then