summaryrefslogtreecommitdiff
path: root/games/yae/yae.SlackBuild
blob: 991fa3eb03bb2af2c8576026b557a0961d14fa40 (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
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
#!/bin/bash

# Slackware build script for yae

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

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

# 20211011 bkw: BUILD=2
# - fix -current build (-fcommon).
# - link with -laoss, makes audio work on ALSA or pulseaudio systems.
# - new-style icons.
# - update man page.
# - allow X window close button to work. yet another patch.

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

PRGNAM=yae
VERSION=${VERSION:-0.7}
BUILD=${BUILD:-2}
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=""
else
  SLKCFLAGS="-O2 -fPIC"
  LIBDIRSUFFIX="64"
fi

set -e

rm -rf $PKG
mkdir -p $TMP $PKG $OUTPUT
cd $TMP
rm -rf $PRGNAM-$VERSION
tar xvf $CWD/$PRGNAM-$VERSION.tgz
cd $PRGNAM-$VERSION
chown -R root:root .

# Diverging from standard boilerplate here due to annoying permissions in
# upstream tarball. SBo admins, please don't "fix" this, it's for a reason.
find . \
 -type d \
 -exec chmod 755 {} \; -o \
 -type f \
 -exec chmod 644 {} \;

# This is old code with lots of bugs, sorry about all the patches.

# Fix the -2 option so it actually starts apple II emulation.
patch -p1 < $CWD/patches/fix2option.diff

# Allow 'MachineType II' in .yaerc
patch -p1 < $CWD/patches/confile_apple2.diff

# Use kdialog for disk selection.
# Also stop trying to free() the disk name passed in argv.
patch -p1 < $CWD/patches/disk_selection.diff

# If no disk images given on command line, use Master.dsk. This is because
# the emulator has a bug where it hangs if disk boot fails. Actually it
# isn't a bug: it's taking forever to time out, the same way a real Apple
# would, if you booted from disk with no disk in the drive.
patch -p1 < $CWD/patches/defaultmasterdisk.diff

# If ROMs not found either in current dir or .yaerc configured location,
# fall back to /usr/share/yae/*.ROM. This allows us to include ROMs in
# this package, which Just Work instead of requiring user configuration.
patch -p1 < $CWD/patches/defaultromlocation.diff

# *So* annoying: the standard X close button wasn't enabled. If this
# application did the whole "Are you sure you want to quit?" thing, I
# might understand why... but it already exits without confirmation,
# you just have to remember that F2 is the exit key. So why not the
# easily-memorable window close button?
patch -p1 < $CWD/patches/allow_x_window_close.diff

# Try to make 64-bit work. This seems OK, the scanline code seems to
# assume sizeof(long)==4, which is wrong on x86_64. Using int (which
# is still 4 bytes) fixes the display issues. There still might be
# other less-obvious problems with 64-bit, please let me know if
# you find any.
if [ "$LIBDIRSUFFIX" = "64" ]; then
  patch -p1 < $CWD/patches/64.diff
  sed -i 's,unsigned *long,unsigned int,g' scanline*.c
fi

# distributed configure script is too darn old. the file moved
# between Slack 14.1 and 14.2, so:
rm -f config.sub config.guess configure
CONFSUB=/usr/share/libtool/config/config.sub
[ -e "$CONFSUB" ] || CONFSUB=/usr/share/libtool/build-aux/config.sub
cp $CONFSUB .
autoreconf -if

SLKCFLAGS+=" -fcommon"

LIBS="-laoss" \
CFLAGS="$SLKCFLAGS" \
CXXFLAGS="$SLKCFLAGS" \
./configure \
  --prefix=/usr \
  --libdir=/usr/lib${LIBDIRSUFFIX} \
  --sysconfdir=/etc \
  --localstatedir=/var \
  --mandir=/usr/man \
  --docdir=/usr/doc/$PRGNAM-$VERSION \
  --build=$ARCH-slackware-linux

make

# no install target
mkdir -p $PKG/usr/bin
install -s -m0755 apple2 $PKG/usr/bin/$PRGNAM

# man page written for this build. If you want to modify it, use yae.pod,
# don't edit yae.1 directly.
mkdir -p $PKG/usr/man/man1
gzip -9c < $CWD/$PRGNAM.1 > $PKG/usr/man/man1/$PRGNAM.1.gz

# ROMs. Master.dsk is the same as what's distributed with linapple.
# The others are renamed copies of stuff from asimov. Probably not legal
# to distribute for copyright reasons, but ftp.asimov.net has had this stuff
# available for maybe 15 years and nobody's complained yet.
tar xvf $CWD/$PRGNAM-roms.tar.gz
mkdir -p $PKG/usr/share/$PRGNAM
install -m0644 -oroot -groot \
  $PRGNAM-roms/*.ROM $PRGNAM-roms/*.dsk \
  $PKG/usr/share/$PRGNAM

# Sample config file, created for this build (upstream's docs say there's
# one included with the src, but there isn't).
cat $CWD/${PRGNAM}rc.sample > $PKG/usr/share/$PRGNAM/${PRGNAM}rc.sample

# .desktop created for this build
mkdir -p $PKG/usr/share/applications
cat $CWD/$PRGNAM.desktop > $PKG/usr/share/applications/$PRGNAM.desktop

# icons created for this build, based on
# http://www.callapple.org/soft/images/icons/apple.gif
# 20211012 bkw: resized with convert(1), the aspect ratio is
# slightly squashed, but that just makes it look retro...
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/doc/$PRGNAM-$VERSION
cat $PRGNAM-roms/README > $PKG/usr/doc/$PRGNAM-$VERSION/README.roms
cp -a README* Readme* ChangeLog *.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