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
next 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