games/0ad: Update to 0.27.0

- Remove upstreamed patches
- This version allows using vanilla spidermonkey provided from
  system

This update disables "GPU skinning" by default because it causes
crashes. This is being investigated upstream [1]

[1] https://gitea.wildfiregames.com/0ad/0ad/issues/7598
This commit is contained in:
Guido Falsi 2025-02-06 08:50:32 +01:00
parent d27074d2c8
commit a95cde2a7a
16 changed files with 54 additions and 200 deletions

View File

@ -1,11 +1,9 @@
PORTNAME= 0ad
PORTVERSION= 0.0.26
PORTREVISION= 36
DISTVERSION= 0.27.0
CATEGORIES= games
MASTER_SITES= http://releases.wildfiregames.com/ \
SF/zero-ad/releases
DISTFILES= ${PORTNAME}-${PORTVERSION}-alpha-unix-build.tar.xz \
${PORTNAME}-${PORTVERSION}-alpha-unix-data.tar.xz
MASTER_SITES= https://releases.wildfiregames.com/
DISTFILES= ${PORTNAME}-${DISTVERSION}-unix-build.tar.xz \
${PORTNAME}-${DISTVERSION}-unix-data.tar.xz
MAINTAINER= madpilot@FreeBSD.org
COMMENT= Real-time strategy (RTS) game of ancient warfare
@ -29,7 +27,8 @@ LIB_DEPENDS= libboost_filesystem.so:devel/boost-libs \
libminiupnpc.so:net/miniupnpc \
libenet.so:net/enet \
libsodium.so:security/libsodium \
libfmt.so:devel/libfmt
libfmt.so:devel/libfmt \
libmozjs-115.so:lang/spidermonkey115
USES= compiler:c++11-lib desktop-file-utils dos2unix gmake gnome \
iconv openal:al perl5 pkgconfig python:3.9,build sdl tar:xz \
@ -40,7 +39,7 @@ USE_SDL= sdl2
USE_XORG= x11 xcursor
USE_PERL5= build
WRKSRC= ${WRKDIR}/${PORTNAME}-${PORTVERSION}-alpha
WRKSRC= ${WRKDIR}/${PORTNAME}-${DISTVERSION}
BUILD_WRKSRC= ${WRKSRC}/build/workspaces/gcc
MAKE_ARGS= config=release verbose=1
CPPFLAGS+= -DU_USING_ICU_NAMESPACE=1
@ -57,25 +56,29 @@ PORTDATA= *
.include <bsd.port.pre.mk>
post-extract:
@(cd ${WRKSRC}/libraries/source/nvtt && ${TAR} xf nvtt-28209.tar.xz)
post-patch:
@${REINPLACE_CMD} -e 's|%%LOCALBASE%%|${LOCALBASE}|' \
-e 's|%%CC%%|${CC}|' \
${WRKSRC}/build/premake/premake5.lua ${WRKSRC}/build/premake/extern_libs5.lua
${WRKSRC}/build/premake/extern_libs5.lua
.if ${ARCH} == i386 && ${CHOSEN_COMPILER_TYPE} == gcc
@${REINPLACE_CMD} -e '1055,1251s/-rdynamic/-lssp_nonshared &/' \
-e '1441s/"execinfo",/& "ssp_nonshared",/' \
@${REINPLACE_CMD} -e '1130,1530s/-rdynamic/-lssp_nonshared &/' \
-e '1112,1502s/"execinfo",/& "ssp_nonshared",/' \
${WRKSRC}/build/premake/premake5.lua
.endif
pre-build:
(cd ${WRKSRC}/build/workspaces && ${SETENV} ${MAKE_ENV} ./update-workspaces.sh --bindir=${PREFIX}/bin --datadir=${DATADIR} --libdir=${PREFIX}/lib/${PORTNAME})
(cd ${WRKSRC}/libraries && ${SETENV} ${MAKE_ENV} ./build-source-libs.sh --with-system-mozjs -j ${_MAKE_JOBS})
(cd ${WRKSRC}/build/workspaces && ${SETENV} ${MAKE_ENV} ./update-workspaces.sh --with-system-mozjs --bindir=${PREFIX}/bin --datadir=${DATADIR} --libdir=${PREFIX}/lib/${PORTNAME})
do-install:
${INSTALL_PROGRAM} ${WRKSRC}/binaries/system/pyrogenesis ${STAGEDIR}${PREFIX}/bin
${INSTALL_SCRIPT} ${WRKSRC}/build/resources/0ad.sh ${STAGEDIR}${PREFIX}/bin/0ad
${INSTALL_PROGRAM} ${WRKSRC}/binaries/system/ActorEditor ${STAGEDIR}${PREFIX}/bin
${MKDIR} ${STAGEDIR}${PREFIX}/lib/${PORTNAME}
(cd ${WRKSRC}/binaries/system && ${INSTALL_LIB} libAtlasUI.so libCollada.so libmozjs78-ps-release.so libnvcore.so libnvimage.so libnvmath.so libnvtt.so ${STAGEDIR}${PREFIX}/lib/${PORTNAME})
(cd ${WRKSRC}/binaries/system && ${INSTALL_LIB} libAtlasUI.so libCollada.so libnvcore.so libnvimage.so libnvmath.so libnvtt.so ${STAGEDIR}${PREFIX}/lib/${PORTNAME})
${INSTALL_DATA} ${WRKSRC}/build/resources/0ad.desktop ${STAGEDIR}${PREFIX}/share/applications
${INSTALL_DATA} ${WRKSRC}/build/resources/0ad.png ${STAGEDIR}${PREFIX}/share/pixmaps
${MKDIR} ${STAGEDIR}${DATADIR}

View File

@ -1,5 +1,5 @@
TIMESTAMP = 1664037479
SHA256 (0ad-0.0.26-alpha-unix-build.tar.xz) = 2e1c6df7e3312e77c5f82788664cffc3a78d3bf60606c00039275e1d13c0ee4b
SIZE (0ad-0.0.26-alpha-unix-build.tar.xz) = 75599800
SHA256 (0ad-0.0.26-alpha-unix-data.tar.xz) = b200e48558f882807910e3c686567b6a396248d9d418044ecfde090b05772d7d
SIZE (0ad-0.0.26-alpha-unix-data.tar.xz) = 1351511480
TIMESTAMP = 1738253090
SHA256 (0ad-0.27.0-unix-build.tar.xz) = aa94857009750d5f61dbf016bc150e3bdcbdb3acdfc8ad20b73ab8b43e9a1ba6
SIZE (0ad-0.27.0-unix-build.tar.xz) = 152170976
SHA256 (0ad-0.27.0-unix-data.tar.xz) = 3e48855ab8e1ef81270338462c8270b015213f14f5e054aab92ad74d5ea59dea
SIZE (0ad-0.27.0-unix-data.tar.xz) = 1367701984

View File

@ -0,0 +1,11 @@
--- binaries/data/config/default.cfg.orig 2025-01-28 19:44:19 UTC
+++ binaries/data/config/default.cfg
@@ -154,7 +154,7 @@ textures.maxanisotropy = 2
textures.maxanisotropy = 2
; GPU skinning via compute shaders, requires up-to-date drivers
-gpuskinning = true
+gpuskinning = false
; Use smooth LOS interpolation
smoothlos = true

View File

@ -1,49 +0,0 @@
diff --git a/source/graphics/TextureManager.cpp b/source/graphics/TextureManager.cpp
index ec68b15989..9cfa615997 100644
--- source/graphics/TextureManager.cpp
+++ source/graphics/TextureManager.cpp
@@ -1,4 +1,4 @@
-/* Copyright (C) 2023 Wildfire Games.
+/* Copyright (C) 2024 Wildfire Games.
* This file is part of 0 A.D.
*
* 0 A.D. is free software: you can redistribute it and/or modify
@@ -806,7 +806,7 @@ public:
files.push_back(f);
p = p / GetWstringFromWpath(*it);
}
- return m_TextureConverter.ComputeSettings(GetWstringFromWpath(srcPath.leaf()), files);
+ return m_TextureConverter.ComputeSettings(GetWstringFromWpath(srcPath.filename()), files);
}
/**
diff --git a/source/lib/file/file_system.cpp b/source/lib/file/file_system.cpp
index 1db6dc65d3..2b1fdba056 100644
--- source/lib/file/file_system.cpp
+++ source/lib/file/file_system.cpp
@@ -1,4 +1,4 @@
-/* Copyright (C) 2023 Wildfire Games.
+/* Copyright (C) 2024 Wildfire Games.
*
* Permission is hereby granted, free of charge, to any person obtaining
* a copy of this software and associated documentation files (the
@@ -32,6 +32,7 @@
#include "lib/sysdep/filesystem.h"
#include <boost/filesystem.hpp>
+#include <boost/version.hpp>
#include <memory>
bool DirectoryExists(const OsPath& path)
@@ -229,7 +230,11 @@ Status CopyFile(const OsPath& path, const OsPath& newPath, bool override_if_exis
try
{
if(override_if_exists)
+#if BOOST_VERSION >=107400
+ fs::copy_file(fs::path(path.string()), fs::path(newPath.string()), boost::filesystem::copy_options::overwrite_existing);
+#else
fs::copy_file(fs::path(path.string()), fs::path(newPath.string()), boost::filesystem::copy_option::overwrite_if_exists);
+#endif
else
fs::copy_file(fs::path(path.string()), fs::path(newPath.string()));
}

View File

@ -1,11 +1,14 @@
--- build/premake/extern_libs5.lua.orig 2021-02-06 00:32:37 UTC
--- build/premake/extern_libs5.lua.orig 2025-01-28 19:57:28 UTC
+++ build/premake/extern_libs5.lua
@@ -193,7 +193,7 @@ extern_lib_defs = {
end
@@ -232,9 +232,9 @@ extern_lib_defs = {
-- TODO: This actually applies to most libraries we use on BSDs, make this a global setting.
if os.istarget("bsd") then
if externalincludedirs then
- externalincludedirs { "/usr/local/include" }
+ externalincludedirs { "%%LOCALBASE%%/include" }
else
- sysincludedirs { "/usr/local/include" }
+ sysincludedirs { "%%LOCALBASE%%/include" }
end
end
end,
link_settings = function()

View File

@ -1,6 +1,6 @@
--- build/premake/premake5.lua.orig 2022-09-23 19:16:45 UTC
--- build/premake/premake5.lua.orig 2025-01-28 19:57:28 UTC
+++ build/premake/premake5.lua
@@ -76,14 +76,10 @@ else
@@ -85,14 +85,10 @@ else
end
else
local machine = "x86_64"
@ -17,14 +17,5 @@
+ machine = f:read("*line")
+ f:close()
-- Special handling on mac os where xcode needs special flags.
-- TODO: We should look into "universal" macOS compilation.
if os.istarget("macosx") then
if string.find(machine, "arm64") then
@@ -380,7 +376,7 @@ function project_set_build_flags()
if os.istarget("linux") or os.istarget("bsd") then
if _OPTIONS["prefer-local-libs"] then
- libdirs { "/usr/local/lib" }
+ libdirs { "%%LOCALBASE%%/lib" }
end
-- To use our local shared libraries, they need to be found in the

View File

@ -1,4 +1,4 @@
--- build/workspaces/update-workspaces.sh.orig 2014-09-20 19:02:24 UTC
--- build/workspaces/update-workspaces.sh.orig 2025-01-28 19:57:28 UTC
+++ build/workspaces/update-workspaces.sh
@@ -1,10 +1,5 @@
#!/bin/sh
@ -10,4 +10,4 @@
-
die()
{
echo ERROR: $*
echo ERROR: "$*"

View File

@ -1,6 +1,6 @@
--- libraries/source/nvtt/src/src/nvcore/Debug.cpp.orig 2021-02-28 23:45:14 UTC
+++ libraries/source/nvtt/src/src/nvcore/Debug.cpp
@@ -628,6 +628,9 @@ namespace
--- libraries/source/nvtt/nvtt-28209/src/src/nvcore/Debug.cpp.orig 2025-01-30 19:39:40 UTC
+++ libraries/source/nvtt/nvtt-28209/src/src/nvcore/Debug.cpp
@@ -631,6 +631,9 @@ namespace
# elif NV_CPU_X86
ucontext_t * ucp = (ucontext_t *)secret;
return (void *)ucp->uc_mcontext.mc_eip;

View File

@ -1,14 +0,0 @@
--- libraries/source/spidermonkey/FixExclusiveDataClang19.diff.orig 2024-10-26 16:30:56 UTC
+++ libraries/source/spidermonkey/FixExclusiveDataClang19.diff
@@ -0,0 +1,11 @@
+--- a/js/src/threading/ExclusiveData.h.orig 2020-11-28 17:33:56.000000000 +0100
++++ b/js/src/threading/ExclusiveData.h
+@@ -110,7 +110,7 @@
+ : lock_(id), value_(std::forward<Args>(args)...) {}
+
+ ExclusiveData(ExclusiveData&& rhs)
+- : lock_(std::move(rhs.lock)), value_(std::move(rhs.value_)) {
++ : lock_(std::move(rhs.lock())), value_(std::move(rhs.value_)) {
+ MOZ_ASSERT(&rhs != this, "self-move disallowed!");
+ }
+

View File

@ -1,17 +0,0 @@
--- libraries/source/spidermonkey/FixFreeBSDClang16.diff.orig 2023-06-28 15:31:44 UTC
+++ libraries/source/spidermonkey/FixFreeBSDClang16.diff
@@ -0,0 +1,14 @@
+diff -ruN a/build/moz.configure/flags.configure b/build/moz.configure/flags.configure
+--- a/build/moz.configure/flags.configure 2020-11-28 17:33:01.000000000 +0100
++++ b/build/moz.configure/flags.configure
+@@ -56,10 +56,5 @@
+ # Temporary until https://bugs.llvm.org/show_bug.cgi?id=45835 gets a
+ # real fix: clang 10 hangs with some ubsan-inserted code constructs.
+ return None
+- if enabled and compiler.version >= '9.0.0':
+- if compiler.type == 'clang':
+- return ['-fexperimental-new-pass-manager']
+- elif compiler.type == 'clang-cl':
+- return ['-Xclang', '-fexperimental-new-pass-manager']
+
+ set_config('MOZ_NEW_PASS_MANAGER_FLAGS', new_pass_manager_flags)

View File

@ -1,11 +0,0 @@
--- libraries/source/spidermonkey/patch.sh.orig 2022-09-23 20:36:41 UTC
+++ libraries/source/spidermonkey/patch.sh
@@ -84,4 +84,8 @@ then
patch -p1 < ../FixFreeBSDCargoChecksum.diff
# https://svnweb.freebsd.org/ports/head/lang/spidermonkey78/files/patch-third__party_rust_cc_src_lib.rs?view=log
patch -p1 < ../FixFreeBSDRustThirdPartyOSDetection.diff
+ # Remove now unknown compiler option causing problems
+ patch -p1 < ../FixFreeBSDClang16.diff
+ # Fix with clang19
+ patch -p1 < ../FixExclusiveDataClang19.diff
fi

View File

@ -1,6 +1,6 @@
--- source/lib/allocators/page_aligned.cpp.orig 2017-07-28 19:57:26 UTC
--- source/lib/allocators/page_aligned.cpp.orig 2025-01-28 19:58:03 UTC
+++ source/lib/allocators/page_aligned.cpp
@@ -49,7 +49,7 @@ static const int mmap_flags = MAP_PRIVATE|MAP_ANONYMOU
@@ -48,7 +48,7 @@ Status mem_Reserve(size_t size, u8** pp)
Status mem_Reserve(size_t size, u8** pp)
{
errno = 0;
@ -9,7 +9,7 @@
*pp = (u8*)ret;
return StatusFromMap(ret);
}
@@ -76,7 +76,7 @@ Status mem_Commit(u8* p, size_t size, int prot)
@@ -75,7 +75,7 @@ Status mem_Decommit(u8* p, size_t size)
Status mem_Decommit(u8* p, size_t size)
{
errno = 0;

View File

@ -1,18 +0,0 @@
--- source/network/NetMessage.cpp.orig 2023-09-17 08:35:54 UTC
+++ source/network/NetMessage.cpp
@@ -1,4 +1,4 @@
-/* Copyright (C) 2017 Wildfire Games.
+/* Copyright (C) 2023 Wildfire Games.
* This file is part of 0 A.D.
*
* 0 A.D. is free software: you can redistribute it and/or modify
@@ -216,7 +216,8 @@ CNetMessage* CNetMessageFactory::CreateMessage(const v
break;
default:
- LOGERROR("CNetMessageFactory::CreateMessage(): Unknown message type '%d' received", header.GetType());
+ LOGERROR("CNetMessageFactory::CreateMessage(): Unknown message type '%d' received",
+ static_cast<int>(header.GetType()));
break;
}

View File

@ -1,33 +0,0 @@
--- source/network/NetServer.cpp.orig 2022-09-23 19:17:14 UTC
+++ source/network/NetServer.cpp
@@ -302,7 +302,11 @@ void CNetServerWorker::SetupUPnP()
else if ((devlist = upnpDiscover(10000, 0, 0, 0, 0, 0)) != NULL)
#endif
{
+#if defined(MINIUPNPC_API_VERSION) && MINIUPNPC_API_VERSION >= 18
+ ret = UPNP_GetValidIGD(devlist, &urls, &data, internalIPAddress, sizeof(internalIPAddress), NULL, 0);
+#else
ret = UPNP_GetValidIGD(devlist, &urls, &data, internalIPAddress, sizeof(internalIPAddress));
+#endif
allocatedUrls = ret != 0; // urls is allocated on non-zero return values
}
else
@@ -321,9 +325,18 @@ void CNetServerWorker::SetupUPnP()
LOGMESSAGE("Net server: found valid IGD = %s", urls.controlURL);
break;
case 2:
+#if defined(MINIUPNPC_API_VERSION) && MINIUPNPC_API_VERSION >= 18
+ LOGMESSAGE("Net server: found a valid IGD with a reserved address = %s, will try to continue anyway", urls.controlURL);
+ break;
+ case 3:
LOGMESSAGE("Net server: found a valid, not connected IGD = %s, will try to continue anyway", urls.controlURL);
break;
+ case 4:
+#else
+ LOGMESSAGE("Net server: found a valid, not connected IGD = %s, will try to continue anyway", urls.controlURL);
+ break;
case 3:
+#endif
LOGMESSAGE("Net server: found a UPnP device unrecognized as IGD = %s, will try to continue anyway", urls.controlURL);
break;
default:

View File

@ -1,11 +0,0 @@
--- source/simulation2/serialization/BinarySerializer.cpp.orig 2022-08-21 12:45:40 UTC
+++ source/simulation2/serialization/BinarySerializer.cpp
@@ -52,7 +52,7 @@ static u8 GetArrayType(js::Scalar::Type arrayType)
case js::Scalar::Uint8Clamped:
return SCRIPT_TYPED_ARRAY_UINT8_CLAMPED;
default:
- LOGERROR("Cannot serialize unrecognized typed array view: %d", arrayType);
+ LOGERROR("Cannot serialize unrecognized typed array view: %d", static_cast<int>(arrayType));
throw PSERROR_Serialize_InvalidScriptValue();
}
}

View File

@ -3,7 +3,6 @@ bin/0ad
bin/ActorEditor
lib/0ad/libAtlasUI.so
lib/0ad/libCollada.so
lib/0ad/libmozjs78-ps-release.so
lib/0ad/libnvcore.so
lib/0ad/libnvimage.so
lib/0ad/libnvmath.so