games-fps/sauerbraten: initial import of version 2013.02.03

This commit is contained in:
Julian Ospald 2016-02-24 20:29:19 +01:00
parent 7bf38fc49b
commit 0b3555740e
5 changed files with 255 additions and 0 deletions

View File

@ -0,0 +1,4 @@
gecos = sauerbraten
home = /var/lib/sauerbraten
shell = /bin/bash
primary_group = sauerbraten

View File

@ -0,0 +1,28 @@
# Config file for /etc/init.d/sauerbraten
# Owner of Sauerbraten server processes (must be existing)
USER="sauerbraten"
GROUP="sauerbraten"
# Whether to run the dedicated server
RUNSERVER="Yes"
# Location of the dedicated server config directory
SERVERCONFIG="%SYSCONFDIR%"
# Additional command line arguments to the dedicated server
SERVERARGS=""
# Whether to run the master server
RUNMASTER="No"
# Location of the master server config directory
MASTERCONFIG="%SYSCONFDIR%"
# What port should the masterserver use
MASTERPORT="28787"
# What ip should the masterserver bind to
MASTERIP=""

View File

@ -0,0 +1,97 @@
#!/sbin/runscript
rundir=${rundir:-/run/sauerbraten}
depend() {
use net
}
start() {
[ $(echo ${RUNMASTER} | tr '[:upper:]' '[:lower:]') = "yes" ] && start_master
[ $(echo ${RUNSERVER} | tr '[:upper:]' '[:lower:]') = "yes" ] && start_server
true
}
start_server() {
ebegin "Starting Sauerbraten dedicated server"
# Make sure necessary parameters are set
SERVERCONFIG="${SERVERCONFIG:-%SYSCONFDIR%}"
if [ ! -d ${SERVERCONFIG} ]; then
einfo "No ${SERVERCONFIG} around. Creating new..."
mkdir ${SERVERCONFIG}
chown ${USER}:${GROUP} ${SERVERCONFIG}
fi
[ -d ${rundir} ] || {
mkdir -p "${rundir}"
chown -R ${USER}:${GROUP} "${rundir}"
}
start-stop-daemon \
--quiet \
--start \
--user ${USER} \
--group ${GROUP} \
--chdir ${SERVERCONFIG} \
--make-pidfile \
--pidfile "${rundir}"/server.pid \
--background \
--exec %LIBEXECDIR%/sauer_server -- ${SERVERARGS}
eend $?
}
start_master() {
ebegin "Starting Sauerbraten master server"
# Make sure necessary parameters are set
MASTERCONFIG="${MASTERCONFIG:-%SYSCONFDIR%}"
[ -n "${MASTERIP}" ] && MASTERPORT="${MASTERPORT:-28787}"
MASTERARGS="${MASTERCONFIG}/ ${MASTERPORT} ${MASTERIP}"
if [ ! -d ${MASTERCONFIG} ]; then
einfo "No ${MASTERCONFIG} around. Creating new..."
mkdir ${MASTERCONFIG}
chown ${USER}:${GROUP} ${MASTERCONFIG}
fi
[ -d ${rundir} ] || {
mkdir -p "${rundir}"
chown -R ${USER}:${GROUP} "${rundir}"
}
start-stop-daemon \
--quiet \
--start \
--user ${USER} \
--group ${GROUP} \
--make-pidfile \
--pidfile "${rundir}"/master.pid \
--background \
--exec %LIBEXECDIR%/sauer_master -- ${MASTERARGS}
eend $?
}
stop() {
[ $(echo ${RUNSERVER} | tr '[:upper:]' '[:lower:]') = "yes" ] && stop_server
[ $(echo ${RUNMASTER} | tr '[:upper:]' '[:lower:]') = "yes" ] && stop_master
true
}
stop_server() {
ebegin "Stopping Sauerbraten dedicated server"
start-stop-daemon --stop --retry 3 --pidfile "${rundir}"/server.pid
eend $?
}
stop_master() {
ebegin "Stopping Sauerbraten master server"
start-stop-daemon --stop --retry 3 --pidfile "${rundir}"/master.pid
eend $?
}
restart() {
svc_stop
svc_start
}

View File

@ -0,0 +1,126 @@
# Copyright 2016 Julian Ospald <hasufell@posteo.de>
# Distributed under the terms of the GNU General Public License v2
require gtk-icon-cache
EDITION="collect_edition"
SUMMARY="Cube 2: Sauerbraten is an open source game engine (Cube 2) with freeware game data (Sauerbraten)"
HOMEPAGE="http://sauerbraten.org/"
DOWNLOADS="mirror://sourceforge/sauerbraten/sauerbraten/2013_01_04/sauerbraten_${PV//./_}_${EDITION}_linux.tar.bz2"
LICENCES="ZLIB freedist"
SLOT="0"
PLATFORMS="~amd64 ~x86"
MYOPTIONS=""
DEPENDENCIES="
build+run:
media-libs/SDL:0[X]
media-libs/SDL_image:1
media-libs/SDL_mixer:0[ogg]
x11-libs/libX11
sys-libs/zlib
x11-dri/glu
x11-dri/mesa
run:
group/sauerbraten [[ note = [ for server ] ]]
user/sauerbraten [[ note = [ for server ] ]]
"
WORK=${WORKBASE}/${PN}
src_prepare() {
edo rm -r sauerbraten_unix bin_unix src/{include,lib,vcpp}
default
# Fix links so they point to the correct directory
edo sed -i -e 's:docs/::' README.html
}
src_compile() {
emake -C src master server client
}
src_install() {
local LIBEXECDIR="/usr/$(exhost --target)/libexec/${PN}"
local DATADIR="/usr/share/${PN}"
local STATEDIR="/var/lib/${PN}"
# Install the game data
insinto "${DATADIR}"
doins -r data packages
# Install the client executable
exeinto "${LIBEXECDIR}"
doexe src/sauer_client
# Install the client wrapper
herebin ${PN}-client <<EOF
#!/bin/sh
cd ${DATADIR}
exec "${LIBEXECDIR}/sauer_client" -q \$HOME/.${PN} -r "\$@"
EOF
# Create menu entry
insinto /usr/share/icons/hicolor/256x256/apps
newins data/cube.png ${PN}.png
insinto /usr/share/applications
hereins ${PN}.desktop <<EOF
[Desktop Entry]
Name=Cube 2: Sauerbraten
Type=Application
Comment=${SUMMARY}
Exec=${PN}-client
TryExec=${PN}-client
Icon=${PN}
Categories=Game;ActionGame;
EOF
# Install the server config files
insinto "${STATEDIR}"
doins "server-init.cfg"
# Install the server executables
exeinto "${LIBEXECDIR}"
doexe src/sauer_master
doexe src/sauer_server
herebin ${PN}-server <<EOF
#!/bin/sh
exec "${LIBEXECDIR}/sauer_server" -k${DATADIR} -q${STATEDIR} "\$@"
EOF
herebin ${PN}-master <<EOF
#!/bin/sh
exec "${LIBEXECDIR}/sauer_master" ${STATEDIR} "\$@"
EOF
# Install the server init script
edo cp "${FILES}"/${PN}.init "${TEMP}"
edo sed -i \
-e "s:%SYSCONFDIR%:${STATEDIR}:g" \
-e "s:%LIBEXECDIR%:${LIBEXECDIR}:g" \
"${TEMP}"/${PN}.init
newinitd "${TEMP}"/${PN}.init ${PN}
edo cp "${FILES}"/${PN}.conf "${TEMP}"
edo sed -i \
-e "s:%SYSCONFDIR%:${STATEDIR}:g" \
-e "s:%LIBEXECDIR%:${LIBEXECDIR}:g" \
"${TEMP}"/${PN}.conf
newconfd "${TEMP}"/${PN}.conf ${PN}
dodoc src/*.txt docs/dev/*.txt
insinto /usr/share/doc/${PNVR}/html
doins -r README.html docs/*
edo chown sauerbraten:sauerbraten "${IMAGE%/}/${STATEDIR}"
}
pkg_postinst() {
elog "If you plan to use map editor feature copy all map data from ${DATADIR}"
elog "to corresponding folder in your HOME/.${PN}"
gtk-icon-cache_pkg_postinst
}