aboutsummaryrefslogtreecommitdiff
path: root/games/hatari/hatari.SlackBuild
blob: 1dfede04641aadd07ce599f2855946eb541cd1cd (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
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
#!/bin/sh

# Slackware build script for hatari

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

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

# 20180612 bkw:
# - updated for v2.1.0.

# 20170307 bkw:
# - BUILD=2
# - add missing mkdir -p $TMP $PKG $OUTPUT (wtf did I do?!)
# - binaries in /usr/games, not /usr/bin.
# - man pages in section 6, not 1.
# - install missing doc/fr/clavier-exemple.txt.
# - previously SDL2 was optional and undocumented, add SDL2=no option
#   and document in README.
# - stop spamming icon symlinks to /usr (they belong in $PKG/usr of course)
# - update mime and desktop stuff. upstream started including a mime XML
#   package, but it's missing some of the stuff from my hatari.xml. The
#   new hatari.xml incorporates upstream's new stuff.

# 20170122 bkw:
# - updated for v2.0.0.

# 20160730 bkw:
# - updated for v1.9.0.
# - install some missing docs, including the French man page.
# - get rid of empty & useless /etc/hatari/ in package. strace
#   shows that hatari never even looks there for a conf file,
#   it looks for /etc/hatari.cfg (which we don't ship).

# 20141029 bkw: add missing : in VERSION BUILD TAG assignments

# 20140825 bkw:
# - updated for v1.8.0
# - install docs/manpages to right places, instead of moving after the fact
# - get rid of the need for a symlink /usr/doc/hatari
# - only symlink emutos.img -> tos.img if no link already exists, so
#   reinstalling the package won't reset the default ROM.
# - add mime type and auto-associate ST disk images and executables.

PRGNAM=hatari
VERSION=${VERSION:-2.1.0}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}

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

CWD=$(pwd)
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 $TMP/$PRGNAM-$VERSION
mkdir -p $TMP $PKG $OUTPUT
cd $TMP
tar xvf $CWD/$PRGNAM-$VERSION.tar.bz2
cd $PRGNAM-$VERSION

# configure script is really a wrapper for cmake, doesn't support
# --bindir, --mandir, --docdir. cheat a little.
sed -i \
  -e 's,BINDIR *bin,BINDIR games,' \
  -e 's,share/man/man1,man/man6,' \
  -e "s,share/doc/$PRGNAM,doc/$PRGNAM-$VERSION," \
  CMakeLists.txt

# man pages should be in section 6
sed -i '/\.TH/s,"1","6",' doc/*.1 doc/fr/*.1 tools/*.1 python-ui/*.1

# Hard-code the doc path in the UI (we don't use /usr/share/doc/hatari)
sed -i \
  -e "/path *= *path *+/s,=.*,= \"/usr/doc/$PRGNAM-$VERSION/\"," \
  python-ui/uihelpers.py

# see if we're building with SDL2 or not.
if pkg-config --exists sdl2 && [ "${SDL2:-yes}" != "no" ]; then
  SDL2OPT=""
  WITHSDL=2.0
else
  SDL2OPT="--disable-sdl2"
  WITHSDL=1.2
fi

./configure $SDL2OPT --prefix=/usr

# Hard-coded paths for icon symlinks, they end up getting created in the
# real /usr, not $PKG/usr.
sed -i 's,\(^\t*\)\(/usr/share\),\1'$PKG'\2,' share/cmake_install.cmake

make
make install/strip DESTDIR=$PKG

# man pages are in the right dir, but with .1
rename .1. .6. $PKG/usr/man/man6/*.1.gz

DOCDIR=$PKG/usr/doc/$PRGNAM-$VERSION
cat $CWD/$PRGNAM.SlackBuild > $DOCDIR/$PRGNAM.SlackBuild

# These docs don't get installed for some reason:
cp tools/hmsa/readme-hmsa.txt readme.txt gpl.txt \
   doc/changelog.txt doc/coding.txt doc/toc.js \
   doc/video-recording.txt doc/fr/clavier-exemple.txt \
   $DOCDIR

# The UI has its own docs:
UIDOCDIR=$DOCDIR/${PRGNAM}ui
mkdir -p $UIDOCDIR
for i in README TODO release-notes.txt; do
  ln -s ../../../share/$PRGNAM/${PRGNAM}ui/$i $UIDOCDIR/$i
done

# Someone might find the French man page useful:
mkdir -p $PKG/usr/man/fr/man6
gzip -9c < doc/fr/$PRGNAM.1 > $PKG/usr/man/fr/man6/$PRGNAM.6.gz

# Replace .desktop with modified one, auto-associates ST disks/executables.
cat $CWD/${PRGNAM}ui.desktop > $PKG/usr/share/applications/${PRGNAM}ui.desktop

# Custom MIME types for ST disk images and executables. Based on hatari.xml
# from upstream, with x-st-executable type added by script author.
mkdir -p $PKG/usr/share/mime/packages
cat $CWD/$PRGNAM.xml > $PKG/usr/share/mime/packages/$PRGNAM.xml

for i in $PKG/usr/share/icons/hicolor/[0-9]*; do
  ln -s application-x-st-disk-image.png $i/mimetypes/x-st-executable.png
done

ln -s application-x-st-disk-image.svg \
      $PKG/usr/share/icons/hicolor/scalable/mimetypes/x-st-executable.png

# Don't symlink emutos to tos here, do it conditionally in doinst.sh.
( cd $PKG/usr/share/$PRGNAM && mv tos.img emutos.img )

mkdir -p $PKG/install
sed "s,@WITHSDL@,$WITHSDL," $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:-tgz}