repo/gentoo:master commit in: games-strategy/freeciv/, games-strategy/freeciv/files/
"Matt Jolly" <[email protected]> Wed, 05 Aug 2026 10:48:59 +0000 (UTC)
| Newsgroups | gmane.linux.gentoo.cvs |
|---|---|
| Message-ID | <1785926719.9a6c0e2bcd4bc3fb0987c1f9691d11eb90b00c19.kangie@gentoo> |
commit: 9a6c0e2bcd4bc3fb0987c1f9691d11eb90b00c19
Author: Matt Jolly <kangie <AT> gentoo <DOT> org>
AuthorDate: Wed Aug 5 08:24:32 2026 +0000
Commit: Matt Jolly <kangie <AT> gentoo <DOT> org>
CommitDate: Wed Aug 5 10:45:19 2026 +0000
URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=9a6c0e2b
games-strategy/freeciv: add 3.2.5
Bug: https://bugs.gentoo.org/971045
Closes: https://bugs.gentoo.org/959677
Signed-off-by: Matt Jolly <kangie <AT> gentoo.org>
games-strategy/freeciv/Manifest | 1 +
.../freeciv/files/freeciv-3.2.5-sdl2-include.patch | 117 +++++++++++++++++++++
...freeciv-9999.ebuild => freeciv-3.2.3-r1.ebuild} | 9 +-
.../{freeciv-9999.ebuild => freeciv-3.2.5.ebuild} | 8 +-
games-strategy/freeciv/freeciv-9999.ebuild | 4 +-
5 files changed, 133 insertions(+), 6 deletions(-)
diff --git a/games-strategy/freeciv/Manifest b/games-strategy/freeciv/Manifest
index e31cc910bc38..e5e64bec29d4 100644
--- a/games-strategy/freeciv/Manifest
+++ b/games-strategy/freeciv/Manifest
@@ -1,2 +1,3 @@
DIST freeciv-3.1.4.tar.gz 128914453 BLAKE2B 60a371692e74434e8f8a0311b3c4732cb4a0199ea426f06eaac87d0f5982239f9bec069441f5897921907edafe6e5ab4492dd525b606eaeb3a4de1976d6c5766 SHA512 1a94861e4298e6fa81347a5625ae5d9fea1f2ee0195265a8b53a1c2255d1b02010140d3f48fc3474ae4aa188db16f12b84b7a112d37e2ed7bd474f250a50a97a
DIST freeciv-3.2.3.tar.gz 142109424 BLAKE2B 3d5c3c7379c646231da9c6d482fad0ac802d0a04a244e76fe76a855372687e403011f88708f1777c47f68c5e0e61fcf7c81351bd069e9ee29a0d8ac29acc6e8f SHA512 04a468f17ef42a2cacd8eb59153ade17c0445545574be66c08c833b88da057ef9780540657b256a9661f493eec3a4e9731a315f4aab3159593fcc49559f0cd24
+DIST freeciv-3.2.5.tar.gz 142217384 BLAKE2B 679f520a1213aec8ec7515e0d7ce1b9e67680dec9313f0c42808dcde9d57f5521f5024e09511b06f7635a72711ca9c8460f5168a1d4fbb83336fff8219f946c5 SHA512 ce35ba50d52d98ac24e2d370d7eb6f7d2b0a47f9a460d10468b55d165cb76edf65f645ea24d99293308b13dfbf3873ed11bfdf7854da02bdd6c0bfbfb061c01c
diff --git a/games-strategy/freeciv/files/freeciv-3.2.5-sdl2-include.patch b/games-strategy/freeciv/files/freeciv-3.2.5-sdl2-include.patch
new file mode 100644
index 000000000000..92d849ec4ee1
--- /dev/null
+++ b/games-strategy/freeciv/files/freeciv-3.2.5-sdl2-include.patch
@@ -0,0 +1,117 @@
+From 4e6a5716cb133c2a220acf206c440f457af36538 Mon Sep 17 00:00:00 2001
+From: Matt Jolly <[email protected]>
+Date: Wed, 5 Aug 2026 19:06:32 +1000
+Subject: [PATCH] Guard SDL2-only client includes and fix SDL3 exit audio loop
+
+The gtk3.22, gtk4, and qt clients previously unconditionally included
+SDL2, resulting in compilation failures on a system that successfully
+configured for SDL3 audio.
+
+Additionally, client/audio.c now uses audio_stop_usage() during shutdown
+to prevent music-finished callbacks from restarting looping tracks on
+exit.
+
+Bug: https://bugs.gentoo.org/971045
+Bug: RM #2121
+Signed-off-by: Matt Jolly <[email protected]>
+---
+ client/audio.c | 5 +++--
+ client/gui-gtk-3.22/gui_main.c | 9 +++------
+ client/gui-gtk-4.0/gui_main.c | 9 +++------
+ client/gui-qt/gui_main.cpp | 9 +++------
+ 4 files changed, 12 insertions(+), 20 deletions(-)
+
+diff --git a/client/audio.c b/client/audio.c
+index 2b8687f50a..17aa086423 100644
+--- a/client/audio.c
++++ b/client/audio.c
+@@ -657,8 +657,9 @@ void audio_set_volume(double volume)
+ **************************************************************************/
+ void audio_shutdown(bool play_quit_tag)
+ {
+- /* Avoid infinite loop at end of game */
+- audio_stop();
++ /* Prevent music-finished callback from starting another looping track
++ * while exit waits for current audio to drain. */
++ audio_stop_usage();
+
+ if (play_quit_tag) {
+ audio_play_sound("e_client_quit", NULL, NULL);
+diff --git a/client/gui-gtk-3.22/gui_main.c b/client/gui-gtk-3.22/gui_main.c
+index fcc70d2e9b..b62b67547e 100644
+--- a/client/gui-gtk-3.22/gui_main.c
++++ b/client/gui-gtk-3.22/gui_main.c
+@@ -15,17 +15,14 @@
+ #include <fc_config.h>
+ #endif
+
+-#ifdef AUDIO_SDL
+-/* Though it would happily compile without this include,
+- * it is needed for sound to work.
+- * It defines "main" macro to rename our main() so that
+- * it can install SDL's own. */
++#if defined(AUDIO_SDL) && !defined(AUDIO_SDL3)
++/* SDL2 audio backend requires this include so SDL can rewrite main(). */
+ #ifdef SDL2_PLAIN_INCLUDE
+ #include <SDL.h>
+ #else /* PLAIN_INCLUDE */
+ #include <SDL2/SDL.h>
+ #endif /* PLAIN_INCLUDE */
+-#endif /* AUDIO_SDL */
++#endif /* AUDIO_SDL && !AUDIO_SDL3 */
+
+ #ifdef HAVE_LOCALE_H
+ #include <locale.h>
+diff --git a/client/gui-gtk-4.0/gui_main.c b/client/gui-gtk-4.0/gui_main.c
+index aec8ba524d..78cf24a248 100644
+--- a/client/gui-gtk-4.0/gui_main.c
++++ b/client/gui-gtk-4.0/gui_main.c
+@@ -15,17 +15,14 @@
+ #include <fc_config.h>
+ #endif
+
+-#ifdef AUDIO_SDL
+-/* Though it would happily compile without this include,
+- * it is needed for sound to work.
+- * It defines "main" macro to rename our main() so that
+- * it can install SDL's own. */
++#if defined(AUDIO_SDL) && !defined(AUDIO_SDL3)
++/* SDL2 audio backend requires this include so SDL can rewrite main(). */
+ #ifdef SDL2_PLAIN_INCLUDE
+ #include <SDL.h>
+ #else /* PLAIN_INCLUDE */
+ #include <SDL2/SDL.h>
+ #endif /* PLAIN_INCLUDE */
+-#endif /* AUDIO_SDL */
++#endif /* AUDIO_SDL && !AUDIO_SDL3 */
+
+ #ifdef HAVE_LOCALE_H
+ #include <locale.h>
+diff --git a/client/gui-qt/gui_main.cpp b/client/gui-qt/gui_main.cpp
+index 50bb12b70f..620252b735 100644
+--- a/client/gui-qt/gui_main.cpp
++++ b/client/gui-qt/gui_main.cpp
+@@ -15,17 +15,14 @@
+ #include <fc_config.h>
+ #endif
+
+-#ifdef AUDIO_SDL
+-/* Though it would happily compile without this include,
+- * it is needed for sound to work.
+- * It defines "main" macro to rename our main() so that
+- * it can install SDL's own. */
++#if defined(AUDIO_SDL) && !defined(AUDIO_SDL3)
++/* SDL2 audio backend requires this include so SDL can rewrite main(). */
+ #ifdef SDL2_PLAIN_INCLUDE
+ #include <SDL.h>
+ #else // PLAIN_INCLUDE
+ #include <SDL2/SDL.h>
+ #endif // PLAIN_INCLUDE
+-#endif // AUDIO_SDL
++#endif // AUDIO_SDL && !AUDIO_SDL3
+
+ #include <stdio.h>
+
+--
+2.55.0
+
diff --git a/games-strategy/freeciv/freeciv-9999.ebuild b/games-strategy/freeciv/freeciv-3.2.3-r1.ebuild
similarity index 96%
copy from games-strategy/freeciv/freeciv-9999.ebuild
copy to games-strategy/freeciv/freeciv-3.2.3-r1.ebuild
index c58ea93ec1b5..9c32c711738e 100644
--- a/games-strategy/freeciv/freeciv-9999.ebuild
+++ b/games-strategy/freeciv/freeciv-3.2.3-r1.ebuild
@@ -17,7 +17,7 @@ else
MY_PV="R${PV//./_}"
SRC_URI="https://github.com/freeciv/freeciv/archive/refs/tags/${MY_PV}.tar.gz -> ${P}.tar.gz"
if [[ ${PV} != *_beta* ]]; then
- KEYWORDS="~amd64 ~ppc64 ~x86"
+ KEYWORDS="~amd64 ~arm64"
fi
MY_P="${PN}-${MY_PV}"
S="${WORKDIR}/${MY_P}"
@@ -82,6 +82,11 @@ pkg_setup() {
use svg && use !qt6 && einfo "SVG flags only supported in qt6 client, ignoring"
}
+PATCHES=(
+ "${FILESDIR}/${P}-widget_id-truncation.patch"
+ "${FILESDIR}/${PN}-3.2.5-sdl2-include.patch"
+)
+
src_prepare() {
# Upstream's meson.build is not very friendly to our needs
sed -i -e "s:doc/freeciv:doc/${PF}:" meson.build || die
@@ -179,7 +184,7 @@ src_install() {
# that would require a lot of work to avoid orphan files.
# freeciv-manual only supports one ruleset argument at a time.
elog "Generating html manual..."
- for RULESET in alien civ1 civ2 civ2civ3 classic goldkeep multiplayer sandbox
+ for RULESET in alien civ1 civ2 civ2civ3 classic multiplayer sandbox
do
$(find "${WORKDIR}" -type d -maxdepth 1 -mindepth 1 -iname '*-build')/freeciv-manual -r ${RULESET} ||
die "Unable to generate HTML output for ${RULESET}"
diff --git a/games-strategy/freeciv/freeciv-9999.ebuild b/games-strategy/freeciv/freeciv-3.2.5.ebuild
similarity index 97%
copy from games-strategy/freeciv/freeciv-9999.ebuild
copy to games-strategy/freeciv/freeciv-3.2.5.ebuild
index c58ea93ec1b5..8525188f750e 100644
--- a/games-strategy/freeciv/freeciv-9999.ebuild
+++ b/games-strategy/freeciv/freeciv-3.2.5.ebuild
@@ -17,7 +17,7 @@ else
MY_PV="R${PV//./_}"
SRC_URI="https://github.com/freeciv/freeciv/archive/refs/tags/${MY_PV}.tar.gz -> ${P}.tar.gz"
if [[ ${PV} != *_beta* ]]; then
- KEYWORDS="~amd64 ~ppc64 ~x86"
+ KEYWORDS="~amd64 ~arm64"
fi
MY_P="${PN}-${MY_PV}"
S="${WORKDIR}/${MY_P}"
@@ -77,6 +77,10 @@ BDEPEND="
nls? ( sys-devel/gettext )
"
+PATCHES=(
+ "${FILESDIR}/${P}-sdl2-include.patch"
+)
+
pkg_setup() {
use system-lua && lua-single_pkg_setup
use svg && use !qt6 && einfo "SVG flags only supported in qt6 client, ignoring"
@@ -179,7 +183,7 @@ src_install() {
# that would require a lot of work to avoid orphan files.
# freeciv-manual only supports one ruleset argument at a time.
elog "Generating html manual..."
- for RULESET in alien civ1 civ2 civ2civ3 classic goldkeep multiplayer sandbox
+ for RULESET in alien civ1 civ2 civ2civ3 classic multiplayer sandbox
do
$(find "${WORKDIR}" -type d -maxdepth 1 -mindepth 1 -iname '*-build')/freeciv-manual -r ${RULESET} ||
die "Unable to generate HTML output for ${RULESET}"
diff --git a/games-strategy/freeciv/freeciv-9999.ebuild b/games-strategy/freeciv/freeciv-9999.ebuild
index c58ea93ec1b5..1ff769133997 100644
--- a/games-strategy/freeciv/freeciv-9999.ebuild
+++ b/games-strategy/freeciv/freeciv-9999.ebuild
@@ -17,7 +17,7 @@ else
MY_PV="R${PV//./_}"
SRC_URI="https://github.com/freeciv/freeciv/archive/refs/tags/${MY_PV}.tar.gz -> ${P}.tar.gz"
if [[ ${PV} != *_beta* ]]; then
- KEYWORDS="~amd64 ~ppc64 ~x86"
+ KEYWORDS="~amd64 ~arm64 ~ppc64 ~x86"
fi
MY_P="${PN}-${MY_PV}"
S="${WORKDIR}/${MY_P}"
@@ -179,7 +179,7 @@ src_install() {
# that would require a lot of work to avoid orphan files.
# freeciv-manual only supports one ruleset argument at a time.
elog "Generating html manual..."
- for RULESET in alien civ1 civ2 civ2civ3 classic goldkeep multiplayer sandbox
+ for RULESET in alien civ1 civ2 civ2civ3 classic multiplayer sandbox
do
$(find "${WORKDIR}" -type d -maxdepth 1 -mindepth 1 -iname '*-build')/freeciv-manual -r ${RULESET} ||
die "Unable to generate HTML output for ${RULESET}"