spell_stream_removal #6
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "spell_stream_removal"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Builds on the modern-toolchain work in this branch to close the gap between "it compiles on Linux" and the tswow promise of "clone, run the build, walk away, come back to a running server". Build entry (build.js): - Check the system packages we need before running npm i (which compiles native modules and needs a C toolchain + python). If something's missing we print the exact install line for the user's distro - pacman/apt/dnf/zypper - instead of dying with a node-gyp error nobody can read. An opt-in --install-deps runs it. Nothing is installed without the user asking. - If the TrinityCore submodule is missing, say "git submodule update --init --recursive" instead of a confusing cmake failure later. - The bootstrap failure path used to exit 0 (looked like success); it now exits non-zero and lists the usual causes. Database (MySQL.ts, NodeConfig.ts): - Manage a local MariaDB on Linux the same way Windows manages its bundled MySQL: init the data dir, start it on a private socket/pid, create the tswow user (on both localhost and 127.0.0.1). Before this, Linux just assumed an external server was already up and configured, which isn't the walk-away experience. - Default the DB host to 127.0.0.1 so the emulator connects over TCP. With localhost the C++ client goes looking for a unix socket at the default path and can't find ours. Client data + runtime (Dataset.ts, Client.ts, Realm.ts, luaxmlreader.cpp): - Handle case-sensitive filesystems: find Wow.exe regardless of case, and temporarily symlink the uppercase .MPQ names the extraction tools want, then remove them so the game client doesn't choke on duplicate archives. - Keep the more thorough hasContent() checks for what's already extracted, but wrap the extraction so a client problem logs and continues instead of taking down the database and hanging the whole process. - luaxmlreader skips a missing optional patch archive instead of aborting. Misc: - Use the system 7-Zip to unpack the world database (the bundled 7za is Windows-only; the old Linux path called p7zip which isn't a package on Arch). - Replace fs.rmdir({recursive}) with fs.rm - Node 26 removed the old form and it was silently hanging the build. - Don't crash the build when there's no .git (zip/tarball downloads). - Small dedup: wsys.hasCommand/resolveExe helpers shared by the MySQL and 7-Zip code. Tested from a clean Arch VM (nothing but node/npm/git): npm run build --install-deps installs the rest, compiles TrinityCore, pulls and unpacks the TDB, and finishes with "Installation successful". Then the runtime brings up MariaDB on its own, extracts dbc/maps/vmaps from a real client (135 maps loaded), and both authserver and worldserver come up. Also verified on the host that a client connects and a character logs into the world. (cherry picked from commit 561d7308ee66f9d800b675ca384685ef4c244ed1) Duskhaven integration: preserve ../build and ../release, Clang/build-type settings, the published core, locale-aware client patches, and existing database ownership/update behavior. Use a separate Wine prefix per dataset, inherit DLL overrides, and preserve archive directory structure. Database self-healing and extraction-error suppression are not adopted. Validation so far: runtime and compile TypeScript checks passed. Windows command-path regression checks and Wine launch validation follow; upstream runtime success claims above describe the original author's environment.