commit: fc8e5932686c1d2e8714fb53a792defa32dffbd8 Author: Ralph Sennhauser <ralph.sennhauser <AT> gmail <DOT> com> AuthorDate: Mon Jun 23 06:29:02 2025 +0000 Commit: Sam James <sam <AT> gentoo <DOT> org> CommitDate: Sun Oct 19 16:35:07 2025 +0000 URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=fc8e5932
games-strategy/0ad: Bump to version 0.27.1 Release fixes various issues around new Vulkan backend, fix for a performance issue on older hardware with spidermonkey 115, some packaging fixes for distributions, notably cmake 4 compatibility for bundled deps. Further disables stripping which Premake does by default. Further Premake5 beta5 breaks API, so force older Premake for now so Premake can be bumped without causing issues here. Add missing dep media-libs/freetype. Export PKG_CONFIG for cross builds. Backport boost 1.89 compat fix. Closes: https://bugs.gentoo.org/836313 Closes: https://bugs.gentoo.org/955631 Closes: https://bugs.gentoo.org/963569 Closes: https://bugs.gentoo.org/964384 Signed-off-by: Ralph Sennhauser <ralph.sennhauser <AT> gmail.com> Part-of: https://github.com/gentoo/gentoo/pull/43041 Closes: https://github.com/gentoo/gentoo/pull/43041 Signed-off-by: Sam James <sam <AT> gentoo.org> games-strategy/0ad/0ad-0.27.1.ebuild | 239 +++++++++++++++++++++ games-strategy/0ad/Manifest | 4 + .../0ad/files/0ad-0.27.1-fix-boost-compat.patch | 41 ++++ 3 files changed, 284 insertions(+) diff --git a/games-strategy/0ad/0ad-0.27.1.ebuild b/games-strategy/0ad/0ad-0.27.1.ebuild new file mode 100644 index 000000000000..14e7b3101d37 --- /dev/null +++ b/games-strategy/0ad/0ad-0.27.1.ebuild @@ -0,0 +1,239 @@ +# 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 ~ppc64 ~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 + <dev-util/premake-5.0.0_beta5: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/freetype + 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" + # https://gitea.wildfiregames.com/0ad/0ad/issues/8471 + "${FILESDIR}/${PN}-0.27.1-fix-boost-compat.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 PKG_CONFIG 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 6a43b7ed95fb..c477081f1d35 100644 --- a/games-strategy/0ad/Manifest +++ b/games-strategy/0ad/Manifest @@ -2,3 +2,7 @@ DIST 0ad-0.27.0-unix-build.tar.xz 152170976 BLAKE2B 85ff5b8090791cc2b8fd32cd86c5 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 +DIST 0ad-0.27.1-unix-build.tar.xz 153554512 BLAKE2B b593a86e6deaeb747d6f2f3b13d0c1e3b5f8f69d7ea181f5f17564d940bc5ce90a53e5513cfab0f97f552f0b53d7f7cda9dc805258545fe2d0f31675028cdda3 SHA512 7ddc355afed44511f3c62bb4119e308f921fc9624980a3171853d923042777eeb248a1ce326d3768f23596d75e8346025321d7d72d6fa3b1106a5818ca62b40d +DIST 0ad-0.27.1-unix-build.tar.xz.minisig 323 BLAKE2B 0195cbd966cffa3b2a75eeed6a30d6e65906c7ff5c5435b015716e81ce0636cf04926a7d079ee3a0b5e28268a82cf4a9c75ceac835bf4195f6d489fdf57238e4 SHA512 5ffb716aea31e7c4d7a4a49f4fca05b74d2b31d6b4f467d1c53597e35e792c124563aa603ca6f44f989a931b9bbddb0e830381c1b0ffdb3902dd54e25db472bf +DIST 0ad-0.27.1-unix-data.tar.xz 1367955136 BLAKE2B 508d43fba489ffdd1d6b5b51127d4a92a75f7b086f10d5673fddb99a33ff9d5007b393ec0e53e97b1401c0cc21794c00cdcab052023be715add29f3a35bc6981 SHA512 8d286d4c39bd79f634a71a7959cbc407299ffc1ad53fa27be0fca94195360d8a0c238f64137c1e32a4b5ba66a3a11b86aa8eeed8501253e91ec4767f1054a1d3 +DIST 0ad-0.27.1-unix-data.tar.xz.minisig 322 BLAKE2B 143d51b6c6c76f4d4a3410a5fb434724b08d5865a454b80b9e7b24540140392c92824918291149a29d8492b36c4e77206f34f68bec01a8b5907b0ee77d68a2dd SHA512 767d8d1c1159dceefb1712883130500f9e5808d3950766fe3e15a101c459d9d29afcbe4222d95809fa0dad759c253ff94394309d2f3ebd3fd5b8a49ff91bd37e diff --git a/games-strategy/0ad/files/0ad-0.27.1-fix-boost-compat.patch b/games-strategy/0ad/files/0ad-0.27.1-fix-boost-compat.patch new file mode 100644 index 000000000000..069411c94edd --- /dev/null +++ b/games-strategy/0ad/files/0ad-0.27.1-fix-boost-compat.patch @@ -0,0 +1,41 @@ +From 4c62138ce29c19911347ac15e264f4edced85a9c Mon Sep 17 00:00:00 2001 +From: Ralph Sennhauser <[email protected]> +Date: Sat, 18 Oct 2025 19:57:09 +0200 +Subject: [PATCH] Fix building against boost >=1.89 + +In boost-1.89 boost_system is a header-only library [1]. + +[1] https://github.com/boostorg/system/commit/7a495bb46d7ccd808e4be2a6589260839b0fd3a3 + +Fixes: #8471 +Signed-off-by: Ralph Sennhauser <[email protected]> +--- + build/premake/extern_libs5.lua | 12 +++++++++++- + 1 file changed, 11 insertions(+), 1 deletion(-) + +diff --git a/build/premake/extern_libs5.lua b/build/premake/extern_libs5.lua +index 4f51c2c0ed..dc53bc7772 100644 +--- a/build/premake/extern_libs5.lua ++++ b/build/premake/extern_libs5.lua +@@ -235,7 +235,17 @@ extern_lib_defs = { + -- The following are not strictly link dependencies on all systems, but + -- are included for compatibility with different versions of Boost + android_names = { "boost_filesystem-gcc-mt", "boost_system-gcc-mt" }, +- unix_names = { os.findlib("boost_filesystem-mt") and "boost_filesystem-mt" or "boost_filesystem", os.findlib("boost_system-mt") and "boost_system-mt" or "boost_system" }, ++ unix_names = { ++ os.findlib("boost_filesystem-mt") and "boost_filesystem-mt" or "boost_filesystem", ++ -- boost_system is header-only in boost >=1.89 ++ (function() ++ if os.findlib("boost_system-mt") then ++ return "boost_system-mt" ++ elseif os.findlib("boost_system-mt") then ++ return "boost_system" ++ end ++ end)() ++ }, + osx_names = { "boost_filesystem", "boost_system" }, + }) + end, +-- +2.51.0 +
