Parcourir la source

fix(jc2,pvr,rwr,zps): fix start failures from library errors (#5164)

- jc2: new fix_jc2.sh sets glibc.rtld.execstack=2 so glibc 2.41+ can load the bundled steamclient.so.
- pvr: fix_pvr.sh refreshes linux64/libc++.so when it differs from the system libc++.so.1, dropping the stale libunwind.so.1 dependency.
- rwr: add 32-bit libidn2 for the bundled libcurl.so.4.
- zps: new fix_zps.sh links the system 32-bit libcurl.so.4 as bin/libcurl.so, and 32-bit libcurl is added to the dependencies.

Fixes #5163
Daniel Gibbs il y a 1 jour
Parent
commit
b0236b7978

+ 2 - 2
lgsm/data/almalinux-8.csv

@@ -108,7 +108,7 @@ rsdw
 rtcw
 rust,zlib-devel
 rw,java-11-openjdk
-rwr,libgpg-error.i686,libX11.i686,libXext.i686,zlib.i686
+rwr,libgpg-error.i686,libX11.i686,libXext.i686,zlib.i686,libidn2.i686
 samp
 sb
 sbots
@@ -149,4 +149,4 @@ wmc,java-21-openjdk
 wurm,xorg-x11-server-Xvfb
 xnt
 zmr,ncurses-libs.i686
-zps,ncurses-libs.i686
+zps,ncurses-libs.i686,libcurl.i686

+ 2 - 2
lgsm/data/almalinux-9.csv

@@ -108,7 +108,7 @@ rsdw
 rtcw
 rust,zlib-devel
 rw,java-21-openjdk
-rwr,libgpg-error.i686,libX11.i686,libXext.i686,zlib.i686
+rwr,libgpg-error.i686,libX11.i686,libXext.i686,zlib.i686,libidn2.i686
 samp
 sb
 sbots
@@ -149,4 +149,4 @@ wmc,java-21-openjdk
 wurm,xorg-x11-server-Xvfb
 xnt
 zmr,ncurses-libs.i686
-zps,ncurses-libs.i686
+zps,ncurses-libs.i686,libcurl.i686

+ 1 - 1
lgsm/data/centos-7.csv

@@ -149,4 +149,4 @@ wmc,java-11-openjdk
 wurm,xorg-x11-server-Xvfb
 xnt
 zmr,ncurses-libs.i686
-zps,ncurses-libs.i686
+zps,ncurses-libs.i686,libcurl.i686

+ 2 - 2
lgsm/data/centos-8.csv

@@ -108,7 +108,7 @@ rsdw
 rtcw
 rust,zlib-devel
 rw,java-11-openjdk
-rwr,libgpg-error.i686,libX11.i686,libXext.i686,zlib.i686
+rwr,libgpg-error.i686,libX11.i686,libXext.i686,zlib.i686,libidn2.i686
 samp
 sb
 sbots
@@ -149,4 +149,4 @@ wmc,java-17-openjdk
 wurm,xorg-x11-server-Xvfb
 xnt
 zmr,ncurses-libs.i686
-zps,ncurses-libs.i686
+zps,ncurses-libs.i686,libcurl.i686

+ 2 - 2
lgsm/data/centos-9.csv

@@ -108,7 +108,7 @@ rsdw
 rtcw
 rust,zlib-devel
 rw,java-21-openjdk
-rwr,libgpg-error.i686,libX11.i686,libXext.i686,zlib.i686
+rwr,libgpg-error.i686,libX11.i686,libXext.i686,zlib.i686,libidn2.i686
 samp
 sb
 sbots
@@ -149,4 +149,4 @@ wmc,java-17-openjdk
 wurm,xorg-x11-server-Xvfb
 xnt
 zmr,ncurses-libs.i686
-zps,ncurses-libs.i686
+zps,ncurses-libs.i686,libcurl.i686

+ 2 - 2
lgsm/data/debian-10.csv

@@ -108,7 +108,7 @@ rsdw
 rtcw
 rust,lib32z1
 rw,openjdk-11-jre
-rwr,libgpg-error0:i386,libx11-6:i386,libxext6:i386,zlib1g:i386
+rwr,libgpg-error0:i386,libx11-6:i386,libxext6:i386,zlib1g:i386,libidn2-0:i386
 samp
 sb
 sbots
@@ -149,4 +149,4 @@ wmc,openjdk-11-jre
 wurm,xvfb
 xnt
 zmr,libtinfo5:i386
-zps,libtinfo5:i386
+zps,libtinfo5:i386,libcurl4:i386

+ 2 - 2
lgsm/data/debian-11.csv

@@ -109,7 +109,7 @@ rsdw
 rtcw
 rust,lib32z1
 rw,openjdk-17-jre
-rwr,libgpg-error0:i386,libx11-6:i386,libxext6:i386,zlib1g:i386
+rwr,libgpg-error0:i386,libx11-6:i386,libxext6:i386,zlib1g:i386,libidn2-0:i386
 samp
 sb
 sbots
@@ -149,4 +149,4 @@ wmc,openjdk-17-jre
 wurm,xvfb
 xnt
 zmr,libtinfo5:i386
-zps,libtinfo5:i386
+zps,libtinfo5:i386,libcurl4:i386

+ 2 - 2
lgsm/data/debian-12.csv

@@ -109,7 +109,7 @@ rsdw
 rtcw
 rust,lib32z1
 rw,openjdk-17-jre
-rwr,libgpg-error0:i386,libx11-6:i386,libxext6:i386,zlib1g:i386
+rwr,libgpg-error0:i386,libx11-6:i386,libxext6:i386,zlib1g:i386,libidn2-0:i386
 samp
 sb
 sbots
@@ -149,4 +149,4 @@ wmc,openjdk-17-jre
 wurm,xvfb
 xnt
 zmr,libtinfo5:i386
-zps,libtinfo5:i386
+zps,libtinfo5:i386,libcurl4:i386

+ 2 - 2
lgsm/data/debian-13.csv

@@ -109,7 +109,7 @@ rsdw
 rtcw
 rust,lib32z1
 rw,openjdk-25-jre
-rwr,libgpg-error0:i386,libx11-6:i386,libxext6:i386,zlib1g:i386
+rwr,libgpg-error0:i386,libx11-6:i386,libxext6:i386,zlib1g:i386,libidn2-0:i386
 samp
 sb
 sbots
@@ -149,4 +149,4 @@ wmc,openjdk-25-jre
 wurm,xvfb
 xnt
 zmr
-zps
+zps,libcurl4t64:i386

+ 2 - 2
lgsm/data/debian-9.csv

@@ -109,7 +109,7 @@ rsdw
 rtcw
 rust,lib32z1
 rw,openjdk-8-jre
-rwr,libgpg-error0:i386,libx11-6:i386,libxext6:i386,zlib1g:i386
+rwr,libgpg-error0:i386,libx11-6:i386,libxext6:i386,zlib1g:i386,libidn2-0:i386
 samp
 sb
 sbots
@@ -149,4 +149,4 @@ wmc,openjdk-8-jre
 wurm,xvfb
 xnt
 zmr,libtinfo5:i386
-zps,libtinfo5:i386
+zps,libtinfo5:i386,libcurl4:i386

+ 1 - 1
lgsm/data/rhel-7.csv

@@ -149,4 +149,4 @@ wmc,java-11-openjdk
 wurm,xorg-x11-server-Xvfb
 xnt
 zmr,ncurses-libs.i686
-zps,ncurses-libs.i686
+zps,ncurses-libs.i686,libcurl.i686

+ 2 - 2
lgsm/data/rhel-8.csv

@@ -108,7 +108,7 @@ rsdw
 rtcw
 rust,zlib-devel
 rw,java-21-openjdk
-rwr,libgpg-error.i686,libX11.i686,libXext.i686,zlib.i686
+rwr,libgpg-error.i686,libX11.i686,libXext.i686,zlib.i686,libidn2.i686
 samp
 sb
 sbots
@@ -149,4 +149,4 @@ wmc,java-21-openjdk
 wurm,xorg-x11-server-Xvfb
 xnt
 zmr,ncurses-libs.i686
-zps,ncurses-libs.i686
+zps,ncurses-libs.i686,libcurl.i686

+ 2 - 2
lgsm/data/rhel-9.csv

@@ -108,7 +108,7 @@ rsdw
 rtcw
 rust,zlib-devel
 rw,java-21-openjdk
-rwr,libgpg-error.i686,libX11.i686,libXext.i686,zlib.i686
+rwr,libgpg-error.i686,libX11.i686,libXext.i686,zlib.i686,libidn2.i686
 samp
 sb
 sbots
@@ -149,4 +149,4 @@ wmc,java-21-openjdk
 wurm,xorg-x11-server-Xvfb
 xnt
 zmr,ncurses-libs.i686
-zps,ncurses-libs.i686
+zps,ncurses-libs.i686,libcurl.i686

+ 2 - 2
lgsm/data/rocky-8.csv

@@ -108,7 +108,7 @@ rsdw
 rtcw
 rust,zlib-devel
 rw,java-21-openjdk
-rwr,libgpg-error.i686,libX11.i686,libXext.i686,zlib.i686
+rwr,libgpg-error.i686,libX11.i686,libXext.i686,zlib.i686,libidn2.i686
 samp
 sb
 sbots
@@ -149,4 +149,4 @@ wmc,java-21-openjdk
 wurm,xorg-x11-server-Xvfb
 xnt
 zmr,ncurses-libs.i686
-zps,ncurses-libs.i686
+zps,ncurses-libs.i686,libcurl.i686

+ 2 - 2
lgsm/data/rocky-9.csv

@@ -108,7 +108,7 @@ rsdw
 rtcw
 rust,zlib-devel
 rw,java-21-openjdk
-rwr,libgpg-error.i686,libX11.i686,libXext.i686,zlib.i686
+rwr,libgpg-error.i686,libX11.i686,libXext.i686,zlib.i686,libidn2.i686
 samp
 sb
 sbots
@@ -149,4 +149,4 @@ wmc,java-21-openjdk
 wurm,xorg-x11-server-Xvfb
 xnt
 zmr,ncurses-libs.i686
-zps,ncurses-libs.i686
+zps,ncurses-libs.i686,libcurl.i686

+ 2 - 2
lgsm/data/ubuntu-16.04.csv

@@ -109,7 +109,7 @@ rsdw
 rtcw
 rust,lib32z1
 rw,openjdk-8-jre
-rwr,libgpg-error0:i386,libx11-6:i386,libxext6:i386,zlib1g:i386
+rwr,libgpg-error0:i386,libx11-6:i386,libxext6:i386,zlib1g:i386,libidn2-0:i386
 samp
 sb
 sbots
@@ -149,4 +149,4 @@ wmc,openjdk-8-jre
 wurm,xvfb
 xnt
 zmr,libtinfo5:i386
-zps,libtinfo5:i386
+zps,libtinfo5:i386,libcurl4:i386

+ 2 - 2
lgsm/data/ubuntu-18.04.csv

@@ -109,7 +109,7 @@ rsdw
 rtcw
 rust,lib32z1
 rw,openjdk-11-jre
-rwr,libgpg-error0:i386,libx11-6:i386,libxext6:i386,zlib1g:i386
+rwr,libgpg-error0:i386,libx11-6:i386,libxext6:i386,zlib1g:i386,libidn2-0:i386
 samp
 sb
 sbots
@@ -149,4 +149,4 @@ wmc,openjdk-11-jre
 wurm,xvfb
 xnt
 zmr,libtinfo5:i386
-zps,libtinfo5:i386
+zps,libtinfo5:i386,libcurl4:i386

+ 2 - 2
lgsm/data/ubuntu-20.04.csv

@@ -109,7 +109,7 @@ rsdw
 rtcw
 rust,lib32z1
 rw,openjdk-21-jre
-rwr,libgpg-error0:i386,libx11-6:i386,libxext6:i386,zlib1g:i386
+rwr,libgpg-error0:i386,libx11-6:i386,libxext6:i386,zlib1g:i386,libidn2-0:i386
 samp
 sb
 sbots
@@ -149,4 +149,4 @@ wmc,openjdk-21-jre
 wurm,xvfb
 xnt
 zmr,libtinfo5:i386
-zps,libtinfo5:i386
+zps,libtinfo5:i386,libcurl4:i386

+ 2 - 2
lgsm/data/ubuntu-22.04.csv

@@ -109,7 +109,7 @@ rsdw
 rtcw
 rust,lib32z1
 rw,openjdk-21-jre
-rwr,libgpg-error0:i386,libx11-6:i386,libxext6:i386,zlib1g:i386
+rwr,libgpg-error0:i386,libx11-6:i386,libxext6:i386,zlib1g:i386,libidn2-0:i386
 samp
 sb
 sbots
@@ -149,4 +149,4 @@ wmc,openjdk-21-jre
 wurm,xvfb
 xnt
 zmr,libtinfo5:i386
-zps,libtinfo5:i386
+zps,libtinfo5:i386,libcurl4:i386

+ 2 - 2
lgsm/data/ubuntu-23.04.csv

@@ -109,7 +109,7 @@ rsdw
 rtcw
 rust,lib32z1
 rw,openjdk-21-jre
-rwr,libgpg-error0:i386,libx11-6:i386,libxext6:i386,zlib1g:i386
+rwr,libgpg-error0:i386,libx11-6:i386,libxext6:i386,zlib1g:i386,libidn2-0:i386
 samp
 sb
 sbots
@@ -149,4 +149,4 @@ wmc,openjdk-21-jre
 wurm,xvfb
 xnt
 zmr,libtinfo5:i386
-zps,libtinfo5:i386
+zps,libtinfo5:i386,libcurl4:i386

+ 2 - 2
lgsm/data/ubuntu-23.10.csv

@@ -109,7 +109,7 @@ rsdw
 rtcw
 rust,lib32z1
 rw,openjdk-21-jre
-rwr,libgpg-error0:i386,libx11-6:i386,libxext6:i386,zlib1g:i386
+rwr,libgpg-error0:i386,libx11-6:i386,libxext6:i386,zlib1g:i386,libidn2-0:i386
 samp
 sb
 sbots
@@ -149,4 +149,4 @@ wmc,openjdk-21-jre
 wurm,xvfb
 xnt
 zmr,libtinfo5:i386
-zps,libtinfo5:i386
+zps,libtinfo5:i386,libcurl4:i386

+ 2 - 2
lgsm/data/ubuntu-24.04.csv

@@ -108,7 +108,7 @@ rsdw
 rtcw
 rust,lib32z1
 rw,openjdk-25-jre
-rwr,libgpg-error0:i386,libx11-6:i386,libxext6:i386,zlib1g:i386
+rwr,libgpg-error0:i386,libx11-6:i386,libxext6:i386,zlib1g:i386,libidn2-0:i386
 samp
 sb
 sbots
@@ -149,4 +149,4 @@ wmc,openjdk-25-jre
 wurm,xvfb
 xnt
 zmr
-zps
+zps,libcurl4t64:i386

+ 2 - 2
lgsm/data/ubuntu-26.04.csv

@@ -108,7 +108,7 @@ rsdw
 rtcw
 rust,lib32z1
 rw,openjdk-25-jre
-rwr,libgpg-error0:i386,libx11-6:i386,libxext6:i386,zlib1g:i386
+rwr,libgpg-error0:i386,libx11-6:i386,libxext6:i386,zlib1g:i386,libidn2-0:i386
 samp
 sb
 sbots
@@ -149,4 +149,4 @@ wmc,openjdk-25-jre
 wurm,xvfb
 xnt
 zmr
-zps
+zps,libcurl4t64:i386

+ 10 - 0
lgsm/modules/core_modules.sh

@@ -478,6 +478,11 @@ fix_ios.sh() {
 	fn_fetch_module
 }
 
+fix_jc2.sh() {
+	modulefile="${FUNCNAME[0]}"
+	fn_fetch_module
+}
+
 fix_kf.sh() {
 	modulefile="${FUNCNAME[0]}"
 	fn_fetch_module
@@ -648,6 +653,11 @@ fix_zmr.sh() {
 	fn_fetch_module
 }
 
+fix_zps.sh() {
+	modulefile="${FUNCNAME[0]}"
+	fn_fetch_module
+}
+
 # Info
 
 info_distro.sh() {

+ 1 - 1
lgsm/modules/fix.sh

@@ -53,7 +53,7 @@ fn_apply_fix() {
 	fi
 }
 
-apply_pre_start_fix=(ahl arma3 armar ark av bf1942 bfv bt bo csgo cmw cod cod2 coduo codwaw cswon ct dst hlwon hw ins ios kf nd nmrih onset pvr ro rust rw samp sdtd sfc sm sof2 squad st tf2 terraria ts ts3 mcb mohaa mta unt ut ut99 vh vs wurm xnt zmr)
+apply_pre_start_fix=(ahl arma3 armar ark av bf1942 bfv bt bo csgo cmw cod cod2 coduo codwaw cswon ct dst hlwon hw ins ios jc2 kf nd nmrih onset pvr ro rust rw samp sdtd sfc sm sof2 squad st tf2 terraria ts ts3 mcb mohaa mta unt ut ut99 vh vs wurm xnt zmr zps)
 apply_post_install_fix=(av kf kf2 nd ro ut2k4 ut3)
 
 # validate registered fixes for safe development

+ 11 - 0
lgsm/modules/fix_jc2.sh

@@ -0,0 +1,11 @@
+#!/bin/bash
+# LinuxGSM fix_jc2.sh module
+# Author: Daniel Gibbs
+# Contributors: https://linuxgsm.com/contrib
+# Website: https://linuxgsm.com
+# Description: Resolves issues with Just Cause 2.
+
+# shellcheck disable=SC2034 # Used by the module loader.
+moduleselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
+
+export GLIBC_TUNABLES="${GLIBC_TUNABLES:+${GLIBC_TUNABLES}:}glibc.rtld.execstack=2"

+ 4 - 4
lgsm/modules/fix_pvr.sh

@@ -19,10 +19,10 @@ if ldd "${executabledir}/PavlovServer-Linux-Shipping" 2>&1 | grep -qE "libc\+\+(
 	fn_fix_msg_end
 fi
 
-if [ ! -f "${serverfiles}/linux64/libc++.so" ]; then
-	if [ -f "/usr/lib/x86_64-linux-gnu/libc++.so.1" ]; then
+if [ -f "/usr/lib/x86_64-linux-gnu/libc++.so.1" ]; then
+	if ! cmp -s "/usr/lib/x86_64-linux-gnu/libc++.so.1" "${serverfiles}/linux64/libc++.so"; then
 		cp "/usr/lib/x86_64-linux-gnu/libc++.so.1" "${serverfiles}/linux64/libc++.so"
-	elif [ -f "${serverfiles}/linux64/libc++.so.1" ]; then
-		cp -L "${serverfiles}/linux64/libc++.so.1" "${serverfiles}/linux64/libc++.so"
 	fi
+elif [ ! -f "${serverfiles}/linux64/libc++.so" ] && [ -f "${serverfiles}/linux64/libc++.so.1" ]; then
+	cp -L "${serverfiles}/linux64/libc++.so.1" "${serverfiles}/linux64/libc++.so"
 fi

+ 22 - 0
lgsm/modules/fix_zps.sh

@@ -0,0 +1,22 @@
+#!/bin/bash
+# LinuxGSM fix_zps.sh module
+# Author: Daniel Gibbs
+# Contributors: https://linuxgsm.com/contrib
+# Website: https://linuxgsm.com
+# Description: Resolves issues with Zombie Panic! Source.
+
+# shellcheck disable=SC2034 # Used by the module loader.
+moduleselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
+
+for libcurl in /usr/lib/i386-linux-gnu/libcurl.so.4 /usr/lib32/libcurl.so.4 /usr/lib/libcurl.so.4; do
+	if [ -f "${libcurl}" ]; then
+		if [ "$(readlink "${serverfiles}/bin/libcurl.so")" != "${libcurl}" ]; then
+			# shellcheck disable=SC2034 # Used by fn_fix_msg_start_nl and fn_fix_msg_end.
+			fixname="libcurl.so x86"
+			fn_fix_msg_start_nl
+			ln -sf "${libcurl}" "${serverfiles}/bin/libcurl.so"
+			fn_fix_msg_end
+		fi
+		break
+	fi
+done