#!/bin/bash # # Slackware build script for frotz # Originally written for Slackware 12.2 by Beej Jorgensen , heavily modified by B. Watson since # then. # Original had no license. This modified version is released under the # WTFPL. See http://www.wtfpl.net/txt/copying/ for details. # 20210215 bkw: fix building without libmodplug. BUILD=2. # 20201212 bkw: too many changes, can't build older versions. # - updated for v2.52. # - new homepage. # - include sfrotz if sdl2 and SDL2_mixer are installed. # - fix man page typos. # - patch to prevent sfrotz crashes with long pathnames. # - add desktop stuff. # 20150904 bkw: updated for frotz 2.44. # 20121216 bkw: # - updated for Slackware 14 and frotz 2.43d. # - include dumb terminal frotz in build. cd $(dirname $0) ; CWD=$(pwd) PRGNAM=frotz VERSION=${VERSION:-2.52} 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 the variable PRINT_PACKAGE_NAME is set, then this script will report what # the name of the created package would be, and then exit. This information # could be useful to other scripts. 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} # no need for LIBDIRSUFFIX, frotz doesn't use /usr/lib 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 mkdir -p $TMP $PKG $OUTPUT cd $TMP rm -rf $PRGNAM-$VERSION tar xvf $CWD/$PRGNAM-$VERSION.tar.?z* cd $PRGNAM-$VERSION chown -R root:root . find -L . -perm /111 -a \! -perm 755 -a -exec chmod 755 {} \+ -o \ \! -perm /111 -a \! -perm 644 -a -exec chmod 644 {} \+ # Fix typos: sed -i "s/\\(Unlike it\\)'s/\1s/" doc/dfrotz.6 sed -i 's,forground,foreground,' doc/frotz.6 sed -i -e 's,invocatio$,&n.,' \ -e 's,intead,instead,' \ -e 's,chunck,chunk,' \ doc/sfrotz.6 # Document location of config file: sed -i 's,frotz\.conf,/etc/&,' doc/$PRGNAM.6 # sfrotz aborts with a "malloc(): memory corruption" error when given # a long pathname on the command line. Example: # $ sfrotz "/export/home/urchlay/interactive_fiction/infocom_collection/The Hitchhikers Guide To The Galaxy (1985)/The Hitchhiker's Guide To The Galaxy R31-871119.z5" # With a somewhat shorter pathname, the program might not abort, but # it will end up with gibberish at the end of f_setup.script_name, # which would prevent it from auto-loading scripts (if present). # I don't fully understand why, but the new_basename() and # new_dirname() fuctions in sf_util.c are the culprits. They look OK # to me, but getting rid of the calls to free() causes the aborts to # go away. Since each function gets called only once (at startup), # this doesn't constitute a memory leak worth worrying about. patch -p1 < $CWD/sfrotz.memcorrupt.diff run_make() { make \ PREFIX=/usr \ SYSCONFDIR=/etc \ MANDIR=/usr/man \ MAN_PREFIX=/usr \ BINDIR=/usr/games \ DESTDIR=$PKG \ $1 } # No autodetection for libmodplug or SDL2_mixer, help it out. maintarg="nosound" pkg-config --exists libmodplug && maintarg="$PRGNAM" pkg-config --exists sdl2 SDL2_mixer && extra="clean sdl install_sdl" sed -i "s,-O3.*,$SLKCFLAGS," Makefile for target in $maintarg install clean dumb install_dumb $extra; do run_make $target done strip $PKG/usr/games/* gzip -9 $PKG/usr/man/man?/*.* # desktop files by SlackBuild author. The icons came from WinFrotz. They're # only available in 32x32 size, sorry. mkdir -p $PKG/usr/share/applications \ $PKG/usr/share/pixmaps \ $PKG/usr/share/icons/hicolor/32x32/apps install -m0644 -oroot -groot $CWD/*.desktop $PKG/usr/share/applications cat $CWD/$PRGNAM.png > $PKG/usr/share/pixmaps/$PRGNAM.png ln -s ../../../../pixmaps/$PRGNAM.png \ $PKG/usr/share/icons/hicolor/32x32/apps/$PRGNAM.png mkdir -p $PKG/usr/share/icons/hicolor/32x32/mimetypes cat $CWD/frotz-infocom.png > \ $PKG/usr/share/icons/hicolor/32x32/mimetypes/frotz-infocom.png # MIME stuff for desktops. Causes KDE and XFCE to display story # files with an Infocom icon, and they double-click open with either # terminal or SDL frotz. mkdir -p $PKG/usr/share/mime/packages cat $CWD/$PRGNAM.xml > $PKG/usr/share/mime/packages/$PRGNAM.xml mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION rm -f README.1st # don't need this in the package. cp -a AUTHORS CO* ChangeLog DUMB HOW_TO_PLAY README* TODO *.lsm \ doc/$PRGNAM.conf* doc/$PRGNAM.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