summaryrefslogtreecommitdiffstats
path: root/games/prboom-plus
diff options
context:
space:
mode:
Diffstat (limited to 'games/prboom-plus')
-rw-r--r--games/prboom-plus/README41
-rw-r--r--games/prboom-plus/doinst.sh10
-rw-r--r--games/prboom-plus/prboom-plus.SlackBuild143
-rw-r--r--games/prboom-plus/prboom-plus.info10
-rw-r--r--games/prboom-plus/slack-desc4
5 files changed, 151 insertions, 57 deletions
diff --git a/games/prboom-plus/README b/games/prboom-plus/README
index 43eafc4b0e..2cd75e32f9 100644
--- a/games/prboom-plus/README
+++ b/games/prboom-plus/README
@@ -1,12 +1,35 @@
-PrBoom+ is a Doom source port developed from the original PrBoom project.
+prboom-plus (Doom source port)
-Features uncapped framerate, widescreen aspect ratios, soundfont support,
-variable gamespeed, re-record, walkcam, chasecam, full full mouselook, fov and
-other features along with full compatibility with the original Doom/Doom2
-engines.
+PrBoom+ is a Doom source port developed from the original PrBoom
+project.
-FluidSynth, needed for soundfont support, is an optional dependency.
+Features uncapped framerate, widescreen aspect ratios, soundfont
+support, variable gamespeed, re-record, walkcam, chasecam, full
+mouselook, variable FOV, and other features along with full
+compatibility with the original Doom/Doom2 engines.
-The documentation refers to a directory into which an IWAD file (doom.wad,
-doom2.wad, tnt.wad, plutonia.wad, or the shareware doom1.wad) may be placed.
-The IWAD directory is /usr/share/games/doom.
+The documentation refers to a directory into which an IWAD
+file (doom.wad, doom2.wad, tnt.wad, plutonia.wad, or the
+shareware doom1.wad) may be placed. The IWAD directory is
+/usr/share/games/doom. If you don't have any IWADs, install
+doom_shareware_data to play shareware Doom.
+
+Optional dependencies, autodetected:
+portmidi - for the PortMIDI backend. Most users won't need this.
+dumb - somehow, this can be used for music. No idea how to enable it,
+ but if dumb is detected, prboom-plus will link with it.
+
+*** NOTE ***
+
+Currently the SDL MIDI player is broken. The default player in this
+build is OPL2. You won't be able to select SDL from the "Preferred
+MIDI Player" menu in the game options. If you have an old config
+file that sets snd_midiplayer to "sdl", the music will sound *really*
+messed up. If this happens, simply edit ~/.prboom-plus/prboom-plus.cfg
+and remove the line containing snd_midiplayer. Or just delete the
+file, to start with default settings.
+
+If you don't like the sound of the OPL2 music, you can try using
+FluidSynth instead (Options -> General -> Preferred MIDI Player in the
+user interface). Other options (PortMIDI and ALSA) may be usable but
+will require more setup, outside the scope of this README.
diff --git a/games/prboom-plus/doinst.sh b/games/prboom-plus/doinst.sh
new file mode 100644
index 0000000000..daf1ce3148
--- /dev/null
+++ b/games/prboom-plus/doinst.sh
@@ -0,0 +1,10 @@
+
+if [ -x /usr/bin/update-desktop-database ]; then
+ /usr/bin/update-desktop-database -q usr/share/applications >/dev/null 2>&1
+fi
+
+if [ -e usr/share/icons/hicolor/icon-theme.cache ]; then
+ if [ -x /usr/bin/gtk-update-icon-cache ]; then
+ /usr/bin/gtk-update-icon-cache usr/share/icons/hicolor >/dev/null 2>&1
+ fi
+fi
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
diff --git a/games/prboom-plus/prboom-plus.info b/games/prboom-plus/prboom-plus.info
index 450e3d6e19..0b35a74d52 100644
--- a/games/prboom-plus/prboom-plus.info
+++ b/games/prboom-plus/prboom-plus.info
@@ -1,10 +1,10 @@
PRGNAM="prboom-plus"
-VERSION="2.5.1.4"
+VERSION="2.6.66"
HOMEPAGE="http://prboom-plus.sourceforge.net"
-DOWNLOAD="http://downloads.sourceforge.net/project/prboom-plus/prboom-plus/2.5.1.4/prboom-plus-2.5.1.4.tar.gz"
-MD5SUM="eff7878d4542259a2bd6b2fef79962ca"
+DOWNLOAD="https://github.com/coelckers/prboom-plus/archive/v2.6.66/prboom-plus-2.6.66.tar.gz"
+MD5SUM="62b29843ba4ab1f442be8fe469ee523f"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
REQUIRES=""
-MAINTAINER="Dugan Chen"
-EMAIL="thedoogster@gmail.com"
+MAINTAINER="B. Watson"
+EMAIL="urchlay@slackware.uk"
diff --git a/games/prboom-plus/slack-desc b/games/prboom-plus/slack-desc
index bd3b0e71f3..196aeff751 100644
--- a/games/prboom-plus/slack-desc
+++ b/games/prboom-plus/slack-desc
@@ -13,7 +13,7 @@ prboom-plus: project.
prboom-plus:
prboom-plus: Features uncapped framerate, widescreen aspect ratios, FluidSynth
prboom-plus: support, variable gamespeed, re-record, walkcam, chasecam, full
-prboom-plus: full mouselook, fov and other features along with full compatibility
-prboom-plus: with the original Doom/Doom2 engines.
+prboom-plus: mouselook, variable fov and other features along with full
+prboom-plus: compatibility with the original Doom/Doom2 engines.
prboom-plus:
prboom-plus: http://prboom-plus.sourceforge.net