summaryrefslogtreecommitdiffstats
path: root/games/zoom/zoom.SlackBuild
blob: 70b2eb349562a8d36caf7f980d784aa4bc5276cc (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
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
#!/bin/bash

# Slackware build script for zoom

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

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

# 20211011 bkw: BUILD=2
# - binary in /usr/games.
# - update man page.
# - do NOT move man page to section 6, there's already a zoom(6), which
#   is part of xscreensaver.
# - finally noticed that the Linux build of zoom does *not* play
#   TADS, HUGO, or Glulx games. The Mac OSX Cocoa build does, but the
#   extra code is in Objective C and doesn't look like it's portable
#   to non-Mac platforms. So update README, slack-desc, and the man
#   page to reflect that this is a Z-Code-only interpreter.
# - add a few bugfix patches from Debian.
# - new-style icons.
# 20170621 bkw: fix build for -current

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

PRGNAM=zoom
VERSION=${VERSION:-1.1.5}
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"
elif [ "$ARCH" = "i686" ]; then
  SLKCFLAGS="-O2 -march=i686 -mtune=i686"
elif [ "$ARCH" = "x86_64" ]; then
  SLKCFLAGS="-O2 -fPIC"
else
  SLKCFLAGS="-O2"
fi

set -e

rm -rf $PKG
mkdir -p $TMP $PKG $OUTPUT
cd $TMP
rm -rf $PRGNAM-$VERSION
tar xvf $CWD/$PRGNAM-$VERSION.tar.gz
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 {} \+

# 20211011 bkw: replace my old no_inline.patch with Debian's.
# config_xft.diff, remove_rice.diff, zoomrc_in_etc.diff are mine. The
# rest of patches/ came from Debian's zoom-player patchlevel 6.
# This includes a couple of fixes for crashing bugs.
for i in $( cat $CWD/patches/series ); do
  echo "=== applying $i"
  patch -p1 < $CWD/patches/$i
done

# 20211011 bkw: note to self: --enable-new-terp defines HAVE_COMPUTED_GOTOS
# in config.h. Supposedly this might be faster on some architectures, and
# slower on others. I don't enable this feature because:
# - The games already run fast enough.
# - The Debian packagers didn't enable it, so it's not likely to be
#   well-tested.
# - I'd have to spend time/effort trying to figure out how to benchmark
#   the interpreter to see if it even made a difference.

CFLAGS="$SLKCFLAGS" \
CXXFLAGS="$SLKCFLAGS" \
./configure \
  --prefix=/usr \
  --bindir=/usr/games \
  --sysconfdir=/etc \
  --localstatedir=/var \
  --mandir=/usr/man \
  --docdir=/usr/doc/$PRGNAM-$VERSION \
  --build=$ARCH-slackware-linux

make
make install-strip DESTDIR=$PKG

# Move config file to /etc, since we patched it for that.
mkdir -p $PKG/etc/$PRGNAM
mv $PKG/usr/share/$PRGNAM/${PRGNAM}rc $PKG/etc/$PRGNAM/${PRGNAM}rc.new

# If zoom is run with no arguments, it shows a menu of games from its
# default location. Let's make this the same location inform installs
# its example games to (also, zork installs its games here).
mkdir -p $PKG/usr/share/zcode
ln -s ../zcode $PKG/usr/share/$PRGNAM/games

mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
rm -f manual/Makefile*
cp -a AUTHORS COPYING ChangeLog NEWS README THANKS TODO manual \
  $PKG/usr/doc/$PRGNAM-$VERSION
cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild

# Icons extracted from src/macos/zoom-app.icns with icns2png from
# the libicns package. There was no 48x48 or 64x64, so I scaled
# the 128x128 one down with convert(1). I didn't include the 512x512
# or 256x256 icons, AFAIK nothing uses icons that large (yet?).
for i in $CWD/icons/*.png; do
  px=$( basename $i | cut -d. -f1 )
  size=${px}x${px}
  dir=$PKG/usr/share/icons/hicolor/$size/apps
  mkdir -p $dir
  cat $i > $dir/$PRGNAM.png
done

mkdir -p $PKG/usr/share/pixmaps/
ln -s ../icons/hicolor/64x64/apps/$PRGNAM.png $PKG/usr/share/pixmaps/$PRGNAM.png

mkdir -p $PKG/usr/share/applications/
cat $CWD/$PRGNAM.desktop > $PKG/usr/share/applications/$PRGNAM.desktop

mkdir -p $PKG/usr/man/man1
sed "s,@VERSION@,$VERSION,g" < $CWD/$PRGNAM.1 \
    | gzip -9c > $PKG/usr/man/man1/$PRGNAM.1.gz

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