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@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@gentoo.org>
This commit is contained in:
Ralph Sennhauser
2025-06-23 08:29:02 +02:00
committed by Sam James
parent 1ecdf7fe2a
commit fc8e593268
3 changed files with 284 additions and 0 deletions

View File

@@ -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}
}

View File

@@ -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

View File

@@ -0,0 +1,41 @@
From 4c62138ce29c19911347ac15e264f4edced85a9c Mon Sep 17 00:00:00 2001
From: Ralph Sennhauser <ralph.sennhauser@gmail.com>
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 <ralph.sennhauser@gmail.com>
---
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