games-strategy/0ad: bump to version 0.27.0

Bump to version 0.27.0 and add support for rc builds.

Use system spidermonkey as the minor version restriction was dropped
upstream, unlike in the early days of spidermonkey it's unlikely that
version differences lead to different results. Update checkreqs as the
needed space is reduced quite a bit by using system spidermonkey.

Use verify-sig eclass and drop custom unpack.

Use wxgtk 3.2, there is no reason not to and move wx-setup to
src_configure.

Install libCollada.so, fixes pyrogenesis so it can actually generate
models from collada files if mods require it. Don't install various
unused files on the other hand.

Fix building and running tests. Also replace perl dep with python as
cxxtestgen was rewitten in python long time ago.

With the move to git and gitea the github repo was archived, so drop it
from metadata.xml

LTO still doen't work but not for the original reason

Address some qa items, like http to https, line length or outdated
blocker and remove no longer needed QA_PRESTRIPPED.

Closes: https://bugs.gentoo.org/774153
Closes: https://bugs.gentoo.org/873058
Closes: https://bugs.gentoo.org/896964
Closes: https://bugs.gentoo.org/909509
Closes: https://bugs.gentoo.org/912838
Closes: https://bugs.gentoo.org/917626
Closes: https://bugs.gentoo.org/921324
Closes: https://bugs.gentoo.org/935474
Closes: https://bugs.gentoo.org/945956
Closes: https://bugs.gentoo.org/946468
Closes: https://bugs.gentoo.org/949122
Signed-off-by: Ralph Sennhauser <ralph.sennhauser@gmail.com>
Closes: https://github.com/gentoo/gentoo/pull/40383
Signed-off-by: Sam James <sam@gentoo.org>
This commit is contained in:
Ralph Sennhauser 2025-01-22 13:32:49 +01:00 committed by Sam James
parent 1f6eb8673d
commit c08ce8c1e9
No known key found for this signature in database
GPG Key ID: 738409F520DF9190
5 changed files with 318 additions and 1 deletions

View File

@ -0,0 +1,235 @@
# Copyright 2014-2025 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
PYTHON_COMPAT=( python3_{12,13})
WX_GTK_VER="3.2-gtk3"
inherit desktop flag-o-matic python-any-r1 toolchain-funcs multiprocessing wxwidgets xdg
if [[ ${PV} != 9999 && ${PV} != *_pre* ]]; then
VERIFY_SIG_METHOD=minisig
# The public key can be found upstream - last update was w/ alpha 26:
# https://gitea.wildfiregames.com/0ad/0ad/wiki/VerifyingYourDownloads
VERIFY_SIG_OPENPGP_KEY_PATH=${FILESDIR}/0ad-minisign.pub
inherit verify-sig
fi
DESCRIPTION="A free, real-time strategy game"
HOMEPAGE="https://play0ad.com/"
LICENSE="BitstreamVera CC-BY-SA-3.0 GPL-2 LGPL-2.1 LPPL-1.3c MIT ZLIB"
if [[ ${PV} == *9999 ]]; then
inherit git-r3
EGIT_REPO_URI="https://github.com/0ad/0ad"
S="${WORKDIR}/${P}"
elif [[ ${PV} == *_pre* ]]; then
ZEROAD_GIT_REVISION=""
SRC_URI="https://github.com/0ad/0ad/archive/${ZEROAD_GIT_REVISION}.tar.gz -> ${P}.tar.gz"
S="${WORKDIR}/${PN}-${ZEROAD_GIT_REVISION}"
elif [[ ${PV} == *_rc* ]]; then
MY_P="0ad-${PV/_/-}"
SRC_URI="
https://releases.wildfiregames.com/rc/${MY_P}-unix-build.tar.xz
https://releases.wildfiregames.com/rc/${MY_P}-unix-data.tar.xz
verify-sig? (
https://releases.wildfiregames.com/rc/${MY_P}-unix-build.tar.xz.minisig
https://releases.wildfiregames.com/rc/${MY_P}-unix-data.tar.xz.minisig
)
"
S="${WORKDIR}/${MY_P/-rc*/}"
else
MY_P="0ad-${PV/_/-}"
SRC_URI="
https://releases.wildfiregames.com/${MY_P}-unix-build.tar.xz
https://releases.wildfiregames.com/${MY_P}-unix-data.tar.xz
verify-sig? (
https://releases.wildfiregames.com/${MY_P}-unix-build.tar.xz.minisig
https://releases.wildfiregames.com/${MY_P}-unix-data.tar.xz.minisig
)
"
S="${WORKDIR}/${MY_P}"
fi
SLOT="0"
KEYWORDS="~amd64 ~arm64 ~x86"
IUSE="editor +lobby nvtt pch test"
RESTRICT="!test? ( test )"
CHECKREQS_DISK_BUILD="4000M" # 3842680 KiB (3.6 GiB) for alpha 27
CHECKREQS_DISK_USR="3500M" # 3452564 KiB (3.2 GiB)
BDEPEND="
>=dev-util/premake-5.0.0_alpha12:5
virtual/pkgconfig
test? ( ${PYTHON_DEPS} )
"
# Removed dependency on nvtt as we use the bundled one.
# bug #768930
# TODO: use system cxxtest
DEPEND="
dev-lang/spidermonkey:115
dev-libs/boost:=
dev-libs/icu:=
dev-libs/libfmt:0=
dev-libs/libsodium:=
dev-libs/libxml2
media-libs/libpng:0
media-libs/libsdl2[X,opengl,video]
media-libs/libvorbis
media-libs/openal
net-libs/enet:1.3
net-libs/miniupnpc:=
net-misc/curl
sys-libs/zlib
virtual/opengl
x11-libs/libX11
editor? ( x11-libs/wxGTK:${WX_GTK_VER}[X,opengl] )
lobby? ( net-libs/gloox )
"
RDEPEND="
${DEPEND}
"
PATCHES=(
# https://gitea.wildfiregames.com/0ad/0ad/issues/7534
"${FILESDIR}/${PN}-0.27.0-fix-tests.patch"
)
src_prepare() {
default
# bundled nvtt: -Wodr
filter-lto
# Originally from 0ad-data
rm binaries/data/tools/fontbuilder/fonts/*.txt || die
# Delete test needing network access
rm source/network/tests/test_StunClient.h || die
}
src_configure() {
# 0AD uses premake:5 to generate the Makefiles, so let's
# 1. configure the configure args,
# 2. export some toolchain args,
# 3. configure premake args,
# 4. run premake5.
local myconf=(
--minimal-flags
--with-system-mozjs
$(usex nvtt "" "--without-nvtt")
$(usex pch "" "--without-pch")
$(usex test "" "--without-tests")
$(usex editor "" "--without-atlas")
$(usex lobby "" "--without-lobby")
--bindir="/usr/bin"
--libdir="/usr/$(get_libdir)"/${PN}
--datadir="/usr/share/${PN}"
)
tc-export AR CC CXX RANLIB
local mypremakeargs=(
--file=build/premake/premake5.lua
--os=linux
--verbose
)
use editor && setup-wxwidgets
premake5 "${mypremakeargs[@]}" "${myconf[@]}" gmake2 \
|| die "Premake failed"
}
src_compile() {
# Build 3rd party fcollada
einfo "Building bundled fcollada"
JOBS="-j$(makeopts_jobs)" ./libraries/source/fcollada/build.sh || die "Failed to build bundled fcollada"
# Build bundled NVTT
# nvtt is abandoned upstream and 0ad has forked it and added fixes.
# Use their copy. bug #768930
if use nvtt; then
elog "Building bundled NVTT (bug #768930)"
JOBS="-j$(makeopts_jobs)" ./libraries/source/nvtt/build.sh || die "Failed to build bundled NVTT"
fi
# Shouldn't be needed with tests disabled, unfortunatly it still is for a27
# https://gitea.wildfiregames.com/0ad/0ad/issues/7537
einfo "Building bundled cxxtest"
JOBS="-j$(makeopts_jobs)" ./libraries/source/cxxtest-4.4/build.sh || die "Failed to build bundled cxxtest"
# Build 0ad itself!
elog "Building 0ad"
emake -C build/workspaces/default config=release verbose=1
# Build assets
# (We only do this if we're using a snapshot/non-release)
# See bug #771147 (comment 3) and the old 0ad-data ebuild
# Warning: fragile!
if [[ ${PV} == 9999 || ${PV} == *_pre* ]]; then
# source/lib/sysdep/os/linux/ldbg.cpp:debug_SetThreadName() tries to open /proc/self/task/${TID}/comm for writing.
addpredict /proc/self/task
# Based on source/tools/dist/build-archives.sh used by source/tools/dist/build.sh.
local archivebuild_input archivebuild_output mod_name
for archivebuild_input in binaries/data/mods/[A-Za-z0-9]*; do
mod_name="${archivebuild_input##*/}"
archivebuild_output="archives/${mod_name}"
mkdir -p "${archivebuild_output}" || die
einfo pyrogenesis -archivebuild="${archivebuild_input}" \
-archivebuild-output="${archivebuild_output}/${mod_name}.zip"
LD_LIBRARY_PATH="binaries/system" binaries/system/pyrogenesis \
-archivebuild="${archivebuild_input}" \
-archivebuild-output="${archivebuild_output}/${mod_name}.zip" \
|| die "Failed to build assets"
if [[ -f "${archivebuild_input}/mod.json" ]]; then
cp "${archivebuild_input}/mod.json" "${archivebuild_output}" || die
fi
rm -r "${archivebuild_input}" || die
mv "${archivebuild_output}" "${archivebuild_input}" || die
done
# Based on source/tools/dist/build-unix-win32.sh used by source/tools/dist/build.sh.
rm binaries/data/config/dev.cfg || die
fi
}
# Removed test requiring network access in src_configure
src_test() {
LD_LIBRARY_PATH=$(realpath libraries/source/nvtt/lib/) \
./binaries/system/test --libdir "${S}/binaries/system" || die "Failed tests"
}
src_install() {
# Remove font files only used to generate font bitmaps
rm -r binaries/data/tools/fontbuilder/ || die
# Remove transifex tooling configuration
rm -r binaries/data/l10n/{.tx,messages.json} || die
# Remove test only data
rm -r binaries/data/mods/_test.* || die
newbin binaries/system/pyrogenesis 0ad
use editor && newbin binaries/system/ActorEditor 0ad-ActorEditor
# Merged from 0ad-data
# bug #771147 (comment 3)
insinto /usr/share/${PN}
doins -r binaries/data/{l10n,config,mods,tools}
# Install bundled nvtt
# bug #771147 (comment 1)
exeinto /usr/$(get_libdir)/${PN}
doexe binaries/system/libCollada.so
use nvtt && doexe libraries/source/nvtt/lib/{libnvtt,libnvcore,libnvimage,libnvmath}.so
use editor && doexe binaries/system/libAtlasUI.so
dodoc binaries/system/readme.txt
doicon -s 128 build/resources/${PN}.png
make_desktop_entry ${PN}
}

View File

@ -2,3 +2,7 @@ DIST 0ad-0.0.26-alpha-unix-build.tar.xz 75599800 BLAKE2B ddd589840b0dacee2377ff4
DIST 0ad-0.0.26-alpha-unix-build.tar.xz.minisig 333 BLAKE2B 9f3146abda592fe6ab9433f6ee30060bcd4c5b594e00cb3fccc0aebb74652f3bc2ddd7b19a296da7ca13126ea9cc0337750f859e24f46adfcb84272bd2cce452 SHA512 eda542c1c363c7c0e6b235e6d8dfbd96d1c1e7cfca408b7215cf247b96c9f42b8bc206bbb4dd48dc41ee373db17d4a76cba940e454840dc41638dd572c580850
DIST 0ad-0.0.26-alpha-unix-data.tar.xz 1351511480 BLAKE2B 2f483593b79a6ae87d7582625e89c890cfcf4ad7116348b184dae6c47a814d95a7b9f3018cb79e8f024a61c647abd39d6faf5ad3d3fcbb0c7a0583d0479d9b18 SHA512 8fe29fce68737d5b7001c8c2a7198766583b22556129cd2d927823da9b2c58f224fb1207f35bd03abea9380cf24d00ab6257b0dba86ce3ad1f357d7006f051d6
DIST 0ad-0.0.26-alpha-unix-data.tar.xz.minisig 332 BLAKE2B fb4ec1bcabad79052a5e391557623ad61234d4948ec919d9a79011037855b6c7c94445d8f1667f1725bf80d15d66d1aa32c4e2b259831fbe088fe79e800515b3 SHA512 6dd55dda4e6cd52642b331aa571bc4ccfe30a33ad12a5d3ccf51c708d05dd74bf3234ca722c2a6501ba797bc1f8fa7c7aeb4d836dc4792bfd0c6bbccdc2c1237
DIST 0ad-0.27.0-unix-build.tar.xz 152170976 BLAKE2B 85ff5b8090791cc2b8fd32cd86c58581b42c2be10f4cf7a15a2ab6f623dbfe1df1b87eab396d1030d3f8936b890f89b383e190800e452c98e22d4501bfe88694 SHA512 c22dc99f873924dab21737a9ac2d85c5a250acd094d61e15ce1b196dbd2d9315f0d31712cc6056b1bfc32aebb4e6c5beaa60bde4e05cb70aa662dea28e47210e
DIST 0ad-0.27.0-unix-build.tar.xz.minisig 327 BLAKE2B c8cfc6654f1fb04f513512fa6dd9168864434ca15a77584a670d294a8d667529b43ba26779aba763354b069dd1893ce85af856e382fc41d11493ec5af769fc06 SHA512 cb791abdc8076a6e9823f1d732869c3757277f2980b42c028638bf7ee98e04cf65614fc93dc56e6b4ae8287826e02338d9746d0cc228d23922f2d005db94f459
DIST 0ad-0.27.0-unix-data.tar.xz 1367701984 BLAKE2B d9e745352c792a959b4a2e04ac833bebf29f86de14abe17e5dbfd4a7e4dfeb4d0cdf7487304fec5bff7041995d7f471abf09cd9295386f2eb9932efd9abf67fb SHA512 744be28da72c155591ee1780e9b6ed679ba4dbb3a991ed5e9faf6cb3dec769323c73cf8fec343743834491433166bb19b7bb4085da1a3e033b5e06fde001a27f
DIST 0ad-0.27.0-unix-data.tar.xz.minisig 326 BLAKE2B d04c309499af9ede76cf5b09d014de36360f6bf3e3b0018bb890be6eac2a05dc21abd4c25f607dec812ffaf660da91b0e8455f8e10d93205518c672a5f7dccaf SHA512 bcea286152b99cf01b526c587b5df2f33c23326512a59dc02b40e743aafa04716b42da6f6adf1457485e969ab834015f02a96c06aa84ffede62a15a1b3be14f1

View File

@ -0,0 +1,78 @@
From c9034c922a87e5692a1aca7262e1eff0598de9c3 Mon Sep 17 00:00:00 2001
From: Ralph Sennhauser <ralph.sennhauser@gmail.com>
Date: Thu, 23 Jan 2025 09:51:01 +0100
Subject: [PATCH] Quick hack to add --libdir support to test
The switch got lost at some point, this PoC allows to run the tests for
a system install of a27. Should be fixed for 0.28.0 in a cleaner way.
https://gitea.wildfiregames.com/0ad/0ad/issues/7534
Signed-off-by: Ralph Sennhauser <ralph.sennhauser@gmail.com>
---
build/premake/cxxtest/cxxtest.lua | 2 +-
source/test_main.tpl | 39 +++++++++++++++++++++++++++++++
2 files changed, 40 insertions(+), 1 deletion(-)
create mode 100644 source/test_main.tpl
diff --git a/build/premake/cxxtest/cxxtest.lua b/build/premake/cxxtest/cxxtest.lua
index 70840b70a2..1d27612b12 100644
--- a/build/premake/cxxtest/cxxtest.lua
+++ b/build/premake/cxxtest/cxxtest.lua
@@ -53,7 +53,7 @@ function m.init(have_std, have_eh, runner, includes, root_includes)
buildmessage 'Generating test root file'
buildcommands {
"{MKDIR} %{wks.location}/generated",
- m.exepath.." --root "..m.rootoptions.." --runner="..m.runner.." -o %{wks.location}/generated/test_root.cpp"
+ m.exepath.." --root "..m.rootoptions.." --template ../../../source/test_main.tpl -o %{wks.location}/generated/test_root.cpp"
}
cleancommands { "{DELETE} %{wks.location}/generated/test_root.cpp" }
end
diff --git a/source/test_main.tpl b/source/test_main.tpl
new file mode 100644
index 0000000000..91c7039cdc
--- /dev/null
+++ b/source/test_main.tpl
@@ -0,0 +1,39 @@
+// vim: set filetype=cpp :
+
+#include <cxxtest/ErrorPrinter.h>
+#include <cxxtest/XmlPrinter.h>
+
+#include <ps/DllLoader.h>
+#include <cstring>
+#include <iostream>
+
+int main(int argc, char **argv)
+{
+
+ bool xml = false;
+
+ for (int i = 1; i < argc; ++i)
+ {
+ if (std::strcmp(argv[i], "--libdir") == 0)
+ {
+ // check option arg
+ DllLoader::OverrideLibdir(argv[++i]);
+ }
+ else if (std::strcmp(argv[i], "--xml") == 0)
+ {
+ xml = true;
+ }
+ // else fail and print help
+ }
+
+ if (xml)
+ {
+ std::ofstream out{"testresults.xml"};
+ return CxxTest::XmlPrinter(out).run();
+ }
+ else
+ return CxxTest::ErrorPrinter().run();
+}
+
+// The CxxTest "world"
+<CxxTest world>
--
2.45.3

View File

@ -0,0 +1 @@
RWTWLbO12+ig3lUExIor3xd6DdZaYFEozn8Bu8nIzY3ImuRYQszIQyyy

View File

@ -13,7 +13,6 @@
(might be needed for some mods)</flag>
</use>
<upstream>
<remote-id type="github">0ad/0ad</remote-id>
<remote-id type="sourceforge">zero-ad</remote-id>
</upstream>
</pkgmetadata>