diff options
Diffstat (limited to 'games-strategy/freeciv/freeciv-9999.ebuild')
-rw-r--r-- | games-strategy/freeciv/freeciv-9999.ebuild | 63 |
1 files changed, 42 insertions, 21 deletions
diff --git a/games-strategy/freeciv/freeciv-9999.ebuild b/games-strategy/freeciv/freeciv-9999.ebuild index fd6bf4d53f31..0b5e2c809016 100644 --- a/games-strategy/freeciv/freeciv-9999.ebuild +++ b/games-strategy/freeciv/freeciv-9999.ebuild @@ -8,7 +8,7 @@ LUA_COMPAT=( lua5-4 ) inherit desktop lua-single meson xdg DESCRIPTION="Multiplayer strategy game (Civilization Clone)" -HOMEPAGE="https://www.freeciv.org/" +HOMEPAGE="https://www.freeciv.org/ https://github.com/freeciv/freeciv/" if [[ ${PV} == 9999 ]] ; then inherit git-r3 @@ -16,19 +16,22 @@ if [[ ${PV} == 9999 ]] ; then 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" + if [[ ${PV} != *_beta* ]]; then + KEYWORDS="~amd64 ~ppc64 ~x86" + fi 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" +IUSE="dedicated gtk3 gtk4 json mapimg modpack mysql nls +qt5 qt6 readline rule-editor sdl +server +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 ) ) + dedicated? ( !gtk3 !gtk4 !mapimg !nls !qt5 !qt6 !sdl !sound ) qt5? ( !qt6 ) qt6? ( !qt5 ) " @@ -37,10 +40,10 @@ RDEPEND=" app-arch/bzip2 app-arch/xz-utils app-arch/zstd:= + dev-build/libtool dev-db/sqlite:3 dev-libs/icu:= net-misc/curl - dev-build/libtool sys-libs/zlib !dedicated? ( media-libs/libpng @@ -87,17 +90,31 @@ pkg_setup() { use system-lua && lua-single_pkg_setup } +PATCHES=( + "${FILESDIR}"/${PN}-3.1.0_beta4-fix-manpage-install-location.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 + sed -i -e "/custom_target('gzip_ChangeLog/,+6d" meson.build || die + default +} + src_configure() { + # Docs here: https://github.com/freeciv/freeciv/blob/main/doc/INSTALL.meson 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) - ) + if use dedicated || use server ; then + emesonargs+=( -Dserver=enabled ) + elif use web-server; then + emesonargs+=( -Dserver=freeciv-web ) + else + emesonargs+=( -Dserver=disabled ) + fi # 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. @@ -156,31 +173,35 @@ 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 + meson_src_install # 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. + elog "Generating html manual..." 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 + + find "${ED}" -name "freeciv-manual*" -delete || die "Failed to remove freeciv-manual" + + if use dedicated ; then + elog "Tidying up dedicated server installation..." + find "${ED}"/usr/share/man/man6/ \ + -not \( -name 'freeciv.6' -o -name 'freeciv-ruledit.6' \ + -o -name 'freeciv-ruleup.6' -o -name 'freeciv-server.6' \) -mindepth 1 -delete || die else - rm -f "${ED}"/usr/share/man/man6/freeciv-sdl* || die + # sdl client needs some special handling + if use sdl ; then + make_desktop_entry freeciv-sdl "Freeciv (SDL)" freeciv-client + else + rm "${ED}"/usr/share/man/man6/freeciv-sdl2.6 || die + fi 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() { |