From 153516fb0329ca254e9d1961c9aaf4119d1dd026 Mon Sep 17 00:00:00 2001 From: Matteo Bernardini Date: Sat, 15 Nov 2014 15:52:37 +0100 Subject: games/etlegacy: Added (collaborative FPS). Signed-off-by: Matteo Bernardini Signed-off-by: Willy Sudiarto Raharjo --- games/etlegacy/README | 31 +++++ games/etlegacy/doinst.sh | 3 + games/etlegacy/etlegacy.SlackBuild | 177 +++++++++++++++++++++++++++ games/etlegacy/etlegacy.info | 12 ++ games/etlegacy/files/etlegacy.desktop | 9 ++ games/etlegacy/files/etlegacy.svg | 100 +++++++++++++++ games/etlegacy/files/get_tarball_from_git.sh | 31 +++++ games/etlegacy/files/openurl.sh | 15 +++ games/etlegacy/slack-desc | 19 +++ 9 files changed, 397 insertions(+) create mode 100644 games/etlegacy/README create mode 100644 games/etlegacy/doinst.sh create mode 100644 games/etlegacy/etlegacy.SlackBuild create mode 100644 games/etlegacy/etlegacy.info create mode 100644 games/etlegacy/files/etlegacy.desktop create mode 100644 games/etlegacy/files/etlegacy.svg create mode 100644 games/etlegacy/files/get_tarball_from_git.sh create mode 100644 games/etlegacy/files/openurl.sh create mode 100644 games/etlegacy/slack-desc diff --git a/games/etlegacy/README b/games/etlegacy/README new file mode 100644 index 0000000000..7d9f4aaf5a --- /dev/null +++ b/games/etlegacy/README @@ -0,0 +1,31 @@ +Wolfenstein Enemy Territory: Legacy is a project that aims to create +a fully compatible client and server for the popular online FPS game +Wolfenstein: Enemy Territory. + +It's based on its source code released under the GPLv3 license. + +The main goal of this project is to fix bugs, remove old dependencies +and make it playable on all major operating systems while still +remaining compatible with the ET 2.60b version and as many of its mods +as possible. + +This script builds the server with omni-bot support (x86 32bit only). +(http://www.omni-bot.com/) + +This command line switches are available: +- RENDERER2=yes (default: no) enable the new renderer (it performs + better but needs an OpenGL 3.0+ capable GPU; also it's still WIP, + so enable at your own risk, may cause incompatibilities with some + maps); +- FREETYPE=yes (default: no) enables freetype support; +- OPENAL=yes (default: no) enables OpenAL support + (for this you need the optional dependency OpenAL); +- CROUCH=yes (default: no) enables sticky crouching (during game). + +To play you *need* also the data files from the original game +(etlegacy-data). + +* WARNING * + +To have a client/server compatible with the existing ones (to play +on the existing online servers), build it on/for a 32bit platform. diff --git a/games/etlegacy/doinst.sh b/games/etlegacy/doinst.sh new file mode 100644 index 0000000000..5fb28930db --- /dev/null +++ b/games/etlegacy/doinst.sh @@ -0,0 +1,3 @@ +if [ -x /usr/bin/update-desktop-database ]; then + /usr/bin/update-desktop-database -q usr/share/applications >/dev/null 2>&1 +fi diff --git a/games/etlegacy/etlegacy.SlackBuild b/games/etlegacy/etlegacy.SlackBuild new file mode 100644 index 0000000000..d4777f01c7 --- /dev/null +++ b/games/etlegacy/etlegacy.SlackBuild @@ -0,0 +1,177 @@ +#!/bin/sh + +# Slackware build script for etlegacy +# Copyright 2013-2014 Matteo Bernardini , Pisa, Italy +# All rights reserved. +# +# Redistribution and use of this script, with or without modification, is +# permitted provided that the following conditions are met: +# +# 1. Redistributions of this script must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# +# THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR IMPLIED +# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO +# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; +# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR +# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF +# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +PRGNAM=etlegacy +VERSION=${VERSION:-20141115_3a6dbd5} +BUILD=${BUILD:-1} +TAG=${TAG:-_SBo} + +if [ -z "$ARCH" ]; then + case "$( uname -m )" in + i*86) ARCH=i686 ;; + arm*) ARCH=arm ;; + *) ARCH=$( uname -m ) ;; + esac +fi + +CWD=$(pwd) +TMP=${TMP:-/tmp/SBo} +PKG=$TMP/package-$PRGNAM +OUTPUT=${OUTPUT:-/tmp} + +w_omnibot=1 +if [ "$ARCH" = "i386" ]; then + SLKCFLAGS="-O2 -march=i386 -mtune=i686" +elif [ "$ARCH" = "i686" ]; then + SLKCFLAGS="-O2 -march=i686 -mtune=core2" +elif [ "$ARCH" = "x86_64" ]; then + SLKCFLAGS="-O2 -fPIC" + w_omnibot=0 +else + SLKCFLAGS="-O2" + w_omnibot=0 +fi + +# The new renderer performs better but needs an OpenGL 3.0+ capable GPU; +# also it's still WIP, so enable at your own risk, may cause incompatibilities +# with some maps +if [ "${RENDERER2:-no}" = "yes" ]; then w_renderer=1; else w_renderer=0; fi +if [ "${FREETYPE:-no}" = "yes" ]; then w_freetype=1; else w_freetype=0; fi +if [ "${OPENAL:-no}" = "yes" ]; then w_openal=1; else w_openal=0; fi +if [ "${CROUCH:-no}" = "yes" ]; then w_crouch=1; else w_crouch=0; fi +if [ "${MULTIVIEW:-no}" = "yes" ]; then w_multiview=1; else w_multiview=0; fi + +set -e # Exit on most errors + +rm -rf $PKG +mkdir -p $TMP $PKG $OUTPUT +cd $TMP +rm -rf $PRGNAM-$VERSION +tar xvf $CWD/$PRGNAM-$VERSION.tar.?z* +cd $PRGNAM-$VERSION +chown -R root:root . +find -L . \ + \( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \ + -o -perm 511 \) -exec chmod 755 {} \; -o \ + \( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \ + -o -perm 440 -o -perm 400 \) -exec chmod 644 {} \; + +# Fix location of the omnibot.zip, man install path +# and leave the relative path to binaries off +sed -i "s|share/man|man|" CMakeLists.txt +sed -i "s|^\.\/etl|etl|" misc/etl_bot.sh misc/etlded_bot.sh + +mkdir -p build/legacy +cd build + ln -s $CWD/omnibot-linux-latest.tar.gz legacy/ + # We have to use bundled lua and sdl + cmake \ + -DCMAKE_C_FLAGS_RELEASE:STRING="$SLKCFLAGS" \ + -DCMAKE_CXX_FLAGS_RELEASE:STRING="$SLKCFLAGS" \ + -DCMAKE_INSTALL_PREFIX="/usr" \ + -DINSTALL_DEFAULT_BINDIR="bin" \ + -DINSTALL_DEFAULT_MODDIR="share/$PRGNAM" \ + -DINSTALL_DEFAULT_BASEDIR="/usr/share/$PRGNAM" \ + -DBUILD_CLIENT=1 \ + -DBUILD_SERVER=1 \ + -DBUILD_MOD=1 \ + -DBUILD_MOD_PK3=1 \ + -DBUILD_PAK3_PK3=1 \ + -DFEATURE_ANTICHEAT=1 \ + -DFEATURE_CURL=1 \ + -DFEATURE_LUA=1 \ + -DFEATURE_TRACKER=1 \ + -DFEATURE_OMNIBOT=$w_omnibot \ + -DINSTALL_OMNIBOT=$w_omnibot \ + -DFEATURE_MULTIVIEW=0 \ + -DFEATURE_CURSES=0 \ + -DCROSS_COMPILE32=0 \ + -DFEATURE_OGG_VORBIS=1 \ + -DFEATURE_FREETYPE=$w_freetype \ + -DFEATURE_OPENAL=$w_openal \ + -DFEATURE_AUTOUPDATE=0 \ + -DFEATURE_IPV6=0 \ + -DFEATURE_GETTEXT=1 \ + -DFEATURE_RENDERER2=$w_renderer \ + -DFEATURE_CROUCH=$w_crouch \ + -DFEATURE_MULTIVIEW=$w_multiview \ + -DRENDERER_DYNAMIC=0 \ + -DBUNDLED_LIBS=1 \ + -DBUNDLED_SDL=1 \ + -DBUNDLED_LUA=1 \ + -DBUNDLED_CURL=0 \ + -DBUNDLED_JPEG=0 \ + -DBUNDLED_OGG_VORBIS=0 \ + -DBUNDLED_GLEW=0 \ + -DBUNDLED_FREETYPE=0 \ + -DBUNDLED_JANSSON=1 \ + -DCMAKE_BUILD_TYPE=Release .. + + # JIC, sanitize the just-uncompressed omnibot stuff + chown -R root:root legacy + find -L legacy \ + \( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \ + -o -perm 511 \) -exec chmod 755 {} \; -o \ + \( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \ + -o -perm 440 -o -perm 400 \) -exec chmod 644 {} \; + make + make install DESTDIR=$PKG +cd .. + +# Move man pages in the proper place +mv $PKG/usr/share/man $PKG/usr/man + +# Install a script to open urls, and move two scripts to launch the client and +# the dedicated server with omnibot support in the binaries folder +install -m 0755 $CWD/files/openurl.sh $PKG/usr/bin/openurl.sh +mv $PKG/usr/share/$PRGNAM/etl*.sh $PKG/usr/bin/ +chmod 755 $PKG/usr/bin/etl*.sh + +find $PKG -print0 | xargs -0 file | grep -e "executable" -e "shared object" | grep ELF \ + | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true + +find $PKG/usr/man -type f -exec gzip -9 {} \; +for i in $( find $PKG/usr/man -type l ) ; do ln -s $( readlink $i ).gz $i.gz ; rm $i ; done + +# Install an icon, a desktop file and man pages +install -m 0644 -D $CWD/files/$PRGNAM.svg \ + $PKG/usr/share/pixmaps/$PRGNAM.svg +install -m 0644 -D $CWD/files/$PRGNAM.desktop \ + $PKG/usr/share/applications/$PRGNAM.desktop +mkdir -p $PKG/usr/man/man6 +gzip -9 -c docs/linux/man/man6/etl.6 > $PKG/usr/man/man6/etl.6.gz +gzip -9 -c docs/linux/man/man6/etlded.6 > $PKG/usr/man/man6/etlded.6.gz + +mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION +mv \ + $PKG/usr/share/$PRGNAM/README.md \ + $PKG/usr/share/$PRGNAM/COPYING.txt \ + $PKG/usr/doc/$PRGNAM-$VERSION +cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild + +mkdir -p $PKG/install +cat $CWD/slack-desc > $PKG/install/slack-desc +cat $CWD/doinst.sh > $PKG/install/doinst.sh + +cd $PKG +/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz} diff --git a/games/etlegacy/etlegacy.info b/games/etlegacy/etlegacy.info new file mode 100644 index 0000000000..e828ee48a0 --- /dev/null +++ b/games/etlegacy/etlegacy.info @@ -0,0 +1,12 @@ +PRGNAM="etlegacy" +VERSION="20141115_3a6dbd5" +HOMEPAGE="http://www.etlegacy.com" +DOWNLOAD="http://ponce.cc/slackware/sources/repo/etlegacy-20141115_3a6dbd5.tar.xz \ + http://ponce.cc/slackware/sources/repo/omnibot-linux-latest.tar.gz" +MD5SUM="9a4ac962170e7a9d0d7b9ac995917546 \ + b355b2d25a6812fda61725d45a51f049" +DOWNLOAD_x86_64="" +MD5SUM_x86_64="" +REQUIRES="%README% etlegacy-data zenity" +MAINTAINER="Matteo Bernardini" +EMAIL="ponce@slackbuilds.org" diff --git a/games/etlegacy/files/etlegacy.desktop b/games/etlegacy/files/etlegacy.desktop new file mode 100644 index 0000000000..2618c0c13e --- /dev/null +++ b/games/etlegacy/files/etlegacy.desktop @@ -0,0 +1,9 @@ +[Desktop Entry] +Name=ETLegacy +Comment=ET: Legacy (Collaborative online FPS) +Exec=etl +Icon=etl +Terminal=false +Type=Application +Categories=Game; +StartupNotify=false diff --git a/games/etlegacy/files/etlegacy.svg b/games/etlegacy/files/etlegacy.svg new file mode 100644 index 0000000000..51754d1889 --- /dev/null +++ b/games/etlegacy/files/etlegacy.svg @@ -0,0 +1,100 @@ + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/games/etlegacy/files/get_tarball_from_git.sh b/games/etlegacy/files/get_tarball_from_git.sh new file mode 100644 index 0000000000..42aaa1626d --- /dev/null +++ b/games/etlegacy/files/get_tarball_from_git.sh @@ -0,0 +1,31 @@ +rm -fR /tmp/tmp-etlegacy +mkdir -p /tmp/tmp-etlegacy +cd /tmp/tmp-etlegacy +git clone git://github.com/etlegacy/etlegacy.git +cd etlegacy +git submodule init +git submodule update +cd libs +git archive master > ../../libs.tar +cd .. +cd scripts +git archive master > ../../scripts.tar +cd .. +COMMIT=$( git log -1 | head -1 | cut -c 8-14 ) +COMMDATE=$( git log -1 --date=short | grep ^Date | awk '{print $2}' | sed 's/-//g' ) +rm -f /tmp/etlegacy-${COMMDATE}_${COMMIT}.tar.xz +git archive master > ../src.tar +cd .. +mkdir etlegacy-${COMMDATE}_${COMMIT} +cd etlegacy-${COMMDATE}_${COMMIT} +tar xf ../src.tar +cd libs +tar xf ../../libs.tar +cd .. +cd scripts +tar xf ../../scripts.tar +cd .. +cd .. +rm -f src.tar libs.tar scripts.tar +tar Jcf /tmp/etlegacy-${COMMDATE}_${COMMIT}.tar.xz etlegacy-${COMMDATE}_${COMMIT} +echo "/tmp/etlegacy-${COMMDATE}_${COMMIT}.tar.xz done." diff --git a/games/etlegacy/files/openurl.sh b/games/etlegacy/files/openurl.sh new file mode 100644 index 0000000000..274f12d08d --- /dev/null +++ b/games/etlegacy/files/openurl.sh @@ -0,0 +1,15 @@ +#!/bin/sh +# use this script to customize the way the engine should open URLs + +for test_browser in firefox seamonkey opera +do + browser=`which $test_browser` + if [ "x$browser" != "x" ] + then + $browser -remote "openURL($1,new-window)" || $browser "$1" + exit + fi +done +# xterm -e lynx "$1" + +exit 0 diff --git a/games/etlegacy/slack-desc b/games/etlegacy/slack-desc new file mode 100644 index 0000000000..7c92988b4e --- /dev/null +++ b/games/etlegacy/slack-desc @@ -0,0 +1,19 @@ +# HOW TO EDIT THIS FILE: +# The "handy ruler" below makes it easier to edit a package description. +# Line up the first '|' above the ':' following the base package name, and +# the '|' on the right side marks the last column you can put a character in. +# You must make exactly 11 lines for the formatting to be correct. It's also +# customary to leave one space after the ':' except on otherwise blank lines. + + |-----handy-ruler------------------------------------------------------| +etlegacy: etlegacy (collaborative FPS) +etlegacy: +etlegacy: Wolfenstein Enemy Territory : Legacy is a project that aims to create +etlegacy: a fully compatible client and server for the popular online FPS game +etlegacy: Wolfenstein: Enemy Territory. +etlegacy: It's based on its source code released under the GPLv3 license. +etlegacy: The main goal of this project is to fix bugs, remove old dependencies +etlegacy: and make it playable on all major operating systems while still +etlegacy: remaining compatible with the ET 2.60b version and as many of its mods +etlegacy: as possible. +etlegacy: homepage: http://www.etlegacy.com/ -- cgit v1.2.3