summaryrefslogtreecommitdiffstats
path: root/games/nblood/nblood.SlackBuild
blob: 18c361cc610d228c73b97812e509198771bef2de (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
#!/bin/bash

# Slackware build script for nblood

# Written by B. Watson (yalhcru@gmail.com)

# Licensed under the WTFPL. See http://www.wtfpl.net/txt/copying/ for details.

# Note: if you go digging into the source, you'll see that there are lots
# of commented-out game variations, including shareware duke nukem, the
# non-atomic full version, even redneck rampage. I tried uncommenting a
# couple of them, but they don't work. So for now, rednukem can't play
# the shareware version from eduke32_shareware_data. I expect upstream
# will finish the support for these at a later date...

cd $(dirname $0) ; CWD=$(pwd)

PRGNAM=nblood
VERSION=${VERSION:-1.01+20200428_069c52b26}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
PKGTYPE=${PKGTYPE:-tgz}

if [ -z "$ARCH" ]; then
  case "$( uname -m )" in
    i?86) ARCH=i586 ;;
    arm*) ARCH=arm ;;
       *) ARCH=$( uname -m ) ;;
  esac
fi

# If the variable PRINT_PACKAGE_NAME is set, then this script will report what
# the name of the created package would be, and then exit. This information
# could be useful to other scripts.
if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
  echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
  exit 0
fi

TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}

# 20200430 bkw: upstream includes a lot of fancy optimization flags that
# are presumably well-tested, so I'm not using SLKCFLAGS. Also, nothing
# here needs LIBDIRSUFFIX.

set -e

rm -rf $PKG
mkdir -p $TMP $PKG $OUTPUT
cd $TMP
rm -rf $PRGNAM-v$VERSION
tar xvf $CWD/$PRGNAM-v$VERSION.tar.xz
cd $PRGNAM-v$VERSION
chown -R root:root .
find -L .  -perm /111 -a \! -perm 755 -a -exec chmod 755 {} \+ -o \
        \! -perm /111 -a \! -perm 644 -a -exec chmod 644 {} \+

# Where do we find the game data?

# rednukem already looks in /usr/share/games/eduke32/, though it
# hates the shareware .grp file from eduke32_shareware_data. It'll
# play the atomic edition of the full game.

# nblood looks in /usr/share/games/nblood/, which is fine.

# pcexhumed doesn't look in /usr anywhere, so I'll make up a dir name
# for it to use.
sed -i \
  '/^ *addsearchpath(cwd);/aaddsearchpath("/usr/share/games/pcexhumed");' \
  source/exhumed/src/exhumed.cpp

# The engine wants to write a log file in the current directory where
# it gets run... and segfaults if it can't. The log file is just a copy
# of the process's stderr it looks like, so let's disable it.
sed -i.bak \
  's|OSD_SetLogFile(APPBASENAME ".log");|OSD_SetLogFile("/dev/null");|' \
  source/blood/src/blood.cpp \
  source/rr/src/game.cpp \
  source/exhumed/src/exhumed.cpp

make

mkdir -p $PKG/usr/games $PKG/usr/share/applications
for game in $PRGNAM $PRGNAM-cryptic pcexhumed rednukem; do
  [ -e $game ] && install -s -m0755 $game $PKG/usr/games
  cat $CWD/desktop/$game.desktop > $PKG/usr/share/applications/$game.desktop
done

# Wrapper script for Cryptic Passage, since the game doesn't let you
# choose it from the GUI.
install -oroot -groot -m0755 $CWD/$PRGNAM-cryptic $PKG/usr/games

# The .pk3 file has to be in the game data dir.
GAMEDIR=$PKG/usr/share/games/$PRGNAM
mkdir -p $GAMEDIR
install -oroot -groot -m0644 $PRGNAM.pk3 $GAMEDIR

# Extract/copy the Blood gamedata. Automated here because a description of
# the process amounts to a shell script anyway. It's a standalone script
# so non-Slackware users might be able to use it.
cd $CWD
  WITHDATA="does not include"
  TMP="$TMP" \
    sh $CWD/extract-blood-data.sh $GAMEDIR && \
    WITHDATA="includes"
cd -

# Icons extracted from source/blood/rsrc/game_icon.ico with icotool.
for icon in $CWD/icons/*.png; do
  size="$( basename $icon .png )"
  idir=$PKG/usr/share/icons/hicolor/${size}x${size}/apps
  mkdir -p $idir
  cat $icon > $idir/$PRGNAM.png
done

mkdir -p $PKG/usr/share/pixmaps
cat $CWD/icons/64.png > $PKG/usr/share/pixmaps/$PRGNAM.png

mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
cp -a *.md source/blood/gpl-2.0.txt $PKG/usr/doc/$PRGNAM-$VERSION
cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild

mkdir -p $PKG/install
sed "s,@WITHDATA@,$WITHDATA," $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