diff options
Diffstat (limited to 'games/prboom-plus/prboom-plus.SlackBuild')
-rw-r--r-- | games/prboom-plus/prboom-plus.SlackBuild | 143 |
1 files changed, 102 insertions, 41 deletions
diff --git a/games/prboom-plus/prboom-plus.SlackBuild b/games/prboom-plus/prboom-plus.SlackBuild index 2ac6a047c3..373411b1ad 100644 --- a/games/prboom-plus/prboom-plus.SlackBuild +++ b/games/prboom-plus/prboom-plus.SlackBuild @@ -1,29 +1,61 @@ -#!/bin/sh +#!/bin/bash # Slackware build script for prboom-plus -# Written by Dugan Chen (thedoogster@gmail.com) +# Originally written by Dugan Chen (email removed) +# Modified and now maintained by B. Watson <urchlay@slackware.uk>. +# Original had no license. Modified version released under the WTFPL. See +# http://www.wtfpl.net/txt/copying/ for details. + +# 20230714 bkw: update for v2.6.66. SDL MIDI is still broken. +# - change default fluidsynth soundfont to one that exists in Slackware. +# - document optional dependency dumb. + +# 20220622 bkw: update for v2.6.2, add missing doinst.sh. + +# 20211027 bkw: +# - update for v2.6.1um. +# - band-aid for segfaults on -current (see below). this isn't +# a side-effect of the version upgrade: it happens on 2.6um also. + +# 20210223 bkw: update for v2.6um. Upstream switched to cmake, +# so we can't build previous versions any more. + +# 20200416 bkw: +# - take over maintenance +# - i486 => i586 +# - switch to coelckers github fork, since it's maintained +# - SDL2_* now required +# - install desktop, icon, bash completion +# - game binaries in /usr/games + +cd $(dirname $0) ; CWD=$(pwd) PRGNAM=prboom-plus -VERSION=${VERSION:-2.5.1.4} +VERSION=${VERSION:-2.6.66} BUILD=${BUILD:-1} TAG=${TAG:-_SBo} +PKGTYPE=${PKGTYPE:-tgz} if [ -z "$ARCH" ]; then case "$( uname -m )" in - i?86) ARCH=i486 ;; + i?86) ARCH=i586 ;; arm*) ARCH=arm ;; *) ARCH=$( uname -m ) ;; esac fi -CWD=$(pwd) +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" = "i486" ]; then - SLKCFLAGS="-O2 -march=i486 -mtune=i686" +if [ "$ARCH" = "i586" ]; then + SLKCFLAGS="-O2 -march=i586 -mtune=i686" LIBDIRSUFFIX="" elif [ "$ARCH" = "i686" ]; then SLKCFLAGS="-O2 -march=i686 -mtune=i686" @@ -45,43 +77,72 @@ 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 {} \; - -CFLAGS="$SLKCFLAGS" \ -CXXFLAGS="$SLKCFLAGS" \ -./configure \ - --prefix=/usr \ - --libdir=/usr/lib${LIBDIRSUFFIX} \ - --sysconfdir=/etc \ - --localstatedir=/var \ - --build=$ARCH-slackware-linux \ - --datarootdir=/usr \ - --enable-gl - -make -make install DESTDIR=$PKG - -# Configure script insists on putting docs in /usr/share/doc, even when told not to. -mv $PKG/usr/share/doc $PKG/usr - -find $PKG -print0 | xargs -0 file | grep -e "executable" -e "shared object" | grep ELF \ - | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true - -find $PKG/usr/man -type f -exec gzip -9 {} \; -for i in $( find $PKG/usr/man -type l ) ; do ln -s $( readlink $i ).gz $i.gz ; rm $i ; done - -mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION -cp -a \ - doc/ AUTHORS COPYING INSTALL NEWS README TODO \ - $PKG/usr/doc/$PRGNAM-$VERSION +find -L . -perm /111 -a \! -perm 755 -a -exec chmod 755 {} \+ -o \ + \! -perm /111 -a \! -perm 644 -a -exec chmod 644 {} \+ + +[ -d prboom2 ] && cd prboom2 + +# upstream hardcoded paths, can't override on cmake command line. +sed -i '/install/s,/bin,/games,' src/CMakeLists.txt +sed -i '/^set(CMAKE_INSTALL_DOCDIR/d' CMakeLists.txt + +# 20230714 bkw: use a default soundfont that exists. allows choosing the +# fluidsynth midi option. personally I think opl2 sounds better, but *shrug*. +US="/usr/share" +sed -i '/snd_soundfont/s,"'$US'[^"]*","'$US'/minuet/soundfonts/GeneralUser-v1.47.sf2",' src/m_misc.c + +MIXEROPT=ON +if [ "${BANDAID:-yes}" = "yes" ]; then + # 20211027 bkw: Band-aid. The game segfaults when the midi backend + # is set to "sdl". Adding -DWITH_MIXER=OFF stops it segfaulting, but + # it sounds *horrible*. So this bit of sed changes the default sound + # backend to "opl2", which doesn't sound as nice, but allows the game + # to run. Also it increases the default volume, since the opl2 synth + # is quieter. + # 20230714 bkw: this is still needed for v2.6.66. the fault is in + # Slackware 15.0, so it's not going to change soon. + MIXEROPT=OFF + sed -i -e '/"snd_midiplayer"/s,"sdl","opl2",' \ + -e '/"music_volume"/s,8,12,' \ + src/m_misc.c + + # 2nd half of the band-aid: prevent the user from choosing SDL MIDI + # from the menu. + sed -i '/"snd_midiplayer"/s,midiplayers,&+1,' src/m_menu.c +fi + +mkdir -p build +cd build + cmake \ + -DWITH_MIXER=$MIXEROPT \ + -DCMAKE_C_FLAGS:STRING="$SLKCFLAGS" \ + -DCMAKE_CXX_FLAGS:STRING="$SLKCFLAGS" \ + -DCMAKE_INSTALL_PREFIX=/usr \ + -DLIB_SUFFIX=${LIBDIRSUFFIX} \ + -DCMAKE_INSTALL_BINDIR=games \ + -DCMAKE_INSTALL_MANDIR=/usr/man \ + -DCMAKE_INSTALL_DOCDIR=/usr/doc/$PRGNAM-$VERSION \ + -DCMAKE_BUILD_TYPE=Release .. + make + make install/strip DESTDIR=$PKG +cd .. + +gzip $PKG/usr/man/man?/*.? + +# desktop/icon/completion included in tarball but not installed +mkdir -p $PKG/usr/share/applications \ + $PKG/usr/share/icons/hicolor/scalable/apps \ + $PKG/usr/share/bash-completion/completions +cp ICONS/$PRGNAM.desktop $PKG/usr/share/applications +cp ICONS/$PRGNAM.svg $PKG/usr/share/icons/hicolor/scalable/apps +cp ICONS/$PRGNAM.bash $PKG/usr/share/bash-completion/completions/$PRGNAM + +cp -a AUTHORS COPYING README NEWS $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} +/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE |