#!/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}