public inbox for gentoo-commits@lists.gentoo.org
 help / color / mirror / Atom feed
From: "Julian Ospald (hasufell)" <hasufell@gentoo.org>
To: gentoo-commits@lists.gentoo.org
Subject: [gentoo-commits] gentoo-x86 commit in eclass: ChangeLog games.eclass
Date: Fri, 21 Nov 2014 21:47:16 +0000 (UTC)	[thread overview]
Message-ID: <20141121214716.3107CAA0F@oystercatcher.gentoo.org> (raw)

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 <hasufell@gentoo.org> games.eclass:
+  add documentation for games.eclass, rm unnecessary exports
 
   21 Nov 2014; Mike Gilbert <floppym@gentoo.org> -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 <games@gentoo.org>
+# @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: [<args>...]
+# @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: <command> [<args>...]
+# @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: <path>...
+# @DESCRIPTION:
+# Install one or more games binaries.
 dogamesbin() { gameswrapper ${FUNCNAME/games} "$@"; }
+
+# @FUNCTION: dogamessbin
+# @USAGE: <path>...
+# @DESCRIPTION:
+# Install one or more games system binaries.
 dogamessbin() { gameswrapper ${FUNCNAME/games} "$@"; }
+
+# @FUNCTION: dogameslib
+# @USAGE: <path>...
+# @DESCRIPTION:
+# Install one or more games libraries.
 dogameslib() { gameswrapper ${FUNCNAME/games} "$@"; }
+
+# @FUNCTION: dogameslib.a
+# @USAGE: <path>...
+# @DESCRIPTION:
+# Install one or more static games libraries.
 dogameslib.a() { gameswrapper ${FUNCNAME/games} "$@"; }
+
+# @FUNCTION: dogameslib.so
+# @USAGE: <path>...
+# @DESCRIPTION:
+# Install one or more shared games libraries.
 dogameslib.so() { gameswrapper ${FUNCNAME/games} "$@"; }
+
+# @FUNCTION: newgamesbin
+# @USAGE: <path> <newname>
+# @DESCRIPTION:
+# Install one games binary with a new name.
 newgamesbin() { gameswrapper ${FUNCNAME/games} "$@"; }
+
+# @FUNCTION: newgamessbin
+# @USAGE: <path> <newname>
+# @DESCRIPTION:
+# Install one system games binary with a new name.
 newgamessbin() { gameswrapper ${FUNCNAME/games} "$@"; }
 
+# @FUNCTION: games_make_wrapper
+# @USAGE: <wrapper> <target> [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: [<args excluding owner/group>...] <path>...
+# @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: <path>...
+# @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: <directory or file to unpack>
+# @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: <file to unpack>
+# @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





             reply	other threads:[~2014-11-21 21:47 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-11-21 21:47 Julian Ospald (hasufell) [this message]
  -- strict thread matches above, loose matches on Subject: below --
2014-03-12 18:54 [gentoo-commits] gentoo-x86 commit in eclass: ChangeLog games.eclass Julian Ospald (hasufell)
2014-02-02 12:15 Julian Ospald (hasufell)
2014-01-25 17:44 Julian Ospald (hasufell)
2012-07-28 15:52 Julian Ospald (hasufell)
2012-06-09 22:14 Julian Ospald (hasufell)
2012-05-30  6:35 Sergei Trofimovich (slyfox)

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20141121214716.3107CAA0F@oystercatcher.gentoo.org \
    --to=hasufell@gentoo.org \
    --cc=gentoo-commits@lists.gentoo.org \
    --cc=gentoo-dev@lists.gentoo.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox