Przeglądaj źródła

feat(tf2): use 64-bit server by default (#5059)

Team Fortress 2 has shipped a 64-bit Linux server since April 2024 and SteamCMD already installs srcds_run_64. Start it by default and raise glibc to 2.29, which both the 32-bit and 64-bit binaries require.

Add -norestart to startparameters: on 64-bit, quit aborts during Steam shutdown and srcds_run_64 restarted the server, so graceful stop never completed.

Keep servers with SourceMod on 32-bit unless executable is set in the user's configs, because DHooks and many third-party extensions have no Linux x64 build yet.

Fixes #4841
Daniel Gibbs 2 dni temu
rodzic
commit
cd9db5a5af

+ 3 - 3
lgsm/config-default/config-lgsm/tf2server/_default.cfg

@@ -24,7 +24,7 @@ maxplayers="16"
 gslt=""
 
 ## Server Parameters | https://docs.linuxgsm.com/configuration/start-parameters#additional-parameters
-startparameters="-game tf -strictportbind -ip ${ip} -port ${port} +clientport ${clientport} +tv_port ${sourcetvport} +map ${defaultmap} +sv_setsteamaccount ${gslt} +servercfgfile ${servercfg} -maxplayers ${maxplayers}"
+startparameters="-game tf -strictportbind -ip ${ip} -port ${port} +clientport ${clientport} +tv_port ${sourcetvport} +map ${defaultmap} +sv_setsteamaccount ${gslt} +servercfgfile ${servercfg} -maxplayers ${maxplayers} -norestart"
 
 #### LinuxGSM Settings ####
 
@@ -184,7 +184,7 @@ consoleinteract="yes"
 # Do not edit
 gamename="Team Fortress 2"
 engine="source"
-glibc="2.15"
+glibc="2.29"
 
 #### Directories ####
 # Edit with care
@@ -192,7 +192,7 @@ glibc="2.15"
 ## Game Server Directories
 systemdir="${serverfiles}/tf"
 executabledir="${serverfiles}"
-executable="./srcds_run"
+executable="./srcds_run_64"
 servercfgdir="${systemdir}/cfg"
 servercfg="${selfname}.cfg"
 servercfgdefault="server.cfg"

+ 7 - 0
lgsm/modules/fix_tf2.sh

@@ -14,3 +14,10 @@ if [ -f "/etc/redhat-release" ] && [ ! -f "${serverfiles}/bin/libcurl-gnutls.so.
 	ln -s "/usr/lib/libcurl.so.4" "${serverfiles}/bin/libcurl-gnutls.so.4"
 	fn_fix_msg_end
 fi
+
+# Fixes: SourceMod extensions without 64-bit builds failing to load #4841.
+if [ "${executable}" == "./srcds_run_64" ] && [ -d "${systemdir}/addons/sourcemod" ] && ! grep -qsE "^[[:blank:]]*executable=" "${configdirserver}/common.cfg" "${configdirserver}/secrets-common.cfg" "${configdirserver}/${selfname}.cfg" "${configdirserver}/secrets-${selfname}.cfg"; then
+	fn_print_info_nl "SourceMod detected, starting 32-bit server. Set executable=\"./srcds_run_64\" in ${selfname}.cfg to use 64-bit"
+	fn_script_log_info "SourceMod detected, starting 32-bit server. Set executable=\"./srcds_run_64\" in ${selfname}.cfg to use 64-bit"
+	executable="./srcds_run"
+fi