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
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
|
#!/bin/bash
# Slackware build script for openjazz
# Written by B. Watson (yalhcru@gmail.com)
# Licensed under the WTFPL. See http://www.wtfpl.net/txt/copying/ for details.
# 20211026 bkw:
# - update for v20190106. Can't build old versions.
# - binary in /usr/games, share dir /usr/share/games/openjazz.
# - update man page.
# - install shareware docs as *.txt, convert to utf-8.
# - recreate paths.diff for this version.
cd $(dirname $0) ; CWD=$(pwd)
PRGNAM=openjazz
VERSION=${VERSION:-20190106}
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 [ ! -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}
if [ "$ARCH" = "i586" ]; then
SLKCFLAGS="-O2 -march=i586 -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
tar xvf $CWD/$PRGNAM-$VERSION.tar.xz
cd $PRGNAM-$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 {} \+
# Patch does 4 things:
# - Always look for openjazz.000 in /usr/share/games/openjazz. Saves the user
# from having to keep copies or symlinks of it in every game dir.
# - Writes config file to user's homedir, not current dir.
# - For .psm (music) files, if they're not found as "blah.psm", try the
# all-uppercase "BLAH.PSM" instead. Saves the user having to rename
# them (and keeps things consistent, EVERYTHING ALL CAPS). In case you're
# wondering, the lowercase psm filenames are hardcoded inside the data
# files from the DOS game, not the source.
# - Logs the full path & result of every attempted file open. I needed
# this myself to understand WTF was going on, leaving it in case
# users find it helpful.
patch -p1 < $CWD/paths.diff
autoreconf -if
# HOMEDIR should be defined on *nix, for some reason it's not automatically.
# 20151119 bkw: modplug header in wrong place (or, is it?)
SLKCFLAGS="$SLKCFLAGS -DHOMEDIR -I/usr/include/libmodplug"
CFLAGS="$SLKCFLAGS" \
CXXFLAGS="$SLKCFLAGS" \
./configure \
--prefix=/usr \
--bindir=/usr/games/ \
--libdir=/usr/lib${LIBDIRSUFFIX} \
--sysconfdir=/etc \
--localstatedir=/var \
--mandir=/usr/man \
--docdir=/usr/doc/$PRGNAM-$VERSION \
--build=$ARCH-slackware-linux
make
make install-strip DESTDIR=$PKG
# grr.
mv $PKG/usr/games/OpenJazz $PKG/usr/games/$PRGNAM
mkdir -p $PKG/usr/share/games
mv $PKG/usr/share/$PRGNAM $PKG/usr/share/games/$PRGNAM
# 20211026 bkw: upstream's .desktop is useless.
rm -f $PKG/usr/share/applications/*.desktop
mkdir -p $PKG/usr/share/pixmaps
ln -s ../icons/hicolor/48x48/apps/OpenJazz.png $PKG/usr/share/pixmaps/OpenJazz.png
mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION/shareware \
$PKG/usr/share/games/$PRGNAM/shareware
# shareware data. the *.DOC files are renamed to .txt to avoid dumb
# desktop environments thinking they're ms-word docs. ORDER_DE and
# ORDER_UK are non-ASCII, convert to Unicode and UTF-8.
cd $PKG/usr/share/games/$PRGNAM/shareware
unzip $CWD/jjrabbit.zip
for i in *.DOC; do
j=$( basename $i .DOC )
dest=$PKG/usr/doc/$PRGNAM-$VERSION/shareware/$j.txt
sed 's,\r,,g' $i | iconv -f cp437 -t utf-8 > $dest
done
rm -f *.EXE *.DIZ *.DOC *.PIF
cd -
# shareware wrapper script
mkdir -p $PKG/usr/games
cat <<EOF >$PKG/usr/games/$PRGNAM-shareware
#!/bin/sh
exec $PRGNAM /usr/share/games/$PRGNAM/shareware "\$@"
EOF
chmod 755 $PKG/usr/games/$PRGNAM-shareware
# shareware icon came from windows jazz jackrabbit CD, converted with icotool
cat $CWD/$PRGNAM.png > $PKG/usr/share/icons/hicolor/48x48/apps/$PRGNAM-shareware.png
ln -s ../icons/hicolor/48x48/apps/$PRGNAM-shareware.png \
$PKG/usr/share/pixmaps/$PRGNAM-shareware.png
# man page written for this slackbuild
mkdir -p $PKG/usr/man/man6
gzip -9c < $CWD/$PRGNAM.6 > $PKG/usr/man/man6/$PRGNAM.6.gz
ln -s $PRGNAM.6.gz $PKG/usr/man/man6/$PRGNAM-shareware.6.gz
mkdir -p $PKG/usr/share/applications
cat $CWD/$PRGNAM-shareware.desktop \
> $PKG/usr/share/applications/$PRGNAM-shareware.desktop
for i in *.txt; do
sed 's,\r,,g' $i > $PKG/usr/doc/$PRGNAM-$VERSION/$i
done
cp -a README* $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
|