linux #1

Merged
Kebful merged 9 commits from linux into tswow 2026-09-13 19:37:22 +00:00
Owner

Changes proposed:

Target branch(es): 335/6x

Issues addressed: Fixes #

Tests performed: (Does it build, tested in-game, etc)

Known issues and TODO list:

**Changes proposed**: - - - **Target branch(es)**: 335/6x **Issues addressed**: Fixes # **Tests performed**: (Does it build, tested in-game, etc) **Known issues and TODO list**: - [ ] - [ ]
Boost 1.86 split boost::process into v1 (the existing API) and v2 (a new
one), and started exposing the v1 headers under boost/process/v1/. Boost
1.91 then dropped the unversioned forwarder headers, so on those versions
only boost/process/v1/ resolves.

Detect both layouts with __has_include and route through a tc_bp namespace
alias so the only behavioural difference between old and new Boost is
which header path we use. The minimum Boost version (1.74 / 1.78) is
unchanged.
src/common/Asio/DeadlineTimer.h inherits from
boost::asio::basic_deadline_timer, which is one of the symbols Asio gates
behind !defined(BOOST_ASIO_NO_DEPRECATED). On older Boost releases this
combination compiled because the gate wasn't applied to that header; on
recent releases (observed on 1.91) the template is hidden when the macro
is defined and the TC build stops linking.

Drop the macro from the boost target. The deprecated APIs TC actually
uses are limited to deadline_timer, which is what DeadlineTimer.h is
about; everything else that the macro was guarding is already absent
from the TC source tree.
Two small, independent fixes to the bundled jemalloc snapshot.

safety_check.h declared safety_check_set_abort as taking void(*)(), but
the implementation in safety_check.c (and every caller) takes a
void(*)(const char*). gcc 16 rejects the incompatible function pointer
conversion at call sites instead of warning. Update the header to match
the actual signature.

jemalloc_cpp.cpp called std::__throw_bad_alloc(), which is a libstdc++
internal helper and has been removed in recent libstdc++ releases.
Replace with the standard 'throw std::bad_alloc()' form, which compiles
on every supported toolchain.
sol2 is consumed through a precompiled header and resolves <lua.h> via
whatever include path is in scope at the point sol2 is parsed. On
distros that ship Lua 5.5 in /usr/include (Arch is the obvious one, but
not the only one going forward), that header is picked up in preference
to the Lua sources fetched into _deps/lua-src/, and sol2 then refuses to
compile against the wrong version.

Marking liblua's include directory as PUBLIC adds the fetched Lua sources
to anything that links against liblua, which is what already happens in
the rest of the consumer chain. The change has no effect on Windows
(no system Lua) and no effect on distros that don't ship a competing
lua.h.
Replace deprecated FetchContent_Populate with MakeAvailable and scope the legacy JSON wrapper policy floor to its helper function. Preserve the pinned JSON version and caller policy settings.

Validation: fresh Debug, Release and RelWithDebInfo configurations, JSON parse/serialize smoke test, and complete Clang Linux server build passed.
Pin the official Lua 5.4.9 commit and force sol2 to include the bundled C headers. Arch system lua.hpp can otherwise select Lua 5.5 headers while linking the bundled 5.4 library. Client Lua is unchanged.

Validation: sol2 callbacks, userdata, tables, coroutines and protected errors passed; complete RelWithDebInfo dynamic server build passed with Clang 22.
Kebful merged commit 14797f802e into tswow 2026-09-13 19:37:22 +00:00
Kebful deleted branch linux 2026-09-13 19:37:22 +00:00
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
Duskhaven/dusk-ts-tc!1
No description provided.