#!/bin/sh
#
# ioquake3.SlackBuild
# 2013-05-02
#
# ioquake3 (or ioq3 for short,) aims to build upon
# id Software's Quake 3 source code release.

PRGNAM=ioquake3
VERSION=1.36-7.1

# automatically determine the architecture
if [ -z "$ARCH" ]; then
  case "$(uname -m)" in
    i?86) ARCH=i386 ;;
    x86_64) ARCH=x86_64 ;;
       *) exit 1 ;;
  esac
fi

BUILD=${BUILD:-1}
TAG=${TAG:-scr}


QUAKE3_DIR=${QUAKE3_DIR:-"/mnt/ntfs/games/Quake III Arena"}

HOMEPAGE="http://ioquake3.org/"
if [ "$ARCH" = "i386" ]; then
  SOURCE="ioquake3-${VERSION}.i386.run"
  MD5SUM="197e79549882004fa6d5671d08414791"
 elif [ "$ARCH" = "x86_64" ]; then
  SOURCE="ioquake3-${VERSION}.x86_64.run"
  MD5SUM="6ab2a126d4b9d622534c696be7e5155a"
fi
DOWNLOAD="${HOMEPAGE}files/1.36/installer/${SOURCE}"

REQUIRES=""

MAINTAINER="Gernot Walzl"
EMAIL="gernot.walzl@gmx.at"

DESC="ioquake3

ioquake3 (or ioq3 for short,) aims to build upon
id Software's Quake 3 source code release.

${HOMEPAGE}"

DOCS="$(pwd)/$0 COPYING README *.txt"

# EOF info


# set initial variables
CWD=$(pwd)
TMP=${TMP:-/tmp}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}

# exit on error
set -e

# download the source if needed
if [ ! -f $CWD/$SOURCE ]; then
  wget -O $CWD/$SOURCE $DOWNLOAD || exit 1
fi

# check for correct source file
if [ "$(md5sum $CWD/$SOURCE | cut -f 1 -d ' ')" != "$MD5SUM" ]; then
  exit 1
fi

# extract the application source
cd $TMP || exit 1
chmod +x $CWD/$SOURCE
$CWD/$SOURCE --noexec --target $PRGNAM || exit 1
cd $PRGNAM || exit 1

# fix permissions
chown -R root:root .
chmod -R u+w,go+r-w,a-s .

# install everything into the package directory
rm -rf $PKG
mkdir -p $PKG/install
mkdir -p $PKG/usr/games/quake3
cd $PKG/usr/games/quake3 || exit 1
if [ "$ARCH" = "i386" ]; then
  tar xvf $TMP/$PRGNAM/ioquake3.i386.tar
  cat > $PKG/usr/games/$PRGNAM <<EOF
#!/bin/sh
cd /usr/games/quake3
./ioquake3.i386 "\$@"
EOF
 elif [ "$ARCH" = "x86_64" ]; then
  tar xvf $TMP/$PRGNAM/ioquake3.x86_64.tar
  cat > $PKG/usr/games/$PRGNAM <<EOF
#!/bin/sh
cd /usr/games/quake3
./ioquake3.x86_64 "\$@"
EOF
fi
chmod +x $PKG/usr/games/$PRGNAM
rm -rf $PKG/usr/games/quake3/demoq3

cat > $PKG/usr/games/quake3/baseq3/CHECKSUMS.md5 <<EOF
1197ca3df1e65f3c380f8abc10ca43bf  pak0.pk3
48911719d91be25adb957f2d325db4a0  pak1.pk3
d550ce896130c47166ca44b53f8a670a  pak2.pk3
968dfd0f30dad67056115c8e92344ddc  pak3.pk3
24bb1f4fcabd95f6e320c0e2f62f19ca  pak4.pk3
734dcd06d2cbc7a16432ff6697f1c5ba  pak5.pk3
873888a73055c023f6c38b8ca3f2ce05  pak6.pk3
8fd38c53ed814b64f6ab03b5290965e4  pak7.pk3
d8b96d429ca4a9c289071cb7e77e14d2  pak8.pk3
EOF

cat > $PKG/usr/games/quake3/missionpack/CHECKSUMS.md5 <<EOF
e8ba9e3bf06210930bc0e7fdbcdd01c2  pak0.pk3
8b8a51f9edf2671dfeb53e0405bac3c6  pak1.pk3
4e02be54614ca7dbed81b5c44a19302d  pak2.pk3
e7f91f4eb6e3d28d978b8cca54631695  pak3.pk3
EOF

cd $TMP/$PRGNAM
mkdir -p $PKG/usr/share/pixmaps
mv quake3.png $PKG/usr/share/pixmaps/
mkdir -p $PKG/usr/share/applications
mv ioquake3.desktop.in $PKG/usr/share/applications/ioquake3.desktop

# add documentation
if [ "$DOCS" != "" ]; then
  mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
  cp -a $DOCS $PKG/usr/doc/$PRGNAM-$VERSION
  find $PKG/usr/doc/$PRGNAM-$VERSION -type f -exec chmod 644 {} \;
fi

# add some description to the package
if [ "$DESC" != "" ]; then
  echo "$DESC" | sed 's/^/'$PRGNAM': /g' > $PKG/install/slack-desc
fi

# append dependency information to the package
if [ "$REQUIRES" != "" ]; then
  for REQ in $REQUIRES; do
    echo "$REQ" >> $PKG/install/slack-required
  done
fi

# doinst.sh
cat > $PKG/install/doinst.sh <<EOF
#!/bin/sh
EOF
for I in $(seq 0 8); do
  cat >> $PKG/install/doinst.sh <<EOF
( cd usr/games/quake3/baseq3 ; ln -s "${QUAKE3_DIR}/baseq3/pak${I}.pk3" pak${I}.pk3 )
EOF
done
for I in $(seq 0 3); do
  cat >> $PKG/install/doinst.sh <<EOF
( cd usr/games/quake3/missionpack ; ln -s "${QUAKE3_DIR}/missionpack/pak${I}.pk3" pak${I}.pk3 )
EOF
done

# build the package
cd $PKG
PKGVERSION=$(echo $VERSION | sed 's/-/./g')
makepkg -l y -c n \
  $OUTPUT/$PRGNAM-$PKGVERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz} \
  || exit 1

# make everything clean
cd $CWD
rm -rf $PKG
rm -rf $TMP/$PRGNAM
