summaryrefslogtreecommitdiffstats
path: root/games/trs80gp/trs80gp.SlackBuild
blob: 330e8d2ac89476dd63cf57bca2141eb18d0432b7 (about) (plain) (blame)
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
#!/bin/bash

# Slackware build script for trs80gp

# Written by B. Watson (urchlay@slackware.uk)

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

# Note: I found no way to use this emulator without PulseAudio. This
# is only a problem for holdouts like me, who hate pulse and
# actively avoid using it. apulse won't work (it doesn't supply
# libpulsecommon-*.so), and the emulator will segfault at startup if
# it can't use pulse. The only workaround is to run "trs80gp -sx", but
# that disables *all* audio, which is not really ideal. Closed source,
# so no patching.

# Dirt hack alert!
#
# The 32-bit x86 binary actually runs fine on Slackware 14.2. But on 15.0,
# it crahes on startup:
#
# trs80gp: cairo-surface.c:1817: cairo_surface_set_device_scale: Assertion `status == CAIRO_STATUS_SUCCESS' failed.
#
# To make it run on 15.0, use the cairo shared libs from 14.2. Amazingly,
# this actually works!
#
# So on i?86, /usr/games/trs80gp is a wrapper script that execs the
# real binary with the old cairo libs preloaded. On all other arches,
# /usr/games/trs80gp is the real binary.

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

PRGNAM=trs80gp
VERSION=${VERSION:-2.4.11}
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}

case "$ARCH" in
     i?86) DIR=linux-32 ;;
   x86_64) DIR=linux-64 ;;
      arm) DIR=rpi-32   ;;
  aarch64) DIR=rpi-64   ;;
esac

set -e

rm -rf $PKG
mkdir -p $TMP $PKG $OUTPUT
cd $TMP
rm -rf $PRGNAM-$VERSION
mkdir -p $PRGNAM-$VERSION
cd $PRGNAM-$VERSION
unzip $CWD/$PRGNAM-$VERSION.zip
chown -R root:root .
# reset permissions, please do not revert to template.
find . -type f -a -exec chmod 644 {} + -o -type d -a -exec chmod 755 {} +

# Main binary, one dir per arch. No -s here, it's already stripped.
if [ "$DIR" = "linux-32" ]; then
  install -D -m0755 $DIR/$PRGNAM $PKG/usr/libexec/$PRGNAM/$PRGNAM
  install -D -m0755 -oroot -groot $CWD/wrapper32.sh $PKG/usr/games/$PRGNAM
  mkdir -p $PKG/usr/lib/$PRGNAM
  cd $PKG/usr/lib/$PRGNAM
  tar xvf $CWD/cairo-1.14.6-i586-2.txz \
          --wildcards \
          --strip-components=2 \
          usr/lib/libcairo\*.so\*
  cd -
else
  install -D -m0755 $DIR/$PRGNAM $PKG/usr/games/$PRGNAM
fi

# Rest of the goodies are in the Mac app bundle.
PKGDOC=$PKG/usr/doc/$PRGNAM-$VERSION
SFX=$PKG/usr/share/$PRGNAM/sounds
DISKS=$PKG/usr/share/$PRGNAM/disks
RES=mac/trs80gp.app/Contents/Resources
mkdir -p $PKGDOC/html $SFX $DISKS

# The sounds are meant to be used with the -sf option, to have
# the emulator make mechanical disk noises during disk I/O.
# Since it's closed-source, I can't patch it to look in our dir for
# the wav files. They're disabled by default, anyway.
cp -a $RES/*.wav $SFX

# Note: doc.html is identical to help/all.html, don't bother.
# Nothing seems to need $RES/*.png, don't bother.
cp -a $RES/*.txt $PKGDOC
cp -a $RES/help/*.{html,png} $PKGDOC/html

# The emulator ships zipped disk images, but seems to require them
# to be unzipped to actually use them. Takes up 10MB, but gives a
# nice selection of DOSes and blank disks.
for i in $RES/*.zip; do
  unzip -LL $i -d $DISKS
done

# Stub man page by SlackBuild author. Just a pointer to the real docs.
mkdir -p $PKG/usr/man/man6
gzip -9c < $CWD/$PRGNAM.6 > $PKG/usr/man/man6/$PRGNAM.6.gz

# Icons converted with icns2png and resized with ImageMagick. Original
# source mac/trs80gp.app/Contents/Resources/AppIcon.icns in the tarball.
HICOLOR=$PKG/usr/share/icons/hicolor
for i in $CWD/icons/*.png; do
  px="$( basename $i .png )"
  sz="${px}x${px}"
  dir=$HICOLOR/$sz/apps
  mkdir -p $dir
  cat $i > $dir/$PRGNAM.png
done
mkdir -p $PKG/usr/share/pixmaps
ln -s ../icons/hicolor/48x48/apps/$PRGNAM.png $PKG/usr/share/pixmaps/$PRGNAM.png

# .desktop file written by SlackBuild author.
mkdir -p $PKG/usr/share/applications
cat $CWD/$PRGNAM.desktop > $PKG/usr/share/applications/$PRGNAM.desktop

cat $CWD/$PRGNAM.SlackBuild > $PKGDOC/$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