diff options
author | nyhm <nyhm@localhost> | 2009-05-26 01:06:25 +0000 |
---|---|---|
committer | nyhm <nyhm@localhost> | 2009-05-26 01:06:25 +0000 |
commit | 858371949e9dd5ed055721f8879397436181ea5a (patch) | |
tree | a62a62bce372f95c3b3eb2e5a804e6690f32faae /eclass/games.eclass | |
parent | Moving games-arcade/marbleblast-demo from my overlay into the games overlay. (diff) | |
download | games-master.tar.gz games-master.tar.bz2 games-master.zip |
svn path=/; revision=13
Diffstat (limited to 'eclass/games.eclass')
-rw-r--r-- | eclass/games.eclass | 257 |
1 files changed, 0 insertions, 257 deletions
diff --git a/eclass/games.eclass b/eclass/games.eclass deleted file mode 100644 index eaa6520..0000000 --- a/eclass/games.eclass +++ /dev/null @@ -1,257 +0,0 @@ -# Copyright 1999-2008 Gentoo Foundation -# Distributed under the terms of the GNU General Public License v2 -# $Header: /var/cvsroot/gentoo-x86/eclass/games.eclass,v 1.124 2008/02/15 00:15:51 nyhm Exp $ - -# devlist: {vapier,wolf31o2,mr_bones_}@gentoo.org -> games@gentoo.org -# -# This is the games eclass for standardizing the install of games ... -# you better have a *good* reason why you're *not* using games.eclass -# in a games-* ebuild - -inherit multilib eutils - -EXPORT_FUNCTIONS pkg_preinst pkg_postinst src_compile pkg_setup - -[[ -z ${GAME} ]] && GAME=${PN%%-*} - -DESCRIPTION="Based on the ${ECLASS} eclass" - -export GAMES_PREFIX=${GAMES_PREFIX:-/usr/games} -export GAMES_PREFIX_OPT=${GAMES_PREFIX_OPT:-/opt} -export GAMES_DATADIR=${GAMES_DATADIR:-/usr/share/games} -export GAMES_DATADIR_BASE=${GAMES_DATADIR_BASE:-/usr/share} # some packages auto append 'games' -export GAMES_SYSCONFDIR=${GAMES_SYSCONFDIR:-/etc/games} -export GAMES_STATEDIR=${GAMES_STATEDIR:-/var/games} -export GAMES_LOGDIR=${GAMES_LOGDIR:-/var/log/games} -export GAMES_BINDIR=${GAMES_BINDIR:-${GAMES_PREFIX}/bin} -export GAMES_ENVD="90games" -# if you want to use a different user/group than games.games, -# just add these two variables to your environment (aka /etc/profile) -export GAMES_USER=${GAMES_USER:-root} -export GAMES_USER_DED=${GAMES_USER_DED:-games} -export GAMES_GROUP=${GAMES_GROUP:-games} -export GAMES_SCORES_GROUP=${GAMES_SCORES_GROUP:-scores} - -games_get_libdir() { - echo ${GAMES_LIBDIR:-${GAMES_PREFIX}/$(get_libdir)} -} - -egamesconf() { - econf \ - --prefix="${GAMES_PREFIX}" \ - --libdir="$(games_get_libdir)" \ - --datadir="${GAMES_DATADIR}" \ - --sysconfdir="${GAMES_SYSCONFDIR}" \ - --localstatedir="${GAMES_STATEDIR}" \ - "$@" \ - || die "egamesconf failed" -} - -egamesinstall() { - ewarn "Don't use egamesinstall, use emake DESTDIR=\"\${D}\" install instead" - epause 30 - make \ - prefix="${D}${GAMES_PREFIX}" \ - mandir="${D}/usr/share/man" \ - infodir="${D}/usr/share/info" \ - datadir="${D}${GAMES_DATADIR}" \ - sysconfdir="${D}${GAMES_SYSCONFDIR}" \ - localstatedir="${D}${GAMES_STATEDIR}" \ - "$@" install || die "egamesinstall failed" -} - -gameswrapper() { - # dont want to pollute calling env - ( - into "${GAMES_PREFIX}" - cmd=$1 - shift - ${cmd} "$@" - ) -} - -dogamesbin() { gameswrapper ${FUNCNAME/games} "$@"; } -dogamessbin() { gameswrapper ${FUNCNAME/games} "$@"; } -dogameslib() { gameswrapper ${FUNCNAME/games} "$@"; } -dogameslib.a() { gameswrapper ${FUNCNAME/games} "$@"; } -dogameslib.so() { gameswrapper ${FUNCNAME/games} "$@"; } -newgamesbin() { gameswrapper ${FUNCNAME/games} "$@"; } -newgamessbin() { gameswrapper ${FUNCNAME/games} "$@"; } - -games_make_wrapper() { gameswrapper ${FUNCNAME/games_} "$@"; } - -gamesowners() { chown ${GAMES_USER}:${GAMES_GROUP} "$@"; } -gamesperms() { chmod u+rw,g+r-w,o-rwx "$@"; } -prepgamesdirs() { - local dir f perms=750 - for dir in \ - "${GAMES_PREFIX}" "${GAMES_PREFIX_OPT}" "${GAMES_DATADIR}" \ - "${GAMES_SYSCONFDIR}" "${GAMES_STATEDIR}" "$(games_get_libdir)" \ - "${GAMES_BINDIR}" "$@" - do - [[ ! -d ${D}/${dir} ]] && continue - ( - gamesowners -R "${D}/${dir}" - find "${D}/${dir}" -type d -print0 | xargs -0 chmod ${perms} - find "${D}/${dir}" -type f -print0 | xargs -0 chmod o-rwx,g+r - ) &>/dev/null - f=$(find "${D}/${dir}" -perm +4000 -a -uid 0 2>/dev/null) - if [[ -n ${f} ]] ; then - eerror "A game was detected that is setuid root!" - eerror "${f}" - die "refusing to merge a setuid root game" - fi - done - [[ -d ${D}/${GAMES_BINDIR} ]] || return 0 - if [[ -n ${GAMES_SCORES_FILES} ]] - then -# perms=2775 - for f in ${GAMES_SCORES_FILES} - do - GAMES_GROUP=${GAMES_SCORES_GROUP} gamesowners "${D}/${f}" - done -# GAMES_GROUP=${GAMES_SCORES_GROUP} gamesowners -R \ -# "${D}/${GAMES_BINDIR}"/* - fi - find "${D}/${GAMES_BINDIR}" -maxdepth 1 -type f -exec chmod ${perms} '{}' \; -} - -gamesenv() { - # As much as I hate doing this, we need to be a bit more flexibility with - # our library directories. - local hasit=0 GAMES_LIBDIRS="" GAMES_LIBDIR=$(games_get_libdir) - if has_multilib_profile ; then - for libdir in $(get_all_libdirs) ; do - if [[ ${GAMES_LIBDIR} != ${GAMES_PREFIX}/${libdir} ]] ; then - GAMES_LIBDIRS="${GAMES_LIBDIRS}:${GAMES_PREFIX}/${libdir}" - else - hasit=1 - fi - done - fi - [[ ${hasit} == "1" ]] \ - && GAMES_LIBDIRS=${GAMES_LIBDIRS:1} \ - || GAMES_LIBDIRS="${GAMES_LIBDIR}:${GAMES_LIBDIRS}" - # Wish we could use doevnd here, but we dont want the env - # file to be tracked in the CONTENTS of every game - cat <<-EOF > "${ROOT}"/etc/env.d/${GAMES_ENVD} - LDPATH="${GAMES_LIBDIRS}" - PATH="${GAMES_BINDIR}" - EOF -} - -games_pkg_setup() { - [[ ${GAMES_CHECK_LICENSE} == "yes" ]] && check_license ${LICENSE} - - # Make sure SDL was built in a certain way - if [[ -n ${GAMES_USE_SDL} ]] ; then - if built_with_use -o media-libs/libsdl ${GAMES_USE_SDL} ; then - eerror "You built libsdl with wrong USE flags." - eerror "Make sure you rebuild it like this:" - eerror "USE='-${GAMES_USE_SDL// / -}'" - die "your libsdl sucks" - fi - fi - - enewgroup "${GAMES_GROUP}" 35 - [[ ${GAMES_USER} != "root" ]] \ - && enewuser "${GAMES_USER}" 35 -1 "${GAMES_PREFIX}" "${GAMES_GROUP}" - [[ ${GAMES_USER_DED} != "root" ]] \ - && enewuser "${GAMES_USER_DED}" 36 /bin/bash "${GAMES_PREFIX}" "${GAMES_GROUP}" - [[ -n ${GAMES_SCORES_FILES} ]] && enewgroup "${GAMES_SCORES_GROUP}" - - # Dear portage team, we are so sorry. Lots of love, games team. - # See Bug #61680 - [[ ${USERLAND} != "GNU" ]] && return 0 - [[ $(getent passwd "${GAMES_USER_DED}" | cut -f7 -d:) == "/bin/false" ]] \ - && usermod -s /bin/bash "${GAMES_USER_DED}" -} - -games_src_compile() { - [[ -x ./configure ]] && { egamesconf || die "egamesconf failed"; } - [ -e [Mm]akefile ] && { emake || die "emake failed"; } -} - -games_pkg_preinst() { - local f - - for f in $(find "${D}/${GAMES_STATEDIR}" -type f -printf '%P ' 2>/dev/null) ; do - if [[ -e ${ROOT}/${GAMES_STATEDIR}/${f} ]] ; then - cp -p \ - "${ROOT}/${GAMES_STATEDIR}/${f}" \ - "${D}/${GAMES_STATEDIR}/${f}" \ - || die "cp failed" - # make the date match the rest of the install - touch "${D}/${GAMES_STATEDIR}/${f}" - fi - done -} - -# pkg_postinst function ... create env.d entry and warn about games group -games_pkg_postinst() { - gamesenv - if [[ -z "${GAMES_SHOW_WARNING}" ]] ; then - ewarn "Remember, in order to play games, you have to" - ewarn "be in the '${GAMES_GROUP}' group." - echo - case ${CHOST} in - *-darwin*) ewarn "Just run 'niutil -appendprop / /groups/games users <USER>'";; - *-freebsd*|*-dragonfly*) ewarn "Just run 'pw groupmod ${GAMES_GROUP} -m <USER>'";; - *) ewarn "Just run 'gpasswd -a <USER> ${GAMES_GROUP}', then have <USER> re-login.";; - esac - echo - einfo "For more info about Gentoo gaming in general, see our website:" - einfo " http://games.gentoo.org/" - echo - fi -} - -# Unpack .uz2 files for UT2003/UT2004 -# $1: directory or file to unpack -games_ut_unpack() { - local ut_unpack="$1" - local f= - - if [[ -z ${ut_unpack} ]] ; then - die "You must provide an argument to games_ut_unpack" - fi - if [[ -f ${ut_unpack} ]] ; then - uz2unpack "${ut_unpack}" "${ut_unpack/.uz2/}" &>/dev/null \ - || die "uncompressing file ${ut_unpack}" - fi - if [[ -d ${ut_unpack} ]] ; then - for f in $(find "${ut_unpack}" -name '*.uz2' -printf '%f ') ; do - uz2unpack "${ut_unpack}/${f}" "${ut_unpack}/${f/.uz2}" &>/dev/null \ - || die "uncompressing file ${f}" - rm -f "${ut_unpack}/${f}" || die "deleting compressed file ${f}" - done - fi -} - -# Unpacks .umod/.ut2mod/.ut4mod files for UT/UT2003/UT2004 -# Usage: games_umod_unpack $1 -# oh, and don't forget to set 'dir' and 'Ddir' -games_umod_unpack() { - local umod=$1 - mkdir -p "${Ddir}"/System - cp "${dir}"/System/{ucc-bin,{Manifest,Def{ault,User}}.ini,{Engine,Core,zlib,ogg,vorbis}.so,{Engine,Core}.int} "${Ddir}"/System - cd "${Ddir}"/System - UT_DATA_PATH=${Ddir}/System ./ucc-bin umodunpack -x "${S}/${umod}" -nohomedir &> /dev/null \ - || die "uncompressing file ${umod}" - rm -f "${Ddir}"/System/{ucc-bin,{Manifest,Def{ault,User},User,UT200{3,4}}.ini,{Engine,Core,zlib,ogg,vorbis}.so,{Engine,Core}.int,ucc.log} &>/dev/null \ - || die "Removing temporary files" -} - -# Link mods created by games-mods.eclass into the GAMES_PREFIX_OPT directories -# so they can be found by binary versions of the games. -games_link_mods() { - if [[ -e ${GAMES_DATADIR}/${GAME} ]] ; then - cd "${GAMES_DATADIR}/${GAME}" - for mod in $(find . -type d -printf '%P ') ; do - if [[ ! -e ${Ddir}/${mod} ]] ; then - elog "Creating symlink for ${mod}" - dosym "${GAMES_DATADIR}"/${GAME}/${mod} "${dir}"/${mod} || die - fi - done - fi -} |