All pastes #46203 Raw Edit

Unnamed

public text v1 · immutable
#46203 ·published 2006-03-19 05:56 UTC
rendered paste body
# Copyright 1999-2006 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: /cvsroot/armagetronad/armagetronad_build/gentoo/client.ebuild,v 1.4.2.16 2006/03/19 05:20:59 luke-jr Exp $


inherit flag-o-matic eutils games

DESCRIPTION="\"A Tron clone in 3D\""
HOMEPAGE="http://armagetronad.net/"
SRC_URI="mirror://sourceforge/armagetronad/${P}.src.tar.bz2
	moviesounds? (
		http://armagetron.sourceforge.net/addons/moviesounds_fq.zip
		linguas_es? (
		http://usuario.tiscalinet.es/hgctiscali/naflat/downloads/spanishvoices.zip
		)
	)
	moviepack? (
		http://armagetron.sourceforge.net/addons/moviepack.zip
	)
"

LICENSE="GPL-2"
SLOT="0"
KEYWORDS="amd64 ppc x86"
IUSE="debug dedicated krawall opengl moviepack moviesounds"

GLDEPS="
		|| (
			virtual/x11
			x11-libs/libX11
		)
		virtual/glu
		virtual/opengl
		media-libs/libsdl
		media-libs/sdl-image
		media-libs/jpeg
		media-libs/libpng
	"
RDEPEND="
		>=dev-libs/libxml2-2.6.12
		sys-libs/zlib
	opengl? ( ${GLDEPS} )
	!dedicated? ( ${GLDEPS} )
	"
DEPEND="${RDEPEND}
	moviepack? (			app-arch/unzip	)
	moviesounds? (			app-arch/unzip	)
	linguas_es? (	app-arch/unzip	)
	"

pkg_setup() {
	if use debug; then
		ewarn
		ewarn 'The "debug" USE flag will enable debugging code. This will cause AI'
		ewarn ' players to chat debugging information, debugging lines to be drawn'
		ewarn ' on the grid and at wall angles, and probably most relevant to your'
		ewarn ' decision to keep the USE flag:'
		ewarn '         FULL SCREEN MODE AND SOUND WILL BE DISABLED'
		ewarn
		ewarn "If you don't like this, add this line to /etc/portage/package.use:"
		ewarn '	games-action/armagetronad -debug'
		ewarn
		ewarn 'If you ignore this warning and complain about any of the above'
		ewarn ' effects, the Armagetron Advanced team will either ignore you or'
		ewarn ' delete your complaint.'
		ewarn
		ebeep 5
	fi
	build_client=$(use opengl || ! use dedicated && echo true || echo false)	# Assume client if they don't want a server
	build_server=$(use dedicated && echo true || echo false)

	EXTRA_EMAKE="armabindir=${GAMES_BINDIR}"	# we have a broken build system, I guess
	# Note: Music isn't there yet
	COMMON_CONFIG="--disable-master --enable-main --disable-memmanager --disable-music $(use_enable krawall) --enable-sysinstall --disable-useradd --enable-etc --disable-restoreold --disable-games"
	if [ "$SLOT" == "0" ]; then
		COMMON_CONFIG="${COMMON_CONFIG} --disable-multiver"
		GameSLOT=""
	else
		COMMON_CONFIG="${COMMON_CONFIG}  --enable-multiver=${SLOT}"
		GameSLOT="-${SLOT}"
	fi
	UNINSTALL_CONFIG=--enable-uninstall="emerge --clean =${CATEGORY}/${PF}"
	if use debug; then
		DEBUGLEVEL=3
	else
		DEBUGLEVEL=0
	fi
	CODELEVEL=0
}

src_unpack() {
	unpack ${A}
	cd "${S}/batch"
	epatch "${FILESDIR}/0280_fix-sysinstall.patch"
}

aabuild() {
	MyBUILDDIR="${WORKDIR}/build-$1"
	mkdir -p "${MyBUILDDIR}" || die "error creating build directory($1)"	# -p to allow EEXIST scenario
	cd "${MyBUILDDIR}"
	cat >configure <<EOF
#!/bin/sh
"${S}/configure" "\$@"
EOF
	chmod +x configure
	export DEBUGLEVEL CODELEVEL
	egamesconf ${COMMON_CONFIG} "${UNINSTALL_CONFIG}" "${@:2}" || die "egamesconf($1) failed"
	if [ "$1" == "server" ]; then
		ded='-dedicated'
	else
		ded=''
	fi
	cat >>"config.h" <<EOF
#undef ENABLE_BINRELOC
#define DATA_DIR "${GAMES_DATADIR}/${PN}${ded}${GameSLOT}"
#define CONFIG_DIR "${GAMES_SYSCONFDIR}/${PN}${ded}${GameSLOT}"
#define RESOURCE_DIR "${GAMES_DATADIR}/${PN}${ded}${GameSLOT}/resource"
#define USER_DATA_DIR "~/.${PN}"
#define AUTORESOURCE_DIR "~/.${PN}/resource/automatic"
#define INCLUDEDRESOURCE_DIR "${GAMES_DATADIR}/${PN}${ded}${GameSLOT}/resource/included"
EOF
	emake || die "emake($1) failed"
}

src_compile() {
	filter-flags -fno-exceptions
	if ${build_client}; then	# Assume client if they don't want a server
		einfo "Building game client"
		aabuild client  --enable-glout --disable-initscripts  --enable-desktop
	fi
	if ${build_server}; then
		einfo "Building dedicated server"
		aabuild server --disable-glout  --enable-initscripts --disable-desktop
	fi
}

src_install() {
	if ${build_client} && ${build_server}; then
		# Setup symlink so both client and server share their common data
		mkdir -p "${D}${GAMES_DATADIR}"
		dosym "${PN}${GameSLOT}" "${GAMES_DATADIR}/${PN}-dedicated${GameSLOT}"
	fi
	if ${build_client}; then
		einfo "Installing game client"
		cd "${WORKDIR}/build-client"
		emake install DESTDIR="${D}" || die "emake(client) install failed"
	fi
	if ${build_server}; then
		einfo "Installing dedicated server"
		cd "${WORKDIR}/build-server"
		emake install DESTDIR="${D}" || die "emake(server) install failed"
		einfo 'Adjusting dedicated server configuration'
		sed -i "s,\(^user=\).*$,\1${GAMES_USER_DED},; s,^#VARDIR=\$HOME/./armagetronad-dedicated$,\\0\\nVARDIR=${GAMES_STATEDIR}/${PN}-dedicated${GameSLOT}," "${D}${GAMES_SYSCONFDIR}/${PN}-dedicated${GameSLOT}/rc.config"
		DedHOME="$(eval echo ~${GAMES_USER_DED})"
		mkdir -p "${D}${DedHOME}"
		dosym "${GAMES_STATEDIR}/${PN}-dedicated${GameSLOT}" "${DedHOME}/.${PN}"
	fi
	# Ok, so we screwed up on doc installation... so for now, the ebuild does this manually
	dohtml -r "${D}${GAMES_PREFIX}/share/doc/${PN}${ded}${GameSLOT}/html/"*
	dodoc "${D}${GAMES_PREFIX}/share/doc/${PN}${ded}${GameSLOT}/html/"*.txt
	rm -r "${D}${GAMES_PREFIX}/share/doc"
	rmdir "${D}${GAMES_PREFIX}/share" || true	# Supress potential error
	if ${build_client}; then
	# copy moviepacks/sounds
	cd "${WORKDIR}"
	insinto "${GAMES_DATADIR}/${PN}${GameSLOT}"
	if use moviepack; then
		einfo 'Installing moviepack'
		doins -r moviepack || die "copying moviepack"
	fi
	if use moviesounds; then
		einfo 'Installing moviesounds'
		doins -r moviesounds || die "copying moviesounds"
	fi
	if use moviesounds && use linguas_es; then
		einfo 'Installing Spanish moviesounds'
		doins -r ArmageTRON/moviesounds || die "copying spanish moviesounds"
	fi
	fi
	prepgamesdirs
}