Jelajahi Sumber

fix(deps): fix RHEL family dependency lists for Rocky Linux 9 (#5077)

* fix(deps): update Java and libstdc++ 5 deps for the RHEL family

Minecraft 26.1+ needs Java 25. EL9 AppStream packages
java-25-openjdk, so mc and pmc use it on AlmaLinux, CentOS Stream, RHEL
and Rocky 9. EL7 and EL8 keep their older Java packages for pinned
older releases, and the Minecraft Java runtime check stops with
guidance when the configured version needs a newer Java.

Hytale's java-25-openjdk is not packaged on EL7 or EL8, so the hyt rows
there have no packages and check_deps warns that Java 25 must be
installed manually, as it already does on older Debian and Ubuntu.

compat-libstdc++-33.i686 is not packaged on EL8 or EL9. The cod, cod2,
coduo and mohaa fix modules already provide libstdc++.so.5 when it is
missing, so those rows have no packages there, matching rhel-9. EL7
still packages it and is unchanged.

* fix(pvr): provide libc++ on distros that do not package it

The Pavlov VR server links against libc++.so.1 and libc++abi.so.1. The
RHEL family lists asked for libcxx, which no EL8 or EL9 repo provides,
including EPEL and CRB.

When ldd reports either library missing, fix_pvr now downloads
libcxx-amd64-11.0.1-2.tar.xz (md5 pinned) and extracts it into
serverfiles/linux64, which is already on LD_LIBRARY_PATH. The tarball
holds the unmodified libraries and copyright files from Debian
bullseye's libc++1-11 and libc++abi1-11 11.0.1-2 packages. LLVM 11 is
used because it needs only glibc 2.18 and libatomic, so it also runs on
EL8. The existing libc++.so copy now falls back to the bundled library.

libcxx is replaced with libatomic in the RHEL family lists. Distros
that package libc++1 are unaffected, as ldd finds the system library.
Daniel Gibbs 1 hari lalu
induk
melakukan
e76e35b6e6

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

@@ -21,10 +21,10 @@ btl
 cc
 ck,xorg-x11-server-Xvfb
 cmw
-cod,compat-libstdc++-33.i686
-cod2,compat-libstdc++-33.i686
+cod
+cod2
 cod4
-coduo,compat-libstdc++-33.i686
+coduo
 codwaw
 col
 cs
@@ -54,7 +54,7 @@ hl2dm
 hldm
 hldms
 hw,zlib-devel
-hyt,java-25-openjdk
+hyt
 hz
 ins
 inss
@@ -72,7 +72,7 @@ mc,java-21-openjdk
 mcb,libnsl
 mcv
 mh
-mohaa,compat-libstdc++-33.i686
+mohaa
 mta,ncurses-compat-libs,libxml2
 nd
 nec
@@ -87,7 +87,7 @@ pc
 pc2
 pmc,java-21-openjdk
 pvkii
-pvr,libcxx
+pvr,libatomic
 pw
 pz,java-11-openjdk rng-tools
 q2

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

@@ -21,10 +21,10 @@ btl
 cc
 ck,xorg-x11-server-Xvfb
 cmw
-cod,compat-libstdc++-33.i686
-cod2,compat-libstdc++-33.i686
+cod
+cod2
 cod4
-coduo,compat-libstdc++-33.i686
+coduo
 codwaw
 col
 cs
@@ -68,11 +68,11 @@ kf
 kf2
 l4d
 l4d2
-mc,java-21-openjdk
+mc,java-25-openjdk
 mcb,libnsl
 mcv
 mh
-mohaa,compat-libstdc++-33.i686
+mohaa
 mta,ncurses-compat-libs,libxml2
 nd
 nec
@@ -85,9 +85,9 @@ onset,mariadb-connector-c
 opfor
 pc
 pc2
-pmc,java-21-openjdk
+pmc,java-25-openjdk
 pvkii
-pvr,libcxx
+pvr,libatomic
 pw
 pz,java-21-openjdk rng-tools
 q2

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

@@ -54,7 +54,7 @@ hl2dm
 hldm
 hldms
 hw,zlib-devel
-hyt,java-25-openjdk
+hyt
 hz
 ins
 inss
@@ -87,7 +87,7 @@ pc
 pc2
 pmc,java-11-openjdk
 pvkii
-pvr,libcxx
+pvr,libatomic
 pw
 pz,java-11-openjdk rng-tools
 q2

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

@@ -21,10 +21,10 @@ btl
 cc
 ck,xorg-x11-server-Xvfb
 cmw
-cod,compat-libstdc++-33.i686
-cod2,compat-libstdc++-33.i686
+cod
+cod2
 cod4
-coduo,compat-libstdc++-33.i686
+coduo
 codwaw
 col
 cs
@@ -54,7 +54,7 @@ hl2dm
 hldm
 hldms
 hw,zlib-devel
-hyt,java-25-openjdk
+hyt
 hz
 ins
 inss
@@ -72,7 +72,7 @@ mc,java-21-openjdk
 mcb,libnsl
 mcv
 mh
-mohaa,compat-libstdc++-33.i686
+mohaa
 mta,ncurses-compat-libs,libxml2
 nd
 nec
@@ -87,7 +87,7 @@ pc
 pc2
 pmc,java-17-openjdk
 pvkii
-pvr,libcxx
+pvr,libatomic
 pw
 pz,java-11-openjdk rng-tools
 q2

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

@@ -21,10 +21,10 @@ btl
 cc
 ck,xorg-x11-server-Xvfb
 cmw
-cod,compat-libstdc++-33.i686
-cod2,compat-libstdc++-33.i686
+cod
+cod2
 cod4
-coduo,compat-libstdc++-33.i686
+coduo
 codwaw
 col
 cs
@@ -68,11 +68,11 @@ kf
 kf2
 l4d
 l4d2
-mc,java-17-openjdk
+mc,java-25-openjdk
 mcb,libnsl
 mcv
 mh
-mohaa,compat-libstdc++-33.i686
+mohaa
 mta,ncurses-compat-libs,libxml2
 nd
 nec
@@ -85,9 +85,9 @@ onset,mariadb-connector-c
 opfor
 pc
 pc2
-pmc,java-17-openjdk
+pmc,java-25-openjdk
 pvkii
-pvr,libcxx
+pvr,libatomic
 pw
 pz,java-21-openjdk rng-tools
 q2

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

@@ -55,7 +55,7 @@ hl2dm
 hldm
 hldms
 hw,zlib-devel
-hyt,java-25-openjdk
+hyt
 hz
 ins
 inss
@@ -88,7 +88,7 @@ pc
 pc2
 pmc,java-11-openjdk
 pvkii
-pvr,libcxx
+pvr,libatomic
 pz,java-11-openjdk rng-tools
 q2
 q3

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

@@ -21,10 +21,10 @@ btl
 cc
 ck,xorg-x11-server-Xvfb
 cmw
-cod,compat-libstdc++-33.i686
-cod2,compat-libstdc++-33.i686
+cod
+cod2
 cod4
-coduo,compat-libstdc++-33.i686
+coduo
 codwaw
 col
 cs
@@ -54,7 +54,7 @@ hl2dm
 hldm
 hldms
 hw,zlib-devel
-hyt,java-25-openjdk
+hyt
 hz
 ins
 inss
@@ -72,7 +72,7 @@ mc,java-21-openjdk
 mcb,libnsl
 mcv
 mh
-mohaa,compat-libstdc++-33.i686
+mohaa
 mta,ncurses-compat-libs,libxml2
 nd
 nec
@@ -87,7 +87,7 @@ pc
 pc2
 pmc,java-21-openjdk
 pvkii
-pvr,libcxx
+pvr,libatomic
 pw
 pz,java-21-openjdk rng-tools
 q2

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

@@ -68,7 +68,7 @@ kf
 kf2
 l4d
 l4d2
-mc,java-21-openjdk
+mc,java-25-openjdk
 mcb,libnsl
 mcv
 mh
@@ -85,9 +85,9 @@ onset,mariadb-connector-c
 opfor
 pc
 pc2
-pmc,java-21-openjdk
+pmc,java-25-openjdk
 pvkii
-pvr,libcxx
+pvr,libatomic
 pw
 pz,java-21-openjdk rng-tools
 q2

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

@@ -21,10 +21,10 @@ btl
 cc
 ck,xorg-x11-server-Xvfb
 cmw
-cod,compat-libstdc++-33.i686
-cod2,compat-libstdc++-33.i686
+cod
+cod2
 cod4
-coduo,compat-libstdc++-33.i686
+coduo
 codwaw
 col
 cs
@@ -54,7 +54,7 @@ hl2dm
 hldm
 hldms
 hw,zlib-devel
-hyt,java-25-openjdk
+hyt
 hz
 ins
 inss
@@ -72,7 +72,7 @@ mc,java-21-openjdk
 mcb,libnsl
 mcv
 mh
-mohaa,compat-libstdc++-33.i686
+mohaa
 mta,ncurses-compat-libs,libxml2
 nd
 nec
@@ -87,7 +87,7 @@ pc
 pc2
 pmc,java-21-openjdk
 pvkii
-pvr,libcxx
+pvr,libatomic
 pw
 pz,java-21-openjdk rng-tools
 q2

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

@@ -21,10 +21,10 @@ btl
 cc
 ck,xorg-x11-server-Xvfb
 cmw
-cod,compat-libstdc++-33.i686
-cod2,compat-libstdc++-33.i686
+cod
+cod2
 cod4
-coduo,compat-libstdc++-33.i686
+coduo
 codwaw
 col
 cs
@@ -68,11 +68,11 @@ kf
 kf2
 l4d
 l4d2
-mc,java-21-openjdk
+mc,java-25-openjdk
 mcb,libnsl
 mcv
 mh
-mohaa,compat-libstdc++-33.i686
+mohaa
 mta,ncurses-compat-libs,libxml2
 nd
 nec
@@ -85,9 +85,9 @@ onset,mariadb-connector-c
 opfor
 pc
 pc2
-pmc,java-21-openjdk
+pmc,java-25-openjdk
 pvkii
-pvr,libcxx
+pvr,libatomic
 pw
 pz,java-21-openjdk rng-tools
 q2

+ 3 - 3
lgsm/modules/check_deps.sh

@@ -479,12 +479,12 @@ if [ "${depcheckonly}" != "1" ]; then
 		fi
 	fi
 
-	# Hytale needs Java 25, which Ubuntu before 22.04 and Debian before 13 do not package.
+	# Hytale needs Java 25, which Ubuntu before 22.04, Debian before 13 and RHEL before 9 do not package.
 	if [ "${shortname}" == "hyt" ]; then
-		if { [ "${distroid}" == "ubuntu" ] && [ "${distroversion}" != "22.04" ] && dpkg --compare-versions "${distroversion}" "lt" "24.04"; } || { [ "${distroid}" == "debian" ] && dpkg --compare-versions "${distroversion}" "lt" "13"; }; then
+		if { [ "${distroid}" == "ubuntu" ] && [ "${distroversion}" != "22.04" ] && dpkg --compare-versions "${distroversion}" "lt" "24.04"; } || { [ "${distroid}" == "debian" ] && dpkg --compare-versions "${distroversion}" "lt" "13"; } || { [ -n "${distroversionrh}" ] && [ "${distroversionrh}" -lt "9" ]; }; then
 			if ! echo "${javaversion}" | grep -Eq 'version "(2[5-9]|[3-9][0-9])'; then
 				fn_print_warning_nl "${gamename} requires Java 25, which ${distroname} does not provide."
-				echo -e "Install Java 25 manually or upgrade to Ubuntu 22.04+ or Debian 13+."
+				echo -e "Install Java 25 manually or upgrade to Ubuntu 22.04+, Debian 13+ or a RHEL 9 based distro."
 				fn_script_log_warn "${gamename} requires Java 25, which ${distroname} does not provide."
 			fi
 		fi

+ 17 - 3
lgsm/modules/fix_pvr.sh

@@ -7,8 +7,22 @@
 
 moduleselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
 
-if [ ! -f "${serverfiles}/linux64/libc++.so" ] && [ -f "/usr/lib/x86_64-linux-gnu/libc++.so.1" ]; then
-	cp "/usr/lib/x86_64-linux-gnu/libc++.so.1" "${serverfiles}/linux64/libc++.so"
+export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:${serverfiles}:${serverfiles}/linux64"
+
+if ldd "${executabledir}/PavlovServer-Linux-Shipping" 2>&1 | grep -qE "libc\+\+(abi)?\.so\.1 => not found"; then
+	# shellcheck disable=SC2034 # Used by fn_fix_msg_start_nl and fn_fix_msg_end.
+	fixname="libc++ amd64"
+	fn_fix_msg_start_nl
+	fn_fetch_file "https://linuxgsm.download/libraries/libcxx-amd64-11.0.1-2.tar.xz" "" "" "" "${tmpdir}" "libcxx-amd64-11.0.1-2.tar.xz" "nochmodx" "norun" "noforce" "2a75a54c6637d217e3821220b0d5571f"
+	fn_dl_extract "${tmpdir}" "libcxx-amd64-11.0.1-2.tar.xz" "${serverfiles}/linux64"
+	fn_clear_tmp
+	fn_fix_msg_end
 fi
 
-export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:${serverfiles}:${serverfiles}/linux64"
+if [ ! -f "${serverfiles}/linux64/libc++.so" ]; then
+	if [ -f "/usr/lib/x86_64-linux-gnu/libc++.so.1" ]; 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
+fi