From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from lists.gentoo.org (pigeon.gentoo.org [208.92.234.80]) by finch.gentoo.org (Postfix) with ESMTP id 9630B138A1C for ; Fri, 21 Nov 2014 21:47:20 +0000 (UTC) Received: from pigeon.gentoo.org (localhost [127.0.0.1]) by pigeon.gentoo.org (Postfix) with SMTP id 36C01E0963; Fri, 21 Nov 2014 21:47:19 +0000 (UTC) Received: from smtp.gentoo.org (smtp.gentoo.org [140.211.166.183]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by pigeon.gentoo.org (Postfix) with ESMTPS id C88EDE0963 for ; Fri, 21 Nov 2014 21:47:18 +0000 (UTC) Received: from oystercatcher.gentoo.org (oystercatcher.gentoo.org [148.251.78.52]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by smtp.gentoo.org (Postfix) with ESMTPS id 86E0B3404AF for ; Fri, 21 Nov 2014 21:47:17 +0000 (UTC) Received: by oystercatcher.gentoo.org (Postfix, from userid 2322) id 3107CAA0F; Fri, 21 Nov 2014 21:47:16 +0000 (UTC) From: "Julian Ospald (hasufell)" To: gentoo-commits@lists.gentoo.org Reply-To: gentoo-dev@lists.gentoo.org, hasufell@gentoo.org Subject: [gentoo-commits] gentoo-x86 commit in eclass: ChangeLog games.eclass X-VCS-Repository: gentoo-x86 X-VCS-Files: ChangeLog games.eclass X-VCS-Directories: eclass X-VCS-Committer: hasufell X-VCS-Committer-Name: Julian Ospald Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Message-Id: <20141121214716.3107CAA0F@oystercatcher.gentoo.org> Date: Fri, 21 Nov 2014 21:47:16 +0000 (UTC) Precedence: bulk List-Post: List-Help: List-Unsubscribe: List-Subscribe: List-Id: Gentoo Linux mail X-BeenThere: gentoo-commits@lists.gentoo.org X-Archives-Salt: 14dacd3d-19f8-40d4-a35b-0c4d09d74491 X-Archives-Hash: 58dcbffdc20f2847e007472d16d82fc5 hasufell 14/11/21 21:47:16 Modified: ChangeLog games.eclass Log: add documentation for games.eclass, rm unnecessary exports Revision Changes Path 1.1437 eclass/ChangeLog file : http://sources.gentoo.org/viewvc.cgi/gentoo-x86/eclass/ChangeLog?rev=1.1437&view=markup plain: http://sources.gentoo.org/viewvc.cgi/gentoo-x86/eclass/ChangeLog?rev=1.1437&content-type=text/plain diff : http://sources.gentoo.org/viewvc.cgi/gentoo-x86/eclass/ChangeLog?r1=1.1436&r2=1.1437 Index: ChangeLog =================================================================== RCS file: /var/cvsroot/gentoo-x86/eclass/ChangeLog,v retrieving revision 1.1436 retrieving revision 1.1437 diff -u -r1.1436 -r1.1437 --- ChangeLog 21 Nov 2014 01:55:45 -0000 1.1436 +++ ChangeLog 21 Nov 2014 21:47:16 -0000 1.1437 @@ -1,6 +1,9 @@ # ChangeLog for eclass directory # Copyright 1999-2014 Gentoo Foundation; Distributed under the GPL v2 -# $Header: /var/cvsroot/gentoo-x86/eclass/ChangeLog,v 1.1436 2014/11/21 01:55:45 floppym Exp $ +# $Header: /var/cvsroot/gentoo-x86/eclass/ChangeLog,v 1.1437 2014/11/21 21:47:16 hasufell Exp $ + + 21 Nov 2014; Julian Ospald games.eclass: + add documentation for games.eclass, rm unnecessary exports 21 Nov 2014; Mike Gilbert -twisted.eclass: Remove unused eclass. 1.159 eclass/games.eclass file : http://sources.gentoo.org/viewvc.cgi/gentoo-x86/eclass/games.eclass?rev=1.159&view=markup plain: http://sources.gentoo.org/viewvc.cgi/gentoo-x86/eclass/games.eclass?rev=1.159&content-type=text/plain diff : http://sources.gentoo.org/viewvc.cgi/gentoo-x86/eclass/games.eclass?r1=1.158&r2=1.159 Index: games.eclass =================================================================== RCS file: /var/cvsroot/gentoo-x86/eclass/games.eclass,v retrieving revision 1.158 retrieving revision 1.159 diff -u -r1.158 -r1.159 --- games.eclass 11 Jul 2014 08:21:58 -0000 1.158 +++ games.eclass 21 Nov 2014 21:47:16 -0000 1.159 @@ -1,12 +1,25 @@ # Copyright 1999-2014 Gentoo Foundation # Distributed under the terms of the GNU General Public License v2 -# $Header: /var/cvsroot/gentoo-x86/eclass/games.eclass,v 1.158 2014/07/11 08:21:58 ulm Exp $ +# $Header: /var/cvsroot/gentoo-x86/eclass/games.eclass,v 1.159 2014/11/21 21:47:16 hasufell Exp $ -# devlist: games@gentoo.org +# @ECLASS: games +# @MAINTAINER: +# Games team +# @BLURB: Standardizing the install of games. +# @DESCRIPTION: +# This eclass makes sure that games are consistently handled in gentoo. +# It installs game files by default in FHS-compatible directories +# like /usr/share/games and sets more restrictive permissions in order +# to avoid some security bugs. # -# 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 +# The installation directories as well as the user and group files are +# installed as can be controlled by the user. See the variables like +# GAMES_BINDIR, GAMES_USER etc. below. These are NOT supposed to be set +# by ebuilds! +# +# For a general guide on writing games ebuilds, see: +# https://wiki.gentoo.org/wiki/Project:Games/Ebuild_howto + if [[ -z ${_GAMES_ECLASS} ]]; then _GAMES_ECLASS=1 @@ -24,25 +37,91 @@ RDEPEND="games-misc/games-envd" fi -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} - +# @ECLASS-VARIABLE: GAMES_PREFIX +# @DESCRIPTION: +# Prefix where to install games, mostly used by GAMES_BINDIR. Games data should +# still go into GAMES_DATADIR. May be set by the user. +GAMES_PREFIX=${GAMES_PREFIX:-/usr/games} + +# @ECLASS-VARIABLE: GAMES_PREFIX_OPT +# @DESCRIPTION: +# Prefix where to install precompiled/blob games, usually followed by +# package name. May be set by the user. +GAMES_PREFIX_OPT=${GAMES_PREFIX_OPT:-/opt} + +# @ECLASS-VARIABLE: GAMES_DATADIR +# @DESCRIPTION: +# Base directory where to install game data files, usually followed by +# package name. May be set by the user. +GAMES_DATADIR=${GAMES_DATADIR:-/usr/share/games} + +# @ECLASS-VARIABLE: GAMES_DATADIR_BASE +# @DESCRIPTION: +# Similar to GAMES_DATADIR, but only used when a package auto appends 'games' +# to the path. May be set by the user. +GAMES_DATADIR_BASE=${GAMES_DATADIR_BASE:-/usr/share} + +# @ECLASS-VARIABLE: GAMES_SYSCONFDIR +# @DESCRIPTION: +# Where to install global games configuration files, usually followed by +# package name. May be set by the user. +GAMES_SYSCONFDIR=${GAMES_SYSCONFDIR:-/etc/games} + +# @ECLASS-VARIABLE: GAMES_STATEDIR +# @DESCRIPTION: +# Where to install/store global variable game data, usually followed by +# package name. May be set by the user. +GAMES_STATEDIR=${GAMES_STATEDIR:-/var/games} + +# @ECLASS-VARIABLE: GAMES_LOGDIR +# @DESCRIPTION: +# Where to store global game log files, usually followed by +# package name. May be set by the user. +GAMES_LOGDIR=${GAMES_LOGDIR:-/var/log/games} + +# @ECLASS-VARIABLE: GAMES_BINDIR +# @DESCRIPTION: +# Where to install the game binaries. May be set by the user. This is in PATH. +GAMES_BINDIR=${GAMES_BINDIR:-${GAMES_PREFIX}/bin} + +# @ECLASS-VARIABLE: GAMES_ENVD +# @INTERNAL +# @DESCRIPTION: +# The games environment file name which sets games specific LDPATH and PATH. +GAMES_ENVD="90games" + +# @ECLASS-VARIABLE: GAMES_USER +# @DESCRIPTION: +# The USER who owns all game files and usually has write permissions. +# May be set by the user. +GAMES_USER=${GAMES_USER:-root} + +# @ECLASS-VARIABLE: GAMES_USER_DED +# @DESCRIPTION: +# The USER who owns all game files related to the dedicated server part +# of a package. May be set by the user. +GAMES_USER_DED=${GAMES_USER_DED:-games} + +# @ECLASS-VARIABLE: GAMES_GROUP +# @DESCRIPTION: +# The GROUP that owns all game files and usually does not have +# write permissions. May be set by the user. +# If you want games world-executable, then you can at least set this variable +# to 'users' which is almost the same. +GAMES_GROUP=${GAMES_GROUP:-games} + +# @FUNCTION: games_get_libdir +# @DESCRIPTION: +# Gets the directory where to install games libraries. This is in LDPATH. games_get_libdir() { echo ${GAMES_PREFIX}/$(get_libdir) } +# @FUNCTION: egamesconf +# @USAGE: [...] +# @DESCRIPTION: +# Games equivalent to 'econf' for autotools based build systems. It passes +# the necessary games specific directories automatically. egamesconf() { # handle verbose build log pre-EAPI5 local _gamesconf @@ -67,6 +146,12 @@ "$@" } +# @FUNCTION: gameswrapper +# @USAGE: [...] +# @INTERNAL +# @DESCRIPTION: +# Wraps an install command like dobin, dolib etc, so that +# it has GAMES_PREFIX as prefix. gameswrapper() { # dont want to pollute calling env ( @@ -77,18 +162,75 @@ ) } +# @FUNCTION: dogamesbin +# @USAGE: ... +# @DESCRIPTION: +# Install one or more games binaries. dogamesbin() { gameswrapper ${FUNCNAME/games} "$@"; } + +# @FUNCTION: dogamessbin +# @USAGE: ... +# @DESCRIPTION: +# Install one or more games system binaries. dogamessbin() { gameswrapper ${FUNCNAME/games} "$@"; } + +# @FUNCTION: dogameslib +# @USAGE: ... +# @DESCRIPTION: +# Install one or more games libraries. dogameslib() { gameswrapper ${FUNCNAME/games} "$@"; } + +# @FUNCTION: dogameslib.a +# @USAGE: ... +# @DESCRIPTION: +# Install one or more static games libraries. dogameslib.a() { gameswrapper ${FUNCNAME/games} "$@"; } + +# @FUNCTION: dogameslib.so +# @USAGE: ... +# @DESCRIPTION: +# Install one or more shared games libraries. dogameslib.so() { gameswrapper ${FUNCNAME/games} "$@"; } + +# @FUNCTION: newgamesbin +# @USAGE: +# @DESCRIPTION: +# Install one games binary with a new name. newgamesbin() { gameswrapper ${FUNCNAME/games} "$@"; } + +# @FUNCTION: newgamessbin +# @USAGE: +# @DESCRIPTION: +# Install one system games binary with a new name. newgamessbin() { gameswrapper ${FUNCNAME/games} "$@"; } +# @FUNCTION: games_make_wrapper +# @USAGE: [chdir] [libpaths] [installpath] +# @DESCRIPTION: +# Create a shell wrapper script named wrapper in installpath +# (defaults to the games bindir) to execute target (default of wrapper) by +# first optionally setting LD_LIBRARY_PATH to the colon-delimited +# libpaths followed by optionally changing directory to chdir. games_make_wrapper() { gameswrapper ${FUNCNAME/games_} "$@"; } +# @FUNCTION: gamesowners +# @USAGE: [...] ... +# @DESCRIPTION: +# Run 'chown' with the given args on the given files. Owner and +# group are GAMES_USER and GAMES_GROUP and must not be passed +# as args. gamesowners() { chown ${GAMES_USER}:${GAMES_GROUP} "$@"; } + +# @FUNCTION: gamesperms +# @USAGE: ... +# @DESCRIPTION: +# Run 'chmod' with games specific permissions on the given files. gamesperms() { chmod u+rw,g+r-w,o-rwx "$@"; } + +# @FUNCTION: prepgamesdirs +# @DESCRIPTION: +# Fix all permissions/owners of files in games related directories, +# usually called at the end of src_install(). prepgamesdirs() { local dir f mode for dir in \ @@ -129,6 +271,10 @@ find "${D}/${GAMES_BINDIR}" -maxdepth 1 -type f -exec chmod 750 '{}' \; } +# @FUNCTION: games_pkg_setup +# @DESCRIPTION: +# Export some toolchain specific variables and create games related groups +# and users. This function is exported as pkg_setup(). games_pkg_setup() { tc-export CC CXX LD AR RANLIB @@ -145,10 +291,17 @@ && usermod -s /bin/bash "${GAMES_USER_DED}" } +# @FUNCTION: games_src_configure +# @DESCRIPTION: +# Runs egamesconf if there is a configure file. +# This function is exported as src_configure(). games_src_configure() { [[ -x "${ECONF_SOURCE:-.}"/configure ]] && egamesconf } +# @FUNCTION: games_src_compile +# @DESCRIPTION: +# Runs base_src_make(). This function is exported as src_compile(). games_src_compile() { case ${EAPI:-0} in 0|1) games_src_configure ;; @@ -156,6 +309,9 @@ base_src_make } +# @FUNCTION: games_pkg_preinst +# @DESCRIPTION: +# Synchronizes GAMES_STATEDIR of the ebuild image with the live filesystem. games_pkg_preinst() { local f @@ -171,7 +327,9 @@ done < <(find "${D}/${GAMES_STATEDIR}" -type f -printf '%P\n' 2>/dev/null) } -# pkg_postinst function ... warn about games group +# @FUNCTION: games_pkg_postinst +# @DESCRIPTION: +# Prints some warnings and infos, also related to games groups. games_pkg_postinst() { if [[ -z "${GAMES_SHOW_WARNING}" ]] ; then ewarn "Remember, in order to play games, you have to" @@ -189,8 +347,10 @@ fi } -# Unpack .uz2 files for UT2003/UT2004 -# $1: directory or file to unpack +# @FUNCTION: games_ut_unpack +# @USAGE: +# @DESCRIPTION: +# Unpack .uz2 files for UT2003/UT2004. games_ut_unpack() { local ut_unpack="$1" local f= @@ -211,9 +371,11 @@ 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' +# @FUNCTION: games_umod_unpack +# @USAGE: +# @DESCRIPTION: +# Unpacks .umod/.ut2mod/.ut4mod files for UT/UT2003/UT2004. +# Don't forget to set 'dir' and 'Ddir'. games_umod_unpack() { local umod=$1 mkdir -p "${Ddir}"/System