scripts: flatpak: add more guardrails just in case if 32-bit runtime missing

This commit is contained in:
Alibek Omarov
2025-09-21 00:17:12 +05:00
parent 96557c2ca6
commit 04dee4e94d

View File

@@ -1,21 +1,43 @@
#!/bin/sh #!/bin/bash
die() die()
{ {
echo "$@" echo "$@"
if command -v zenity > /dev/null; then
zenity --error --text="$*"
fi
exit 1 exit 1
} }
if [[ -z "$FLATPAK_ID" ]]; then
die "This script is only for Flatpak."
fi
if [[ "$FLATPAK_ID" == *.Compat.i386 ]]; then
if [[ ! -e /lib/i386-linux-gnu/ld-linux.so.2 ]]; then
source /etc/os-release
die "Can't find 32-bit runtime extension. Try running 'flatpak install org.freedesktop.Platform.Compat.i386//$VERSION_ID'."
fi
if [[ ! -e /lib/i386-linux-gnu/libGL.so.1 ]]; then
die "Can't find 32-bit OpenGL runtime extension. Try running 'flatpak install org.freedesktop.Platform.GL32.default'"
fi
fi
echo "Xash3D FWGS installed as Flatpak." echo "Xash3D FWGS installed as Flatpak."
# https://specifications.freedesktop.org/basedir-spec/basedir-spec-latest.html # https://specifications.freedesktop.org/basedir-spec/basedir-spec-latest.html
# $XDG_DATA_HOME defines the base directory relative to which user-specific data files should be stored. # $XDG_DATA_HOME defines the base directory relative to which user-specific data files should be stored.
# If $XDG_DATA_HOME is either not set or empty, a default equal to $HOME/.local/share should be used. # If $XDG_DATA_HOME is either not set or empty, a default equal to $HOME/.local/share should be used.
if [ -z "$XDG_DATA_HOME" ]; then if [[ -z "$XDG_DATA_HOME" ]]; then
export XDG_DATA_HOME="$HOME/.local/share" export XDG_DATA_HOME="$HOME/.local/share"
fi fi
if [ -z "$XASH3D_BASEDIR" ]; then if [[ -z "$XASH3D_BASEDIR" ]]; then
export XASH3D_BASEDIR="$XDG_DATA_HOME/xash3d-fwgs/" export XASH3D_BASEDIR="$XDG_DATA_HOME/xash3d-fwgs/"
fi fi
@@ -23,22 +45,22 @@ mkdir -p "$XASH3D_BASEDIR"
cd "$XASH3D_BASEDIR" || die "Can't cd into $XASH3D_BASEDIR" cd "$XASH3D_BASEDIR" || die "Can't cd into $XASH3D_BASEDIR"
echo "XASH3D_BASEDIR is $XASH3D_BASEDIR" echo "XASH3D_BASEDIR is $XASH3D_BASEDIR"
if [ -z "$XASH3D_RODIR" ]; then if [[ -z "$XASH3D_RODIR" ]]; then
# TODO: detect by libraryfolders.vdf and installed apps # TODO: detect by libraryfolders.vdf and installed apps
STEAMDIRS="\ STEAMDIRS=" \
$HOME/.local/share/Steam/steamapps/common \ $XDG_DATA_HOME/Steam/steamapps/common \
$HOME/.var/app/com.valvesoftware.Steam/.local/share/Steam/steamapps/common \ $HOME/.var/app/com.valvesoftware.Steam/.local/share/Steam/steamapps/common \
$HOME/.steam/steam/steamapps/common" $HOME/.steam/steam/steamapps/common"
HALFLIFEDIR="Half-Life" HALFLIFEDIR="Half-Life"
for i in $STEAMDIRS; do for i in $STEAMDIRS; do
if [ ! -d "$i" ]; then if [[ ! -d "$i" ]]; then
continue continue
fi fi
echo "Detected Steam library in $i, probing Half-Life..." echo "Detected Steam library in $i, probing Half-Life..."
if [ ! -d "$i/$HALFLIFEDIR" ]; then if [[ ! -d "$i/$HALFLIFEDIR" ]]; then
continue continue
fi fi
@@ -50,7 +72,7 @@ if [ -z "$XASH3D_RODIR" ]; then
fi fi
echo "XASH3D_RODIR is $XASH3D_RODIR" echo "XASH3D_RODIR is $XASH3D_RODIR"
if [ -z "$XASH3D_EXTRAS_PAK1" ]; then if [[ -z "$XASH3D_EXTRAS_PAK1" ]]; then
export XASH3D_EXTRAS_PAK1=/app/share/xash3d/valve/extras.pk3 export XASH3D_EXTRAS_PAK1=/app/share/xash3d/valve/extras.pk3
fi fi
echo "XASH3D_EXTRAS_PAK1 is $XASH3D_EXTRAS_PAK1" echo "XASH3D_EXTRAS_PAK1 is $XASH3D_EXTRAS_PAK1"