summaryrefslogtreecommitdiffstats
path: root/system/kegs/kegs.SlackBuild
blob: b4ef4981722ffdf3c07b805e76f070de0d8af127 (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
#!/bin/sh

# Slackware build script for kegs

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

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

# 20150621 bkw: bump BUILD to 2
# - fix link to GS/OS images in README
# - split up huge README, move most of it to README.Slackware
# - add allow_sound_open_fail.diff
# - add instructions on getting OSS audio to work on modern Slack
# - "Exec=aoss xkegs" in .desktop file

PRGNAM=kegs
VERSION=${VERSION:-0.91}
BUILD=${BUILD:-2}
TAG=${TAG:-_SBo}

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

CWD=$(pwd)
TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}

if [ "$ARCH" = "i486" ]; then
  SLKCFLAGS="-O2 -march=i486 -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 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 -o -perm 511 \) \
 -exec chmod 755 {} \; -o \
 \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
 -exec chmod 644 {} \;

# xkegs refuses to close (close button greyed-out by window manager).
# Small patch by SlackBuild author fixes this large annoyance (which is
# extra-annoying because there's also no Quit option in the kegs menu).
# I've sent this upstream, maybe it'll get integrated in future versions.
patch -p1 < $CWD/allow_window_close.diff

# Matthew Miller pointed out this patch to me. Since kegs uses OSS for
# audio, and modern Slackware has ALSA OSS emulation disabled by default,
# sound won't work unless xkegs is run via aoss, or OSS modules are
# loaded. This patch allows the emulator to start with sound disabled if
# it can't open the OSS audio device (instead of it being a fatal error).
# I've also updated the README to explain how to get audio to work.
patch -p1 < $CWD/allow_sound_open_fail.diff

cd src
rm -f vars
ln -s vars_x86linux vars
make CCOPTS="$SLKCFLAGS" x$PRGNAM to_pro partls
cd -

# No install target, just stick it all where it goes.
# The icon was converted from the Mac OSX icon with icns2png.
# The .desktop has 'Terminal=true' because xkegs *really* wants
# to be started from a terminal (the debugger uses stdio, and
# is too easy to accidentally enter by center-clicking the window).

mkdir -p \
  $PKG/usr/bin \
  $PKG/usr/libexec \
  $PKG/usr/share/pixmaps \
  $PKG/usr/share/applications \
  $PKG/usr/share/$PRGNAM \
  $PKG/usr/man/man1
install -s -m0755 x$PRGNAM $PKG/usr/libexec/
install -s -m0755 src/to_pro src/partls $PKG/usr/bin/
install -m0755 $CWD/x$PRGNAM.sh $PKG/usr/bin/x$PRGNAM
install -m0644 $CWD/$PRGNAM.png $PKG/usr/share/pixmaps/
install -m0644 $CWD/$PRGNAM.desktop $PKG/usr/share/applications/

# Man pages are specific to the SlackBuild, though I've sent
# them upstream for consideration.
for file in $CWD/*.1; do
  sed "s/@VERSION@/$VERSION/g" $file \
  | gzip -9c \
  > $PKG/usr/man/man1/$( basename $file ).gz
done

# Half the supplied documentation refers to it as "kegs" and
# the other half calls it "xkegs". To avoid confusion:
ln -s x$PRGNAM.1.gz $PKG/usr/man/man1/$PRGNAM.1.gz
ln -s x$PRGNAM $PKG/usr/bin/$PRGNAM

# Handle the ROM image, if we find it. Filenames are listed in
# reverse order of preference.
for file in ROM01 rom01 ROM03 rom03; do
  if [ -e "$CWD/$file" ]; then
    ROMFILE="$CWD/$file"
  fi
done

if [ -e "$ROMFILE" ]; then
  ROMNAME="$( basename "$ROMFILE" )"
  install -m0644 "$ROMFILE" $PKG/usr/share/$PRGNAM
else
  # We don't have a ROM, so we don't include one in the package, but we
  # do still set the path to /usr/share/kegs/rom03 in the config file,
  # so all the user has to do is copy the ROM there later.
  ROMNAME=rom03
fi

sed "s,@ROM@,/usr/share/$PRGNAM/$ROMNAME," \
  < $CWD/config.$PRGNAM.default \
  > $PKG/usr/share/$PRGNAM/config.$PRGNAM.default

mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
install -m0644 *.txt $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:-tgz}