summaryrefslogtreecommitdiff
path: root/games-strategy
diff options
context:
space:
mode:
Diffstat (limited to 'games-strategy')
-rw-r--r--games-strategy/Manifest.gzbin8240 -> 8241 bytes
-rw-r--r--games-strategy/freeciv/Manifest6
-rw-r--r--games-strategy/freeciv/files/freeciv-3.1.0_beta2-lua-search.patch21
-rw-r--r--games-strategy/freeciv/freeciv-3.1.0_beta2.ebuild198
-rw-r--r--games-strategy/freeciv/freeciv-9999.ebuild194
-rw-r--r--games-strategy/freeciv/metadata.xml11
6 files changed, 427 insertions, 3 deletions
diff --git a/games-strategy/Manifest.gz b/games-strategy/Manifest.gz
index 74134f3926c8..461440556304 100644
--- a/games-strategy/Manifest.gz
+++ b/games-strategy/Manifest.gz
Binary files differ
diff --git a/games-strategy/freeciv/Manifest b/games-strategy/freeciv/Manifest
index 744b02bbb445..5d5b5614b346 100644
--- a/games-strategy/freeciv/Manifest
+++ b/games-strategy/freeciv/Manifest
@@ -1,3 +1,7 @@
+AUX freeciv-3.1.0_beta2-lua-search.patch 871 BLAKE2B a3ac0311ccce20edee9ab7882a1e16a1fbd03ffe2e41c9df26c21c17e4a64eb5b1222107e5c4868cc83e8590772d8aed67ba4ba6ad94b8178d8de06925c4b782 SHA512 f69823866dac9b4ec3301a2457c88d0b4f2fc56002a11997ba36bcf72ee05059522fe0c36186371c18f5488f5ef1ba15666f064f98fa6eeb8a4fccc63254085c
DIST freeciv-3.0.1.tar.xz 33528292 BLAKE2B e19cae8a02aa4b9afc2895560aa7a8d6135a63a0e757c348a75e72522448a026874f8f0120448b38ca2fee0ecc42dd04d80345d9877554168ad07ca2a20e5dcc SHA512 0f28aa7eb6adc2c4fe2af31265965ec30b4ea4f12121c4240ca896070f4ea574db58f02240e74822b9d498e112bcdb7036bb69f3d0b33cea5fec724e9e47da34
+DIST freeciv-3.1.0_beta2.tar.gz 127527752 BLAKE2B 457e01787e2dccb4862de5519a4ea51bcfe240c0948e2cd97b09ae6d4e2c27d4196329326cd7c0489ce1e37dbc548f4f31fcd7c5f57b15b53b49dd6e54fef032 SHA512 2b15134454bf7ca885287985bb6d17a31f6cbfdec87fa8e6fd7fce000a2bfc1fa888dd7a2e244df4460d08011e87876800190a9fa8ea825789eec0e434348920
EBUILD freeciv-3.0.1-r1.ebuild 5072 BLAKE2B 492c5efcb52ce1db78445b65904da86cd0137dc6355df881e9bddfca6f3fce5271068eb775f48a0c8af6d9fdca2efbb8f129b64ea9f4f68a232c5eb59a084f19 SHA512 be1617164e1a1f9fd62f0876112d5a65b54a33fb2257fed51dd185aaad80789386cbc67e16e119ab6492581a54d9157456fb91c9ca75be7ebf9d0d75c5c418e9
-MISC metadata.xml 1032 BLAKE2B cbb77e1508bd7149685571dddad89fde9e9f4f8e7c1893b689f508470e11892d5f363af4721e7a21d4026cb3338e161e527149f661020e8d4c04dae9550b6658 SHA512 88937e8b06608fadb6448c7bf61b3f095dab2c5962535d609fc341343e8e27171da8f247ecbd160df49ab6dddc10e17136754cab4624102df49da6a026e2df94
+EBUILD freeciv-3.1.0_beta2.ebuild 5377 BLAKE2B 5c8d24cc790b0c304f94e93ad89e213dc6a28eb94aa910cd31598db8d3bb1d3b410b2f346421139f0a92fb62813f4900d418a9c9a7d9b00cd1a8b41b1ce9dc66 SHA512 a8edbb2ac482e63c5af83303d4bfb08a5e61f4e9524f12d7ad296a034e4e5a82272f87ba6f27678960a1b2d6222b7066c729791d9457211bad2a1d7a39341a6c
+EBUILD freeciv-9999.ebuild 5327 BLAKE2B 9b7a7c2c8eb08546a641f9b8b509b529143c7cadb8925043111c37cc2849100f5fd98cbe9b357485caeb0f20add5b39a99b58e6c21e58e3a85746d0c46d7eba2 SHA512 65254409713dcda09864e323e1aafb1eb4bd6f4d1000e04871677e9b3eb1c3ccbaf8718a49f2ba8031ff587bbb855879643b137e391cbdbcee414cc5bc6fe150
+MISC metadata.xml 1368 BLAKE2B 06553a96669f8660232e00168f4fe6b5254281fbcb6b69ae7eca4f7f6837580a7814790ce93c2ffacda2d5b2c9c21b5681badcdd25a12828bb21879225983382 SHA512 75abd1ffcffabadc3a989d7cf0b0c9e968e291495fa0108041921ab4ce7a421e7718e0edfb5276f271529155cf6a389becc4119e41f4f8002fb05af315487fb7
diff --git a/games-strategy/freeciv/files/freeciv-3.1.0_beta2-lua-search.patch b/games-strategy/freeciv/files/freeciv-3.1.0_beta2-lua-search.patch
new file mode 100644
index 000000000000..e7c8123f9985
--- /dev/null
+++ b/games-strategy/freeciv/files/freeciv-3.1.0_beta2-lua-search.patch
@@ -0,0 +1,21 @@
+This patches meson.build to enable it to find lua in any of its
+many wonderous hiding places. It also bumps the meson version so that
+there's a ton less boilerplate to do so.
+--- a/meson.build
++++ b/meson.build
+@@ -1,5 +1,5 @@
+
+-project('freeciv', ['c', 'cpp'], meson_version: '>= 0.57.0')
++project('freeciv', ['c', 'cpp'], meson_version: '>= 0.60.0')
+
+ if not get_option('ack_experimental')
+ error('Autotools are still the only fully supported way to build freeciv.\nSet configure option "ack_experimental" to true if you really want to do experimental meson build.\n' +
+@@ -436,7 +436,7 @@ endif
+ icu_dep = dependency('icu-uc')
+
+ syslua = get_option('syslua')
+-lua_dep_tmp = dependency('lua-5.4', required:false)
++lua_dep_tmp = dependency('lua-5.4', 'lua-54', 'lua54', 'lua5.4', required:false)
+
+ if syslua != 'false' and lua_dep_tmp.found()
+ lua_inc_path = []
diff --git a/games-strategy/freeciv/freeciv-3.1.0_beta2.ebuild b/games-strategy/freeciv/freeciv-3.1.0_beta2.ebuild
new file mode 100644
index 000000000000..bf93bfe2a9ee
--- /dev/null
+++ b/games-strategy/freeciv/freeciv-3.1.0_beta2.ebuild
@@ -0,0 +1,198 @@
+# Copyright 1999-2023 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+LUA_COMPAT=( lua5-4 )
+
+inherit desktop lua-single meson xdg
+
+DESCRIPTION="Multiplayer strategy game (Civilization Clone)"
+HOMEPAGE="http://www.freeciv.org/"
+
+if [[ ${PV} == 9999 ]] ; then
+ inherit git-r3
+ EGIT_REPO_URI="https://github.com/freeciv/freeciv/"
+else
+ MY_PV="R${PV//./_}"
+ SRC_URI="https://github.com/freeciv/freeciv/archive/refs/tags/${MY_PV}.tar.gz -> ${P}.tar.gz"
+ KEYWORDS="~amd64 ~ppc64 ~x86"
+ MY_P="${PN}-${MY_PV}"
+ S="${WORKDIR}/${MY_P}"
+fi
+
+LICENSE="GPL-2+"
+SLOT="0"
+IUSE="dedicated gtk3 gtk4 json mapimg modpack mysql nls +qt5 qt6 readline rule-editor sdl +sound +system-lua web-server "
+
+# I'm pretty sure that you can't build both qt flavours at the same time
+REQUIRED_USE="
+ system-lua? ( ${LUA_REQUIRED_USE} )
+ !dedicated? ( || ( gtk3 gtk4 qt5 qt6 sdl ) )
+ qt5? ( !qt6 )
+ qt6? ( !qt5 )
+"
+
+RDEPEND="
+ app-arch/bzip2
+ app-arch/xz-utils
+ app-arch/zstd:=
+ dev-db/sqlite:3
+ dev-libs/icu:=
+ net-misc/curl
+ sys-devel/libtool
+ sys-libs/zlib
+ !dedicated? (
+ media-libs/libpng
+ gtk3? ( x11-libs/gtk+:3 )
+ gtk4? ( gui-libs/gtk:4 )
+ mapimg? ( media-gfx/imagemagick:= )
+ nls? ( virtual/libintl )
+ qt5? (
+ dev-qt/qtcore:5
+ dev-qt/qtgui:5
+ dev-qt/qtwidgets:5
+ )
+ qt6? (
+ dev-qt/qtbase:6[gui,widgets]
+ )
+ sdl? (
+ media-libs/libsdl2[video]
+ media-libs/sdl2-gfx
+ media-libs/sdl2-image[png]
+ media-libs/sdl2-ttf
+ )
+ sound? (
+ media-libs/libsdl2[sound]
+ media-libs/sdl2-mixer[vorbis]
+ )
+ )
+ json? ( dev-libs/jansson:= )
+ readline? ( sys-libs/readline:= )
+ system-lua? (
+ ${LUA_DEPS}
+ )
+"
+DEPEND="${RDEPEND}
+ !dedicated? ( x11-base/xorg-proto )
+"
+# Calls gzip during build
+BDEPEND="
+ app-arch/gzip
+ virtual/pkgconfig
+ nls? ( sys-devel/gettext )
+"
+
+PATCHES=(
+ "${FILESDIR}"/${P}-lua-search.patch
+)
+
+pkg_setup() {
+ use system-lua && lua-single_pkg_setup
+}
+
+src_configure() {
+ local myclient=() emesonargs=() myfcmp=()
+
+ # Upstream considers meson "experimental" until 3.2.0 according to their roadmap
+ emesonargs+=( -Dack_experimental=true )
+
+ # meson build drops the ability to _not_ build a server in favour
+ # of optionally replacing the server binary the freeciv-web backend
+ emesonargs+=(
+ $(meson_use web-server freeciv-web)
+ )
+
+ # Select any client backends that we want enabled; dedicated server shouldn't build a UI
+ # for sanity we'll build the modpack bin with the same UIs as the client.
+ # 'fcmp' = freeciv modpack (client) - gtk3, qt, cli, gtk4
+ freeciv_enable_ui() {
+ local flag=$1
+ local client_name=${2:-${flag}}
+ local fcmp_name=${3:-${client_name}}
+
+ if use ${flag} ; then
+ myclient+=( ${client_name} )
+ use modpack && myfcmp+=( ${fcmp_name} )
+ fi
+ }
+
+ if ! use dedicated ; then
+ # there's no SDL modpack backend; rather than incidentally pull in GTK3 (as is default)
+ # let's explicitly set the backend to CLI
+ freeciv_enable_ui sdl sdl2 cli
+ freeciv_enable_ui gtk3 gtk3.22 gtk3
+ freeciv_enable_ui gtk4
+ freeciv_enable_ui qt5 qt
+ freeciv_enable_ui qt6 qt
+ use qt5 && emesonargs+=( -Dqtver=qt5 )
+ use qt6 && emesonargs+=( -Dqtver=qt6 )
+ else
+ if use modpack ; then
+ myfcmp+=( cli )
+ fi
+ fi
+
+ # the client and fpmc arrays are now populated (or not for dedicated); let's add them to emesonargs
+ emesonargs+=(
+ -Dclients=$(echo ${myclient[*]} | sed 's/ /,/g')
+ -Dfcmp=$(echo ${myfcmp[*]} | sed 's/ /,/g')
+ )
+
+ # If we're building a live ebuild, we want to include the git revision in the version string
+ if [[ ${PV} == 9999 ]] ; then
+ emesonargs+=( -Dgitrev=true )
+ fi
+
+ # Anything that can be trivially set by meson_use goes here
+ emesonargs+=(
+ $(meson_use json json-protocol)
+ $(meson_use mapimg mwand)
+ $(meson_use nls)
+ $(meson_use readline)
+ $(meson_use rule-editor ruledit)
+ $(meson_use sound audio)
+ $(meson_use system-lua syslua)
+ )
+
+ meson_src_configure
+}
+
+src_install() {
+
+ if use dedicated ; then
+ rm -rf "${ED}"/usr/share/pixmaps || die
+ rm -f "${ED}"/usr/share/man/man6/freeciv-{client,gtk2,gtk3,modpack,qt,sdl,xaw}* || die
+ fi
+ # Create and install the html manual and then cleanup the tool because it's useless.
+ # TODO: for proper localisation this should be run during postinst but
+ # that would require a lot of work to avoid orphan files.
+ # freeciv-manual only supports one ruleset argument at a time.
+ for RULESET in alien civ1 civ2 civ2civ3 classic experimental multiplayer sandbox
+ do
+ $(find "${WORKDIR}" -type d -maxdepth 1 -mindepth 1 -iname '*-build')/freeciv-manual -r ${RULESET} || die
+ docinto html/rulesets/${RULESET}
+ dodoc ${RULESET}*.html
+ done
+ if use sdl ; then
+ make_desktop_entry freeciv-sdl "Freeciv (SDL)" freeciv-client
+ else
+ rm -f "${ED}"/usr/share/man/man6/freeciv-sdl* || die
+ fi
+ rm -f "${ED}"/usr/share/man/man6/freeciv-xaw* || die
+ find "${ED}" -name "freeciv-manual*" -delete || die
+
+ rm -f "${ED}/usr/$(get_libdir)"/*.a || die
+ find "${ED}" -type f -name "*.la" -delete || die
+ meson_src_install
+}
+
+pkg_postinst() {
+ if [[ -z ${REPLACING_VERSIONS} ]]; then
+ einfo "There are a number of supported authentication backends."
+ einfo "sqlite3 is the default, however dedicated servers may wish to"
+ einfo "use another supported backend; please consult the documentation"
+ einfo "to configure freeciv for a particular backend:"
+ einfo "https://github.com/freeciv/freeciv/blob/main/doc/README.fcdb"
+ fi
+}
diff --git a/games-strategy/freeciv/freeciv-9999.ebuild b/games-strategy/freeciv/freeciv-9999.ebuild
new file mode 100644
index 000000000000..0b65cd815449
--- /dev/null
+++ b/games-strategy/freeciv/freeciv-9999.ebuild
@@ -0,0 +1,194 @@
+# Copyright 1999-2023 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+LUA_COMPAT=( lua5-4 )
+
+inherit desktop lua-single meson xdg
+
+DESCRIPTION="Multiplayer strategy game (Civilization Clone)"
+HOMEPAGE="http://www.freeciv.org/"
+
+if [[ ${PV} == 9999 ]] ; then
+ inherit git-r3
+ EGIT_REPO_URI="https://github.com/freeciv/freeciv/"
+else
+ MY_PV="R${PV//./_}"
+ SRC_URI="https://github.com/freeciv/freeciv/archive/refs/tags/${MY_PV}.tar.gz -> ${P}.tar.gz"
+ KEYWORDS="~amd64 ~ppc64 ~x86"
+ MY_P="${PN}-${MY_PV}"
+ S="${WORKDIR}/${MY_P}"
+fi
+
+LICENSE="GPL-2+"
+SLOT="0"
+IUSE="dedicated gtk3 gtk4 json mapimg modpack mysql nls +qt5 qt6 readline rule-editor sdl +sound +system-lua web-server "
+
+# I'm pretty sure that you can't build both qt flavours at the same time
+REQUIRED_USE="
+ system-lua? ( ${LUA_REQUIRED_USE} )
+ !dedicated? ( || ( gtk3 gtk4 qt5 qt6 sdl ) )
+ qt5? ( !qt6 )
+ qt6? ( !qt5 )
+"
+
+RDEPEND="
+ app-arch/bzip2
+ app-arch/xz-utils
+ app-arch/zstd:=
+ dev-db/sqlite:3
+ dev-libs/icu:=
+ net-misc/curl
+ sys-devel/libtool
+ sys-libs/zlib
+ !dedicated? (
+ media-libs/libpng
+ gtk3? ( x11-libs/gtk+:3 )
+ gtk4? ( gui-libs/gtk:4 )
+ mapimg? ( media-gfx/imagemagick:= )
+ nls? ( virtual/libintl )
+ qt5? (
+ dev-qt/qtcore:5
+ dev-qt/qtgui:5
+ dev-qt/qtwidgets:5
+ )
+ qt6? (
+ dev-qt/qtbase:6[gui,widgets]
+ )
+ sdl? (
+ media-libs/libsdl2[video]
+ media-libs/sdl2-gfx
+ media-libs/sdl2-image[png]
+ media-libs/sdl2-ttf
+ )
+ sound? (
+ media-libs/libsdl2[sound]
+ media-libs/sdl2-mixer[vorbis]
+ )
+ )
+ json? ( dev-libs/jansson:= )
+ readline? ( sys-libs/readline:= )
+ system-lua? (
+ ${LUA_DEPS}
+ )
+"
+DEPEND="${RDEPEND}
+ !dedicated? ( x11-base/xorg-proto )
+"
+# Calls gzip during build
+BDEPEND="
+ app-arch/gzip
+ virtual/pkgconfig
+ nls? ( sys-devel/gettext )
+"
+
+pkg_setup() {
+ use system-lua && lua-single_pkg_setup
+}
+
+src_configure() {
+ local myclient=() emesonargs=() myfcmp=()
+
+ # Upstream considers meson "experimental" until 3.2.0 according to their roadmap
+ emesonargs+=( -Dack_experimental=true )
+
+ # meson build drops the ability to _not_ build a server in favour
+ # of optionally replacing the server binary the freeciv-web backend
+ emesonargs+=(
+ $(meson_use web-server freeciv-web)
+ )
+
+ # Select any client backends that we want enabled; dedicated server shouldn't build a UI
+ # for sanity we'll build the modpack bin with the same UIs as the client.
+ # 'fcmp' = freeciv modpack (client) - gtk3, qt, cli, gtk4
+ freeciv_enable_ui() {
+ local flag=$1
+ local client_name=${2:-${flag}}
+ local fcmp_name=${3:-${client_name}}
+
+ if use ${flag} ; then
+ myclient+=( ${client_name} )
+ use modpack && myfcmp+=( ${fcmp_name} )
+ fi
+ }
+
+ if ! use dedicated ; then
+ # there's no SDL modpack backend; rather than incidentally pull in GTK3 (as is default)
+ # let's explicitly set the backend to CLI
+ freeciv_enable_ui sdl sdl2 cli
+ freeciv_enable_ui gtk3 gtk3.22 gtk3
+ freeciv_enable_ui gtk4
+ freeciv_enable_ui qt5 qt
+ freeciv_enable_ui qt6 qt
+ use qt5 && emesonargs+=( -Dqtver=qt5 )
+ use qt6 && emesonargs+=( -Dqtver=qt6 )
+ else
+ if use modpack ; then
+ myfcmp+=( cli )
+ fi
+ fi
+
+ # the client and fpmc arrays are now populated (or not for dedicated); let's add them to emesonargs
+ emesonargs+=(
+ -Dclients=$(echo ${myclient[*]} | sed 's/ /,/g')
+ -Dfcmp=$(echo ${myfcmp[*]} | sed 's/ /,/g')
+ )
+
+ # If we're building a live ebuild, we want to include the git revision in the version string
+ if [[ ${PV} == 9999 ]] ; then
+ emesonargs+=( -Dgitrev=true )
+ fi
+
+ # Anything that can be trivially set by meson_use goes here
+ emesonargs+=(
+ $(meson_use json json-protocol)
+ $(meson_use mapimg mwand)
+ $(meson_use nls)
+ $(meson_use readline)
+ $(meson_use rule-editor ruledit)
+ $(meson_use sound audio)
+ $(meson_use system-lua syslua)
+ )
+
+ meson_src_configure
+}
+
+src_install() {
+
+ if use dedicated ; then
+ rm -rf "${ED}"/usr/share/pixmaps || die
+ rm -f "${ED}"/usr/share/man/man6/freeciv-{client,gtk2,gtk3,modpack,qt,sdl,xaw}* || die
+ fi
+ # Create and install the html manual and then cleanup the tool because it's useless.
+ # TODO: for proper localisation this should be run during postinst but
+ # that would require a lot of work to avoid orphan files.
+ # freeciv-manual only supports one ruleset argument at a time.
+ for RULESET in alien civ1 civ2 civ2civ3 classic experimental multiplayer sandbox
+ do
+ $(find "${WORKDIR}" -type d -maxdepth 1 -mindepth 1 -iname '*-build')/freeciv-manual -r ${RULESET} || die
+ docinto html/rulesets/${RULESET}
+ dodoc ${RULESET}*.html
+ done
+ if use sdl ; then
+ make_desktop_entry freeciv-sdl "Freeciv (SDL)" freeciv-client
+ else
+ rm -f "${ED}"/usr/share/man/man6/freeciv-sdl* || die
+ fi
+ rm -f "${ED}"/usr/share/man/man6/freeciv-xaw* || die
+ find "${ED}" -name "freeciv-manual*" -delete || die
+
+ rm -f "${ED}/usr/$(get_libdir)"/*.a || die
+ find "${ED}" -type f -name "*.la" -delete || die
+ meson_src_install
+}
+
+pkg_postinst() {
+ if [[ -z ${REPLACING_VERSIONS} ]]; then
+ einfo "There are a number of supported authentication backends."
+ einfo "sqlite3 is the default, however dedicated servers may wish to"
+ einfo "use another supported backend; please consult the documentation"
+ einfo "to configure freeciv for a particular backend:"
+ einfo "https://github.com/freeciv/freeciv/blob/main/doc/README.fcdb"
+ fi
+}
diff --git a/games-strategy/freeciv/metadata.xml b/games-strategy/freeciv/metadata.xml
index 35c7dccc5b31..1c8e7e53bd9e 100644
--- a/games-strategy/freeciv/metadata.xml
+++ b/games-strategy/freeciv/metadata.xml
@@ -9,19 +9,26 @@
<flag name="aimodules">Support for dynamically loadable AI
modules (server-side)</flag>
<flag name="auth">Add authentication capability via
- mysql, postgres or sqlite3</flag>
+ mysql, postgres, or sqlite3</flag>
+ <flag name="gtk3">Build the gtk3 client</flag>
+ <flag name="gtk4">Build the gtk4 client</flag>
+ <flag name="json">Add support for JSON via
+ <pkg>dev-libs/jansson</pkg></flag>
<flag name="mapimg">Additional mag image toolkit
via <pkg>media-gfx/imagemagick</pkg></flag>
<flag name="modpack">Build the freeciv-modpack-program
to download/install mods</flag>
+ <flag name="rule-editor">Build ruleset editor</flag>
<flag name="server">Enable server support. Disabling this
will also make it impossible to start local games.</flag>
<flag name="sound">Add support for sound provided by
<pkg>media-libs/sdl-mixer</pkg></flag>
<flag name="system-lua">Use <pkg>dev-lang/lua</pkg> instead of
the bundled liblua</flag>
+ <flag name="web-server">Build the freeciv-web server in place
+ of the freeciv server</flag>
</use>
<upstream>
- <remote-id type="sourceforge">freeciv</remote-id>
+ <remote-id type="github">freeciv/freeciv</remote-id>
</upstream>
</pkgmetadata>