openmw-tes3mp: drop

The multiplayer fork of OpenMW is currently unmaintained,
fails to build with OpenMW 0.49.0, and needs multiple GCC
14 compilation patches.

Signed-off-by: Fernando Rodrigues <alpha@sigmasquadron.net>
This commit is contained in:
Fernando Rodrigues
2025-09-01 12:47:08 +10:00
parent a58b98e968
commit f63a34fc69
5 changed files with 1 additions and 219 deletions
-179
View File
@@ -1,179 +0,0 @@
{
lib,
stdenv,
cmake,
openmw,
fetchFromGitHub,
fetchpatch,
luajit,
makeWrapper,
symlinkJoin,
}:
# revisions are taken from https://github.com/GrimKriegor/TES3MP-deploy
let
# raknet could also be split into dev and lib outputs
raknet = stdenv.mkDerivation {
pname = "raknet";
version = "unstable-2020-01-19";
src = fetchFromGitHub {
owner = "TES3MP";
repo = "CrabNet";
# usually fixed:
# https://github.com/GrimKriegor/TES3MP-deploy/blob/d2a4a5d3acb64b16d9b8ca85906780aeea8d311b/tes3mp-deploy.sh#L589
rev = "19e66190e83f53bcdcbcd6513238ed2e54878a21";
sha256 = "WIaJkSQnoOm9T7GoAwmWl7fNg79coIo/ILUsWcbH+lA=";
};
patches = [
# gcc-13 build fix:
# https://github.com/TES3MP/CrabNet/pull/18
(fetchpatch {
name = "gcc-13.patch";
url = "https://github.com/TES3MP/CrabNet/commit/3ec9a338a7cefd5cc751c9d29095cafa4c73be20.patch";
hash = "sha256-zE87icjX9GSnApgKQXj0K4IjlrReV/upFLjVgNYkNfM=";
})
];
cmakeFlags = [
"-DCRABNET_ENABLE_DLL=OFF"
];
nativeBuildInputs = [ cmake ];
installPhase = ''
install -Dm555 lib/libRakNetLibStatic.a $out/lib/libRakNetLibStatic.a
'';
};
coreScripts = stdenv.mkDerivation {
pname = "corescripts";
version = "0.8.1";
src = fetchFromGitHub {
owner = "TES3MP";
repo = "CoreScripts";
# usually latest in stable branch (e.g. 0.7.1)
rev = "6ae0a2a5d16171de3764817a7f8b1067ecde3def";
sha256 = "8j/Sr9IRMNFPEVfFzdb42PckHS3KW7FH7x7rRxIh5gY=";
};
buildCommand = ''
dir=$out/share/openmw-tes3mp
mkdir -p $dir
cp -r $src $dir/CoreScripts
'';
};
# build an unwrapped version so we don't have to rebuild it all over again in
# case the scripts or wrapper scripts change.
unwrapped = openmw.overrideAttrs (oldAttrs: rec {
pname = "openmw-tes3mp-unwrapped";
version = "0.8.1";
src = fetchFromGitHub {
owner = "TES3MP";
repo = "TES3MP";
# usually latest in stable branch (e.g. 0.7.1)
rev = "68954091c54d0596037c4fb54d2812313b7582a1";
sha256 = "8/bV4sw7Q8l8bDTHGQ0t4owf6J6h9q468JFx4KegY5o=";
};
nativeBuildInputs = oldAttrs.nativeBuildInputs ++ [ makeWrapper ];
buildInputs = oldAttrs.buildInputs ++ [ luajit ];
cmakeFlags = oldAttrs.cmakeFlags ++ [
"-DBUILD_OPENCS=OFF"
"-DRakNet_INCLUDES=${raknet.src}/include"
"-DRakNet_LIBRARY_RELEASE=${raknet}/lib/libRakNetLibStatic.a"
"-DRakNet_LIBRARY_DEBUG=${raknet}/lib/libRakNetLibStatic.a"
];
prePatch = ''
substituteInPlace components/process/processinvoker.cpp \
--replace "\"./\"" "\"$out/bin/\""
'';
patches = [
# glibc-2.34 support
(fetchpatch {
url = "https://gitlab.com/OpenMW/openmw/-/commit/98a7d90ee258ceef9c70b0b2955d0458ec46f048.patch";
hash = "sha256-RhbIGeE6GyqnipisiMTwWjcFnIiR055hUPL8IkjPgZw=";
})
# gcc-13 build fix:
# https://github.com/TES3MP/TES3MP/pull/674
(fetchpatch {
name = "gcc-13.patch";
url = "https://github.com/TES3MP/TES3MP/commit/7921f71a79e96f817a2009100e5105a7948b3fe2.patch";
hash = "sha256-mpxuOSPA2xixgBeYXsxutEUI7VJL5PxAeZgaNU7YkJQ=";
})
# https://github.com/TES3MP/openmw-tes3mp/issues/552
./tes3mp.patch
# https://github.com/TES3MP/TES3MP/pull/691
./tes3mp-gcc14-fix.patch
];
env.NIX_CFLAGS_COMPILE = "-fpermissive";
preConfigure = ''
substituteInPlace files/version.in \
--subst-var-by OPENMW_VERSION_COMMITHASH ${src.rev}
'';
# move everything that we wrap out of the way
postInstall = ''
mkdir -p $out/libexec
mv $out/bin/tes3mp-* $out/libexec
'';
meta = with lib; {
description = "Multiplayer for TES3:Morrowind based on OpenMW";
homepage = "https://tes3mp.com/";
license = licenses.gpl3Only;
maintainers = with maintainers; [ peterhoeg ];
platforms = [
"x86_64-linux"
"i686-linux"
];
};
});
tes3mp-server-run = ''
config="''${XDG_CONFIG_HOME:-''$HOME/.config}"/openmw
data="''${XDG_DATA_HOME:-''$HOME/.local/share}"/openmw
if [[ ! -f "$config"/tes3mp-server.cfg && ! -d "$data"/server ]]; then
mkdir -p "$config"
echo [Plugins] > "$config"/tes3mp-server.cfg
echo "home = $data/server" >> "$config"/tes3mp-server.cfg
mkdir -p "$data"
cp -r ${coreScripts}/share/openmw-tes3mp/CoreScripts "$data"/server
chmod -R u+w "$data"/server
fi
'';
in
symlinkJoin {
name = "openmw-tes3mp-${unwrapped.version}";
inherit (unwrapped) version meta;
nativeBuildInputs = [ makeWrapper ];
paths = [ unwrapped ];
postBuild = ''
mkdir -p $out/bin
makeWrapper ${unwrapped}/libexec/tes3mp-browser $out/bin/tes3mp-browser \
--chdir "$out/bin"
makeWrapper ${unwrapped}/libexec/tes3mp-server $out/bin/tes3mp-server \
--run '${tes3mp-server-run}' \
--chdir "$out/bin"
'';
}
-25
View File
@@ -1,25 +0,0 @@
diff --git a/apps/openmw/mwstate/charactermanager.hpp b/apps/openmw/mwstate/charactermanager.hpp
index 2daf734..b77d2a8 100644
--- a/apps/openmw/mwstate/charactermanager.hpp
+++ b/apps/openmw/mwstate/charactermanager.hpp
@@ -1,6 +1,8 @@
#ifndef GAME_STATE_CHARACTERMANAGER_H
#define GAME_STATE_CHARACTERMANAGER_H
+#include <list>
+
#include <boost/filesystem/path.hpp>
#include "character.hpp"
diff --git a/components/vfs/filesystemarchive.cpp b/components/vfs/filesystemarchive.cpp
index 6eef4b9..608323e 100644
--- a/components/vfs/filesystemarchive.cpp
+++ b/components/vfs/filesystemarchive.cpp
@@ -1,5 +1,7 @@
#include "filesystemarchive.hpp"
+#include <algorithm>
+
#include <boost/filesystem.hpp>
#include <components/debug/debuglog.hpp>
-13
View File
@@ -1,13 +0,0 @@
diff --git a/apps/openmw-mp/Script/Types.hpp b/apps/openmw-mp/Script/Types.hpp
index be365cfb8..204dcdc7b 100644
--- a/apps/openmw-mp/Script/Types.hpp
+++ b/apps/openmw-mp/Script/Types.hpp
@@ -105,7 +105,7 @@ struct ScriptFunctionPointer : public ScriptIdentity
void *addr;
#if (!defined(__clang__) && defined(__GNUC__))
template<typename R, typename... Types>
- constexpr ScriptFunctionPointer(Function<R, Types...> addr) : ScriptIdentity(addr), addr((void*)(addr)) {}
+ constexpr ScriptFunctionPointer(Function<R, Types...> addr) : ScriptIdentity(addr), addr(addr) {}
#else
template<typename R, typename... Types>
constexpr ScriptFunctionPointer(Function<R, Types...> addr) : ScriptIdentity(addr), addr(addr) {}
+1
View File
@@ -1774,6 +1774,7 @@ mapAliases {
openlens = throw "Lens Closed its source code, package obsolete/stale - consider lens as replacement"; # Added 2024-09-04
openlp = throw "openlp has been removed for now because the outdated version depended on insecure and removed packages and it needs help to upgrade and maintain it; see https://github.com/NixOS/nixpkgs/pull/314882"; # Added 2024-07-29
openmpt123 = throw "'openmpt123' has been renamed to/replaced by 'libopenmpt'"; # Converted to throw 2024-10-17
openmw-tes3mp = throw "'openmw-tes3mp' has been removed due to lack of maintenance upstream"; # Added 2025-08-30
opensmtpd-extras = throw "opensmtpd-extras has been removed in favor of separate opensmtpd-table-* packages"; # Added 2025-01-26
openssl_3_0 = openssl_3; # Added 2022-06-27
opensycl = lib.warnOnInstantiate "'opensycl' has been renamed to 'adaptivecpp'" adaptivecpp; # Added 2024-12-04
-2
View File
@@ -14124,8 +14124,6 @@ with pkgs;
openloco = pkgsi686Linux.callPackage ../games/openloco { };
openmw-tes3mp = libsForQt5.callPackage ../games/tes3mp { };
openraPackages_2019 = import ../games/openra_2019 {
inherit lib;
pkgs = pkgs.__splicedPackages;