diff --git a/games-strategy/0ad/0ad-0.27.0.ebuild b/games-strategy/0ad/0ad-0.27.0.ebuild new file mode 100644 index 0000000000000..b6e8f577885b1 --- /dev/null +++ b/games-strategy/0ad/0ad-0.27.0.ebuild @@ -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} +} diff --git a/games-strategy/0ad/Manifest b/games-strategy/0ad/Manifest index 9f53ffa1fb547..22eeee97a103d 100644 --- a/games-strategy/0ad/Manifest +++ b/games-strategy/0ad/Manifest @@ -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 diff --git a/games-strategy/0ad/files/0ad-0.27.0-fix-tests.patch b/games-strategy/0ad/files/0ad-0.27.0-fix-tests.patch new file mode 100644 index 0000000000000..54899e96e97bc --- /dev/null +++ b/games-strategy/0ad/files/0ad-0.27.0-fix-tests.patch @@ -0,0 +1,78 @@ +From c9034c922a87e5692a1aca7262e1eff0598de9c3 Mon Sep 17 00:00:00 2001 +From: Ralph Sennhauser +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 +--- + 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 ++#include ++ ++#include ++#include ++#include ++ ++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" ++ +-- +2.45.3 + diff --git a/games-strategy/0ad/files/0ad-minisign.pub b/games-strategy/0ad/files/0ad-minisign.pub new file mode 100644 index 0000000000000..43ec846f7a005 --- /dev/null +++ b/games-strategy/0ad/files/0ad-minisign.pub @@ -0,0 +1 @@ +RWTWLbO12+ig3lUExIor3xd6DdZaYFEozn8Bu8nIzY3ImuRYQszIQyyy diff --git a/games-strategy/0ad/metadata.xml b/games-strategy/0ad/metadata.xml index c47c262ab2609..6139c6ebf2ead 100644 --- a/games-strategy/0ad/metadata.xml +++ b/games-strategy/0ad/metadata.xml @@ -13,7 +13,6 @@ (might be needed for some mods) - 0ad/0ad zero-ad