From 5195e7fd091ef8467fe2c04354175a3dc6b8ea2f Mon Sep 17 00:00:00 2001 From: B. Watson Date: Fri, 9 May 2014 17:33:33 +0700 Subject: games/wargus: Added (Warcraft II data game set). Signed-off-by: Willy Sudiarto Raharjo --- games/wargus/README | 8 +++ games/wargus/README_Slackware.txt | 95 ++++++++++++++++++++++++++++ games/wargus/doinst.sh | 3 + games/wargus/extract-warcraft2 | 129 ++++++++++++++++++++++++++++++++++++++ games/wargus/slack-desc | 19 ++++++ games/wargus/wargus.SlackBuild | 100 +++++++++++++++++++++++++++++ games/wargus/wargus.info | 10 +++ 7 files changed, 364 insertions(+) create mode 100644 games/wargus/README create mode 100644 games/wargus/README_Slackware.txt create mode 100644 games/wargus/doinst.sh create mode 100644 games/wargus/extract-warcraft2 create mode 100644 games/wargus/slack-desc create mode 100644 games/wargus/wargus.SlackBuild create mode 100644 games/wargus/wargus.info (limited to 'games') diff --git a/games/wargus/README b/games/wargus/README new file mode 100644 index 0000000000..92c53e38bb --- /dev/null +++ b/games/wargus/README @@ -0,0 +1,8 @@ +wargus (Warcraft II data game set for the Stratagus engine) + +Wargus can be used to play Warcraft II from Blizzard Entertainment. + +You need the original Warcraft II for DOS or the Beyond the Dark +Portal expansion pack to extract the game data files. See the file +README_Slackware.txt for full instructions. If you don't read the +instructions, you won't get a playable game. diff --git a/games/wargus/README_Slackware.txt b/games/wargus/README_Slackware.txt new file mode 100644 index 0000000000..21dde23718 --- /dev/null +++ b/games/wargus/README_Slackware.txt @@ -0,0 +1,95 @@ +I hate having to have a set of notes/instructions that's longer than +the SlackBuild is, but this stuff is important... + +Stratagus +--------- + +The version number of wargus needs to match the version number of your +installed stratagus package. In practice this won't be a problem if +you use SlackBuilds.org for both (because both will get updated at the +same time). + +Slackware Note +-------------- + +When creating a package, you'll see errors like: + +WARNING: gzip test failed on usr/share/games/stratagus/wargus/music/Orc Defeat.ogg.gz + +These are harmless, and caused by makepkg's gzip test not being able to +handle filenames with spaces in them. There's a thread on linuxquestions +about makepkg's problems with spaces in filenames: + +http://www.linuxquestions.org/questions/slackware-14/bug-in-makepkg-and-symlinks-with-blanks-in-filename-4175480597/ + +The general consensus seems to be, changing makepkg isn't going to happen. + +SlackBuilds.org Note +-------------------- + +In the .info file, stratagus, ffmpeg2theora, TiMidity++, and eawpats +are listed as requirements. Only stratagus is a runtime requirement, +the others are only required at build time (matters if you're deploying +on a host other than the build host). + +Game Data +--------- + +By itself, wargus isn't a playable game. It needs the data from the +original Warcraft II game. + +You need the original Warcraft II for DOS or the Beyond the Dark Portal +expansion pack to extract the game data files. Battle.net edition doesn't +work. This can be either a CD-ROM, ISO image, installed game directory +(e.g. on your Windows C: drive), or a zip/rar/7z/tar archive of any +of the above. + +You can choose to either build a package that includes the game data, or +add the game data separately after package installation. If you include +the data in your package, you MAY NOT redistribute your package. + +To build a package with the data: + +Whatever form you have the game in, set the environment +variable GAMEDATA to point to it: + +export GAMEDATA=/dev/cdrom # original CD +export GAMEDATA=~/oldgames/warcraft2.rar # archive of your old install +export GAMEDATA=~/dosbox/war2 # installed copy +export GAMEDATA=/tmp/warcraft2.iso # image of CD + +...then run ./wargus.SlackBuild + +If GAMEDATA isn't set, or if the extraction process fails, your wargus +package won't include the game data. You'll be unable to play the game +until you've extracted the data yourself. + +Note that the data extraction process ignores many possible errors. If +the game doesn't seem to work correctly, it's possible your install of +Warcraft II is corrupted. + +If you build a package without the data: + +The extraction script used by the SlackBuild is installed as +/usr/bin/extract-warcraft2 (run with no arguments for usage) and can +be run any time without reinstalling the wargus package. If you do +this, and later decide to remove wargus, you'll have to manually rm -rf +/usr/share/games/stratagus/wargus after package removal. + +For game data extraction to work, you will need: + +- a working install of TiMidity++ configured to use eawpats (check +/etc/timidity.cfg; freepats may work instead). + +- ffmpeg2theora + +- if you're extracting from a 7zip or rar archive, you'll need p7zip +or unrar. + +Extraction takes a while, depending on your CPU speed. It renders all the +game's MIDI music as wav files, transcodes those to .ogg, then transcodes +all the game's videos to ogg theora. + +extract-warcraft2 is a wrapper for wartool, supplied with wargus. See +the wartool man page for more information. + diff --git a/games/wargus/doinst.sh b/games/wargus/doinst.sh new file mode 100644 index 0000000000..5fb28930db --- /dev/null +++ b/games/wargus/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/wargus/extract-warcraft2 b/games/wargus/extract-warcraft2 new file mode 100644 index 0000000000..6ede653d18 --- /dev/null +++ b/games/wargus/extract-warcraft2 @@ -0,0 +1,129 @@ +#!/bin/sh + +DEFAULTDEST="/usr/share/games/stratagus/wargus" + +SOURCE="$1" +DEST="${2:-$DEFAULTDEST}" +WARTOOL="${WARTOOL:-wartool}" + +SELF="$( basename "$0" )" +if [ -z "$SOURCE" ]; then + cat < + +source is one of: + +- A block device node or symlink to one (e.g. /dev/cdrom). The + device must contain a Warcraft II CD-ROM. + +- An ISO image of the Warcraft II CD-ROM. + +- A directory containing an installed copy of Warcraft II. + +- A zip, rar, 7z, or tar.(gz|xz|bz2) archive containing either the + contents of the Warcraft II CD-ROM or an installed copy of the game + (but NOT an archive containing an ISO image). + +By "Warcraft II", we mean the original DOS version (or the expansion +pack for the DOS version), *not* the Battle.net edition. The expansion +is probably preferable (has more maps), but either one will work. + +Filename case inside archives is ignored. + +dest is the optional directory to output extracted data to. If not +given, $DEFAULTDEST is used. + +Since this script wants to do things like mount CDs and write to +/usr/share, it generally needs to be run as root. + +For extracting 7z or rar archives, you will need p7zip or unrar. + +This script was written by B. Watson for the SlackBuilds.org +project and is released under the terms of the WTFPL. See +http://www.wtfpl.net/txt/copying/ for details. +EOF + exit 0 +fi + +# try to figure out what $SOURCE is. It can be the CD-ROM, an ISO +# image, an installed directory, or a zip/rar/7z/tar/etc archive +# of an installed dir or the contents of the CD. + +# NOT supported: archives containing the .iso image. + +SOURCE=$( readlink -q -n -f "$SOURCE" ) +TYPE=$( file "$SOURCE" ) + +SRCDIR=$( mktemp -d -t extract-warcraft2.XXXXXX ) + +case "$TYPE" in + *directory*) rm -rf "$SRCDIR" ; SRCDIR="$SOURCE" ; KEEPSRC="yes" ;; + + *block*special*) + mount "$SOURCE" "$SRCDIR" + MOUNTED="$SRCDIR" + ROPT="-r" + ;; + + *ISO*9660*data*) + mount -o loop "$SOURCE" "$SRCDIR" + MOUNTED="$SRCDIR" + ;; + + *7-zip*) + ( cd "$SRCDIR" && 7za x "$SOURCE" ) + ;; + + *RAR*arch*) + ( cd "$SRCDIR" && unrar x "$SOURCE" ) + ;; + + *Zip*arch*) + ( cd "$SRCDIR" && unzip "$SOURCE" ) + ;; + + *gzip*|*bzip2*|*XZ*) + ( cd "$SRCDIR" && tar xvf "$SOURCE" ) + ;; + + *) + echo "Can't figure out what '$SOURCE' is, aborting" 1>&2 + exit 1 + ;; +esac + +# now find the data dir, if it exists +DATADIR="$SRCDIR" +for i in data DATA Data; do + if [ -d "$SRCDIR/$i" ]; then + DATADIR="$SRCDIR/$i" + fi +done + +# sanity check the data dir we think we found +for i in REZDAT rezdat Rezdat; do + if [ -e "$DATADIR/$i.war" ] || + [ -e "$DATADIR/$i.WAR" ] || + [ -e "$DATADIR/$i.War" ] + then + FOUND=yes + fi +done + +if [ "$FOUND" != "yes" ]; then + echo "Can't find rezdat.war in $DATADIR, aborting" 1>&2 && + exit 1 +fi + +mkdir -p $DEST +"$WARTOOL" -m -v $ROPT "$DATADIR" "$DEST" + +if [ "$MOUNTED" != "" ]; then + umount "$MOUNTED" +fi + +if [ "$KEEPSRC" != "yes" ]; then + rm -rf "$SRCDIR" +fi diff --git a/games/wargus/slack-desc b/games/wargus/slack-desc new file mode 100644 index 0000000000..5b28edc5d9 --- /dev/null +++ b/games/wargus/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------------------------------------------------------| +wargus: wargus (Warcraft II data game set for the Stratagus engine) +wargus: +wargus: Wargus can be used to play Warcraft II from Blizzard Entertainment. +wargus: +wargus: This package @CONTAINS@ the game data files. +wargus: @REDIST@ +wargus: +wargus: +wargus: +wargus: +wargus: diff --git a/games/wargus/wargus.SlackBuild b/games/wargus/wargus.SlackBuild new file mode 100644 index 0000000000..ffe80c1a80 --- /dev/null +++ b/games/wargus/wargus.SlackBuild @@ -0,0 +1,100 @@ +#!/bin/sh + +# Slackware build script for wargus + +# Written by B. Watson (yalhcru@gmail.com) + +# Licensed under the WTFPL. See http://www.wtfpl.net/txt/copying/ for details. + +PRGNAM=wargus +VERSION=${VERSION:-2.2.7} +BUILD=${BUILD:-1} +TAG=${TAG:-_SBo} + +if [ -z "$ARCH" ]; then + case "$( uname -m )" in + i?86) ARCH=i486 ;; + arm*) ARCH=arm ;; + *) ARCH=$( uname -m ) ;; + esac +fi + +CWD=$(pwd) +TMP=${TMP:-/tmp/SBo} +PKG=$TMP/package-$PRGNAM +OUTPUT=${OUTPUT:-/tmp} + +if [ "$ARCH" = "i486" ]; then + SLKCFLAGS="-O2 -march=i486 -mtune=i686" + LIBDIRSUFFIX="" +elif [ "$ARCH" = "i686" ]; then + SLKCFLAGS="-O2 -march=i686 -mtune=i686" + LIBDIRSUFFIX="" +elif [ "$ARCH" = "x86_64" ]; then + SLKCFLAGS="-O2 -fPIC" + LIBDIRSUFFIX="64" +else + SLKCFLAGS="-O2" + LIBDIRSUFFIX="" +fi + +set -e + +rm -rf $PKG +mkdir -p $TMP $PKG $OUTPUT +cd $TMP +rm -rf ${PRGNAM}_${VERSION}.orig +tar xvf $CWD/${PRGNAM}_${VERSION}.orig.tar.gz +cd ${PRGNAM}_${VERSION}.orig +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 {} \; + +mkdir -p build +cd build + cmake \ + -DCMAKE_C_FLAGS:STRING="$SLKCFLAGS" \ + -DCMAKE_CXX_FLAGS:STRING="$SLKCFLAGS" \ + -DCMAKE_INSTALL_PREFIX=/usr \ + -DCMAKE_BUILD_TYPE=Release .. + make + make install/strip DESTDIR=$PKG +cd .. + +mkdir -p $PKG/usr/man/man6 +for i in doc/*.6; do + gzip -9c < $i > $PKG/usr/man/man6/$( basename $i ).gz +done + +# attempt to extract the game data files +CONTAINS="does not contain" +REDIST="This binary package may be redistributed." +if [ -n "$GAMEDATA" ]; then + WARTOOL=$PKG/usr/bin/wartool \ + $CWD/extract-warcraft2 \ + "$GAMEDATA" \ + $PKG/usr/share/games/stratagus/$PRGNAM + if [ "$?" = "0" ]; then + CONTAINS=contains + REDIST="DO NOT REDISTRIBUTE this binary package." + fi +fi + +# include the extractor script in the package, either way +install -m0755 -oroot -groot $CWD/extract-warcraft2 $PKG/usr/bin + +mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION +cp -a $CWD/README_Slackware.txt COPYING* README doc/changelog doc/*txt \ + $PKG/usr/doc/$PRGNAM-$VERSION +cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild + +mkdir -p $PKG/install +sed -e "s,@CONTAINS@,$CONTAINS," -e "s,@REDIST@,$REDIST," $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/wargus/wargus.info b/games/wargus/wargus.info new file mode 100644 index 0000000000..bb89d83b3d --- /dev/null +++ b/games/wargus/wargus.info @@ -0,0 +1,10 @@ +PRGNAM="wargus" +VERSION="2.2.7" +HOMEPAGE="http://wargus.sourceforge.net/index.shtml" +DOWNLOAD="https://launchpad.net/wargus/trunk/2.2.7/+download/wargus_2.2.7.orig.tar.gz" +MD5SUM="115ad5f85d6e6e2078bafb2f95599d6b" +DOWNLOAD_x86_64="" +MD5SUM_x86_64="" +REQUIRES="stratagus ffmpeg2theora TiMidity++ eawpats" +MAINTAINER="B. Watson" +EMAIL="yalhcru@gmail.com" -- cgit v1.2.3