From cacff497d9beb10b1c3b160c807e42861dbae2c5 Mon Sep 17 00:00:00 2001 From: vetu104 Date: Sat, 16 Nov 2024 12:27:55 +0200 Subject: [PATCH] Adjust to upstream changes --- .SRCINFO | 8 ++++--- PKGBUILD | 21 +++++++++++------ cpp17.patch | 26 ++++++++++----------- tmpfile.conf | 5 ++-- vmangos-extract-data.sh | 51 +++++++++++++++++++++++++++++++++++++++++ vmangos-git.install | 28 +++++++++------------- 6 files changed, 97 insertions(+), 42 deletions(-) create mode 100644 vmangos-extract-data.sh diff --git a/.SRCINFO b/.SRCINFO index ad847a29fb5f..0cb586f35991 100644 --- a/.SRCINFO +++ b/.SRCINFO @@ -1,6 +1,6 @@ pkgbase = vmangos-git pkgdesc = MMORPG server emulator - pkgver = r6292.9b3b375ef + pkgver = r6390.e37b60804 pkgrel = 1 url = https://github.com/vmangos/ install = vmangos-git.install @@ -30,13 +30,15 @@ pkgbase = vmangos-git source = vmangos-mangosd.service source = vmangos-mangosd.socket source = cpp17.patch + source = vmangos-extract-data.sh sha256sums = SKIP sha256sums = SKIP sha256sums = 8061858ce3617c236cd09e72ab9ccdb39afd1b0f76659fdeead6861d247d5832 - sha256sums = 4e48db8fa3291429f7b0a5fe7a5a696ddc1809efd781b78355e4d6804d4dadc3 + sha256sums = 98b9de5d29c9b4d0531f55db946f2ebec80838fdcd96d319832a2a5e8a973ecd sha256sums = cf30a0c18c6596235f3f95868a1d19bd2a07fd6accd946b619e3d1c3de8d3514 sha256sums = 9d99c70255ec8749a8d59010c53d76c41251783acfccf6c335c5dffa63b5d037 sha256sums = c3cee4cb049545cb9c0857f8977120d219d8afcf5c1cb0531546d38ecde98783 - sha256sums = d04b6f59367d0fae2afd91dfa09837d55942838a28abb021637f9491b923e035 + sha256sums = e2fb357832eda6c7c7467d36251c5c817b79320416a0dd13defe86000349cf2d + sha256sums = 9cbc844eb661f7cad602fbfa92fe8a4d849fe27320d53b3ca1557c4193d22ccc pkgname = vmangos-git diff --git a/PKGBUILD b/PKGBUILD index 2c7f687dd405..fbcd2483a7c1 100644 --- a/PKGBUILD +++ b/PKGBUILD @@ -1,7 +1,7 @@ # Maintainer: Janne Veteläinen pkgname=vmangos-git -pkgver=r6292.9b3b375ef +pkgver=r6390.e37b60804 pkgrel=1 pkgdesc="MMORPG server emulator" arch=('x86_64') @@ -39,15 +39,17 @@ source=( "vmangos-mangosd.service" "vmangos-mangosd.socket" "cpp17.patch" + "vmangos-extract-data.sh" ) sha256sums=('SKIP' 'SKIP' '8061858ce3617c236cd09e72ab9ccdb39afd1b0f76659fdeead6861d247d5832' - '4e48db8fa3291429f7b0a5fe7a5a696ddc1809efd781b78355e4d6804d4dadc3' + '98b9de5d29c9b4d0531f55db946f2ebec80838fdcd96d319832a2a5e8a973ecd' 'cf30a0c18c6596235f3f95868a1d19bd2a07fd6accd946b619e3d1c3de8d3514' '9d99c70255ec8749a8d59010c53d76c41251783acfccf6c335c5dffa63b5d037' 'c3cee4cb049545cb9c0857f8977120d219d8afcf5c1cb0531546d38ecde98783' - 'd04b6f59367d0fae2afd91dfa09837d55942838a28abb021637f9491b923e035') + 'e2fb357832eda6c7c7467d36251c5c817b79320416a0dd13defe86000349cf2d' + '9cbc844eb661f7cad602fbfa92fe8a4d849fe27320d53b3ca1557c4193d22ccc') pkgver() { cd "$srcdir/$pkgname" @@ -56,7 +58,7 @@ pkgver() { prepare() { cd "$srcdir/$pkgname" - patch < "$srcdir/cpp17.patch" + patch -p1 < "$srcdir/cpp17.patch" cd "$srcdir/worlddb" 7z e world_full_14_june_2021.7z @@ -66,10 +68,14 @@ prepare() { } build() { + export CFLAGS="$CFLAGS -Wno-error=format-security" + export CXXFLAGS="$CXXFLAGS -Wno-error=format-security" + + # "CMAKE_BUILD_TYPE=None" to use compiler flags from makepkg.conf cmake -B build -S "$pkgname" \ + -DCMAKE_BUILD_TYPE='None' \ -DCMAKE_INSTALL_PREFIX='/usr' \ -DSUPPORTED_CLIENT_BUILD=5875 \ - -DUSE_ANTICHEAT=0 \ -DUSE_EXTRACTORS=1 \ -DCONF_DIR='/etc/vmangos' cmake --build build @@ -78,6 +84,7 @@ build() { package() { # Install binaries DESTDIR="$pkgdir/" cmake --install build + install -Dm655 vmangos-extract-data.sh "$pkgdir/usr/share/vmangos/vmangos-extract-data.sh" # Rename conf files mv "$pkgdir/etc/vmangos/realmd.conf.dist" "$pkgdir/etc/vmangos/realmd.conf" @@ -97,8 +104,8 @@ package() { install -Dm644 tmpfile.conf "$pkgdir/usr/lib/tmpfiles.d/vmangos.conf" # Install extractor related files - install -Dm644 "$srcdir/$pkgname/contrib/mmap/offmesh.txt" "$pkgdir/usr/share/vmangos/extractors/mmap/offmesh.txt" - install -Dm644 "$srcdir/$pkgname/contrib/mmap/config.json" "$pkgdir/usr/share/vmangos/extractors/mmap/config.json" + mkdir -p "$pkgdir/usr/share/vmangos" + mv "$pkgdir/usr/bin/Extractors" "$pkgdir/usr/share/vmangos/Extractors" # Install sql scripts cd "$srcdir/$pkgname/sql" diff --git a/cpp17.patch b/cpp17.patch index 30dd8ebe7df1..e7173e5bed02 100644 --- a/cpp17.patch +++ b/cpp17.patch @@ -1,13 +1,13 @@ -diff --git a/CMakeLists.txt b/CMakeLists.txt -index 58541aac..227cbdc4 100644 ---- a/CMakeLists.txt -+++ b/CMakeLists.txt -@@ -365,7 +365,7 @@ if(UNIX) - if(BUILD_FOR_HOST_CPU) - set(BUILD_ADDITIONAL_FLAGS "${BUILD_ADDITIONAL_FLAGS} -march=native") - endif() -- set(CMAKE_CXX_STANDARD 14) -+ set(CMAKE_CXX_STANDARD 17) - if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU") - if(PROFILE_GENERATE) - set(BUILD_ADDITIONAL_FLAGS "${BUILD_ADDITIONAL_FLAGS} -fprofile-generate") +diff --git a/cmake/platform/unix/settings.cmake b/cmake/platform/unix/settings.cmake +index 1fc9908e..7ef9623d 100644 +--- a/cmake/platform/unix/settings.cmake ++++ b/cmake/platform/unix/settings.cmake +@@ -16,7 +16,7 @@ set(BUILD_ADDITIONAL_FLAGS "${BUILD_ADDITIONAL_FLAGS} --no-warnings -fexceptions + if(BUILD_FOR_HOST_CPU) + set(BUILD_ADDITIONAL_FLAGS "${BUILD_ADDITIONAL_FLAGS} -march=native") + endif() +-set(CMAKE_CXX_STANDARD 14) ++set(CMAKE_CXX_STANDARD 17) + if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU") + if(PROFILE_GENERATE) + set(BUILD_ADDITIONAL_FLAGS "${BUILD_ADDITIONAL_FLAGS} -fprofile-generate") diff --git a/tmpfile.conf b/tmpfile.conf index 74e48e198000..d1ac5aafdce9 100644 --- a/tmpfile.conf +++ b/tmpfile.conf @@ -1,2 +1,3 @@ -d /var/lib/vmangos 0755 vmangos vmangos - -d /var/log/vmangos 0755 vmangos vmangos - +d /var/lib/vmangos 0755 vmangos vmangos - +d /var/lib/vmangos/5875 0755 vmangos vmangos - +d /var/log/vmangos 0755 vmangos vmangos - diff --git a/vmangos-extract-data.sh b/vmangos-extract-data.sh new file mode 100644 index 000000000000..c239d46b05ca --- /dev/null +++ b/vmangos-extract-data.sh @@ -0,0 +1,51 @@ +#!/bin/bash +set -e +trap 'cleanup_and_exit' INT TERM HUP + +BIN_DIR="/usr/share/vmangos/Extractors" +DATA_DIR="/var/lib/vmangos" + +main () { + check_user + run_extractors + cleanup_and_exit +} + +check_user () { + if [[ $(whoami) != vmangos ]]; then + >&2 echo "This script must be run as the vmangos user:" + >&2 echo " $ sudo -u vmangos /usr/share/vmangos/vmangos-extract-data.sh" + exit 1 + fi +} + +run_extractors () { + "$BIN_DIR/MapExtractor" -o "$DATA_DIR" && echo "Maps & DBC extracted" + + pushd "$DATA_DIR" > /dev/null + "$BIN_DIR/VMapExtractor" -d "$OLDPWD/Data" && echo "VMaps extracted" + "$BIN_DIR/VMapAssembler" && echo "VMaps assembled" + + "$BIN_DIR/MoveMapGenerator" --silent --configInputPath "$BIN_DIR/config.json" --offMeshInput "$BIN_DIR/offmesh.txt" 0 & + "$BIN_DIR/MoveMapGenerator" --silent --configInputPath "$BIN_DIR/config.json" --offMeshInput "$BIN_DIR/offmesh.txt" 1 & + "$BIN_DIR/MoveMapGenerator" --silent --configInputPath "$BIN_DIR/config.json" --offMeshInput "$BIN_DIR/offmesh.txt" --skipContinents & + wait && echo "Movemaps generated" + popd > /dev/null +} + +kill_jobs () { + for pid in $(jobs -p); do + kill "$pid" + done +} + +cleanup_and_exit () { + kill_jobs + [[ -d "$DATA_DIR/dbc" ]] && mv "$DATA_DIR/dbc" "$DATA_DIR/5875/dbc" + rm -rf "$DATA_DIR/Buildings" + rm -rf "$DATA_DIR/Cameras" + exit 0 +} + +main "$@" + diff --git a/vmangos-git.install b/vmangos-git.install index 60de014319ac..7492c4a8100f 100644 --- a/vmangos-git.install +++ b/vmangos-git.install @@ -1,25 +1,17 @@ ## arg 1: the new package version post_install() { cat << EOF + + ** Mangosd expects game data files to be located in /var/lib/vmangos. -** These can be extracted from the client. -** The extraction takes multiple hours. +** These can be extracted from the client, or obtained from elsewhere and +** placed in the directory. +** Note that the extraction process will take up to a couple hours. + Procedure for extracting: -1. Copy config.json and offmesh.txt from - /usr/share/vmangos/extractors/mmap to your - MMORPG installation directory -2. Cd to your MMORPG installation directory -3. Extractors are installed system-wide. Run the extractors: - 1. mapextractor - 2. vmapextractor - 3. vmap_assembler - 4. MoveMapGen -4. Move the extracted data to /var/lib/vmangos: - 1. ./dbc to /var/lib/vmangos/5875/dbc - 2. ./maps, ./vmaps, ./mmaps to /var/lib/vmangos - 3. ./Buildings, ./Cameras, ./config.json and ./offmesh.txt can be deleted. - 5. Change ownership of the files: - # chown -R vmangos:vmangos /var/lib/vmangos +1. Cd to your MMORPG installation directory +2. $ sudo -u vmangos /usr/share/vmangos/vmangos-extract-data.sh + - Run as 'vmangos' user to have permissions over the target directory. ** Sql scripts to set up the databases can be found in /usr/share/vmangos/sql. ** Use MariaDB to set up databases. @@ -30,6 +22,8 @@ Procedure for extracting: ** To start the server, use ** # systemctl start vmangos-realmd vmangos-mangosd ** Stdin of the console can be written to at /run/vmangos-mangosd.stdin + + EOF }