# Copyright 1999-2024 Gentoo Authors # Distributed under the terms of the GNU General Public License v2 EAPI=8 inherit desktop flag-o-matic toolchain-funcs wrapper xdg DESCRIPTION="Sauerbraten is a FOSS game engine (Cube 2) with freeware game data (Sauerbraten)" HOMEPAGE="http://sauerbraten.org/" SRC_URI="https://downloads.sourceforge.net/sauerbraten/sauerbraten/2020_11_29/sauerbraten_${PV//./_}_linux.tar.bz2" S="${WORKDIR}"/${PN} LICENSE="ZLIB freedist" SLOT="0" KEYWORDS="~amd64 ~x86" IUSE="debug dedicated server" DEPEND=" >=net-libs/enet-1.3.6:1.3 sys-libs/zlib !dedicated? ( media-libs/libsdl2[X,opengl] media-libs/sdl2-image media-libs/sdl2-mixer virtual/opengl virtual/glu x11-libs/libX11 ) " RDEPEND=" ${DEPEND} acct-group/sauerbraten dedicated? ( acct-user/sauerbraten ) " BDEPEND="virtual/pkgconfig" PATCHES=( # Respect CXXFLAGS, LDFLAGS "${FILESDIR}"/${PN}-2020.12.27-respect-FLAGS-don-t-strip-symbols.patch # Patch Makefile to use system enet instead of bundled "${FILESDIR}"/${PN}-2020.12.27-unbundle-enet.patch # Don't use freetype-config, it's obsolete "${FILESDIR}"/${PN}-2020.12.27-use-pkg-config-for-freetype2.patch # More sensible ways of including SDL_mixer and SDL_image. Game doesn't build w/o this. "${FILESDIR}"/${PN}-2020.12.29-includefix.patch ) src_prepare() { rm -rf sauerbraten_unix bin_unix src/{include,lib,vcpp} || die default # Fix links so they point to the correct directory sed -i -e 's:docs/::' README.html || die } src_compile() { tc-export CXX PKG_CONFIG if use debug ; then append-cppflags -D_DEBUG fi emake -C src \ master \ $(usex dedicated "server" "$(usex server "server client" "client")") } src_install() { local LIBEXECDIR="/usr/lib" local DATADIR="/usr/share/${PN}" local STATEDIR="/var/lib/${PN}" if ! use dedicated ; then # Install the game data insinto "${DATADIR}" doins -r data packages # Install the client executable exeinto "${LIBEXECDIR}" doexe src/sauer_client # Install the client wrapper make_wrapper "${PN}-client" "${LIBEXECDIR}/sauer_client -q\$HOME/.${PN} -r" "${DATADIR}" # Create menu entry newicon -s 256 data/cube.png ${PN}.png make_desktop_entry "${PN}-client" "Cube 2: Sauerbraten" fi # Install the server config files insinto "${STATEDIR}" doins server-init.cfg # Install the server executables exeinto "${LIBEXECDIR}" doexe src/sauer_master if use dedicated || use server ; then doexe src/sauer_server fi make_wrapper "${PN}-server" \ "${LIBEXECDIR}/sauer_server -k${DATADIR} -q${STATEDIR}" make_wrapper "${PN}-master" \ "${LIBEXECDIR}/sauer_master ${STATEDIR}" # Install the server init script cp "${FILESDIR}"/${PN}.init "${T}" || die sed -i \ -e "s:%SYSCONFDIR%:${STATEDIR}:g" \ -e "s:%LIBEXECDIR%:${LIBEXECDIR}:g" \ -e "s:%/var/lib/%:/var/run:g" \ "${T}"/${PN}.init || die newinitd "${T}"/${PN}.init ${PN} cp "${FILESDIR}"/${PN}.conf "${T}" || die sed -i \ -e "s:%SYSCONFDIR%:${STATEDIR}:g" \ -e "s:%LIBEXECDIR%:${LIBEXECDIR}:g" \ -e "s:%GAMES_USER_DED%:sauerbraten:g" \ -e "s:%GAMES_GROUP%:sauerbraten:g" \ "${T}"/${PN}.conf || die newconfd "${T}"/${PN}.conf ${PN} dodoc src/*.txt docs/dev/*.txt docinto html dodoc -r README.html docs/* } pkg_postinst() { xdg_pkg_postinst elog "If you plan to use map editor feature copy all map data from ${DATADIR}" elog "to corresponding folder in your HOME/.${PN}" }