summaryrefslogtreecommitdiffstats
path: root/games/doomretro
diff options
context:
space:
mode:
Diffstat (limited to 'games/doomretro')
-rw-r--r--games/doomretro/README16
-rw-r--r--games/doomretro/doomretro.SlackBuild79
-rw-r--r--games/doomretro/doomretro.info8
-rw-r--r--games/doomretro/fix-sdl-mixer-fluidsynth.diff14
4 files changed, 89 insertions, 28 deletions
diff --git a/games/doomretro/README b/games/doomretro/README
index 35a68083b6..478d8ba33d 100644
--- a/games/doomretro/README
+++ b/games/doomretro/README
@@ -1,25 +1,17 @@
+doomretro (Doom source port)
+
DOOM Retro is the classic, refined DOOM source port. It represents
what DOOM should be today, in all its dark, gritty, unapologetically
-pixellated glory. DOOM Retro's source code is forked from Chocolate
+pixellated glory. DOOM Retro's source code is forked from Chocolate
DOOM, with enhancements from other DOOM source ports, as well as many
orignal ideas. DOOM Retro is deliberately minimalist by design, and
does a few things differently when compared with other source ports.
The game looks in /usr/share/games/doom (and a few other places) for
-game date. To play Shareware Doom, install doom_shareware_data. To
+game data. To play Shareware Doom, install doom_shareware_data. To
play Doom 2 or the full version of Doom, copy doom2.wad or doom.wad
from the game CD or install directory to /usr/share/games/doom.
-For MIDI playback, first build and install FluidSynth, then build
-and install SDL2_mixer (so that it has FluidSynth support), and then
-build and install DOOM Retro. Then, before starting DOOM Retro, set
-the SDL_SOUNDFONTS environment variable to the path to a soundfont in
-sf2 format:
-
-i.e.
-
- export SDL_SOUNDFONTS=/path/to/soundfonts.sf2
-
Settings are stored in $HOME/.config/doomretro. After starting Doom
Retro for the first time, you will find an editable doomretro.cfg
there.
diff --git a/games/doomretro/doomretro.SlackBuild b/games/doomretro/doomretro.SlackBuild
index f1fef4f963..46311d8b64 100644
--- a/games/doomretro/doomretro.SlackBuild
+++ b/games/doomretro/doomretro.SlackBuild
@@ -3,7 +3,7 @@
# Slackware build script for doomretro
# Copyright 2017 Dugan Chen Canada
-# Copyright 2020 B. Watson
+# Copyright 2020-2023 B. Watson
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -23,6 +23,12 @@
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+# 20230715 bkw: update for v4.9.2.
+# - finally fix the segfaults when the music changes.
+# - remove music note from README, since music works now.
+# - remove -nomusic from the .desktop file.
+
+# 20230114 bkw: update for v4.7.2, add note about music to README.
# 20220611 bkw: update for v4.5.1, fix 16x16 icon path.
# 20211006 bkw:
# - update for v4.2.3.
@@ -39,7 +45,7 @@
cd $(dirname $0) ; CWD=$(pwd)
PRGNAM=doomretro
-VERSION=${VERSION:-4.5.1}
+VERSION=${VERSION:-4.9.2}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
PKGTYPE=${PKGTYPE:-tgz}
@@ -77,10 +83,17 @@ fi
set -e
+LIBNAM=SDL2_mixer
+LIBVER=${LIBVER:-2.0.4}
+
rm -rf $PKG
mkdir -p $TMP $PKG $OUTPUT
-cd $TMP
-rm -rf $PRGNAM-$VERSION
+TOPDIR=$TMP/$PRGNAM-build
+rm -rf $TOPDIR
+mkdir -p $TOPDIR
+cd $TOPDIR
+
+tar xvf $CWD/$LIBNAM-$LIBVER.tar.lz
# All these --excludes save ~30MB in /tmp, and avoid the recursive chmod
# tripping over broken symlinks.
@@ -90,11 +103,46 @@ tar xvf $CWD/$PRGNAM-$VERSION.tar.gz \
--exclude=msvc \
--exclude=SDL2\*
-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 {} \+
+# 20230715 bkw: This is an ugly way to fix an issue caused by Slackware's
+# SDL2_mixer package. doomretro uses SDL2_mixer's FluidSynth support for
+# its music. And SDL2_mixer-2.0.4 (what's in Slackware 15.0) has a crashing
+# bug: any time Mix_FreeMusic(handle) is called when the handle is using
+# fluidsynth, we get a use-after-free that causes the app to segfault.
+# More details, including a link to the patch I use, here:
+# https://github.com/FluidSynth/fluidsynth/issues/748
+# The fix, here, is to build a *static* patched SDL2_mixer for
+# doomretro to link with. Lot of work, but it does fix the issue. When
+# Slackware 15.1 releases, we should be able to get rid of this.
+
+mkdir -p $LIBNAM-install
+cd $LIBNAM-$LIBVER
+
+patch -p0 < $CWD/fix-sdl-mixer-fluidsynth.diff
+
+# N.B. --disable-music-mp3-mad-gpl because enabling it breaks the build,
+# as we have no static libmad.a. doesn't matter, because doomretro doesn't
+# use mp3 audio anyway.
+CFLAGS="$SLKCFLAGS" \
+./configure \
+ --prefix=$TOPDIR/$LIBNAM-install \
+ --sysconfdir=/etc \
+ --disable-shared \
+ --enable-static \
+ --disable-dependency-tracking \
+ --disable-music-mp3-mad-gpl \
+ --build=$ARCH-slackware-linux
+
+make
+make install
+
+# this actually works fine, amazingly enough:
+export PKG_CONFIG_PATH=$TOPDIR/$LIBNAM-install/lib/pkgconfig:$PKG_CONFIG_PATH
+
+cd $TOPDIR/$PRGNAM-$VERSION
mkdir -p build
cd build
cmake \
@@ -110,17 +158,22 @@ mv $PKG/usr/bin $PKG/usr/games
mkdir -p $PKG/usr/share/applications
cat $CWD/$PRGNAM.desktop > $PKG/usr/share/applications/$PRGNAM.desktop
-mkdir -p $PKG/usr/share/icons/hicolor/{16x16,32x32,48x48,256x256}/apps
-convert res/$PRGNAM.ico[0] $PKG/usr/share/icons/hicolor/256x256/apps/$PRGNAM.png
-convert res/$PRGNAM.ico[1] $PKG/usr/share/icons/hicolor/48x48/apps/$PRGNAM.png
-convert res/$PRGNAM.ico[2] $PKG/usr/share/icons/hicolor/32x32/apps/$PRGNAM.png
-convert res/$PRGNAM.ico[3] $PKG/usr/share/icons/hicolor/16x16/apps/$PRGNAM.png
+hicolor=$PKG/usr/share/icons/hicolor
+mkdir -p $hicolor/{16x16,32x32,48x48,256x256}/apps
+convert res/$PRGNAM.ico[0] $hicolor/256x256/apps/$PRGNAM.png
+convert res/$PRGNAM.ico[1] $hicolor/48x48/apps/$PRGNAM.png
+convert res/$PRGNAM.ico[2] $hicolor/32x32/apps/$PRGNAM.png
+convert res/$PRGNAM.ico[3] $hicolor/16x16/apps/$PRGNAM.png
mkdir -p $PKG/usr/share/pixmaps
ln -s ../icons/hicolor/48x48/apps/$PRGNAM.png $PKG/usr/share/pixmaps
-mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
-cp -a CODEOWNERS LICENSE *.md $PKG/usr/doc/$PRGNAM-$VERSION
-cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
+# 20230715 bkw: include COPYING.txt from SDL2_mixer, since we statically
+# link it to the binary.
+PKGDOC=$PKG/usr/doc/$PRGNAM-$VERSION
+mkdir -p $PKGDOC
+cp -a CODEOWNERS LICENSE *.md $PKGDOC
+cp -a $TOPDIR/$LIBNAM-$LIBVER/COPYING.txt $PKGDOC/COPYING-SDL2_mixer.txt
+cat $CWD/$PRGNAM.SlackBuild > $PKGDOC/$PRGNAM.SlackBuild
mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
diff --git a/games/doomretro/doomretro.info b/games/doomretro/doomretro.info
index 126b3e198e..bb63fc2cbf 100644
--- a/games/doomretro/doomretro.info
+++ b/games/doomretro/doomretro.info
@@ -1,8 +1,10 @@
PRGNAM="doomretro"
-VERSION="4.5.1"
+VERSION="4.9.2"
HOMEPAGE="https://www.doomretro.com"
-DOWNLOAD="https://github.com/bradharding/doomretro/archive/v4.5.1/doomretro-4.5.1.tar.gz"
-MD5SUM="41e98264f262834838f3da9d78b70947"
+DOWNLOAD="https://github.com/bradharding/doomretro/archive/v4.9.2/doomretro-4.9.2.tar.gz \
+ https://slackware.uk/slackware/slackware64-15.0/source/l/SDL2_mixer/SDL2_mixer-2.0.4.tar.lz"
+MD5SUM="cada4c8f2b6a5b7904c67fd26c14a3e1 \
+ 7ff96cc9ed7855d2a92a92f3c23856ef"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
REQUIRES=""
diff --git a/games/doomretro/fix-sdl-mixer-fluidsynth.diff b/games/doomretro/fix-sdl-mixer-fluidsynth.diff
new file mode 100644
index 0000000000..be12c1d8f4
--- /dev/null
+++ b/games/doomretro/fix-sdl-mixer-fluidsynth.diff
@@ -0,0 +1,14 @@
+--- music_fluidsynth.c.orig 2018-10-31 15:59:00.000000000 +0100
++++ music_fluidsynth.c 2021-01-20 18:29:11.610459000 +0100
+@@ -273,9 +273,10 @@
+ static void FLUIDSYNTH_Delete(void *context)
+ {
+ FLUIDSYNTH_Music *music = (FLUIDSYNTH_Music *)context;
++ fluid_settings_t *settings = fluidsynth.fluid_synth_get_settings(music->synth);
+ fluidsynth.delete_fluid_player(music->player);
+- fluidsynth.delete_fluid_settings(fluidsynth.fluid_synth_get_settings(music->synth));
+ fluidsynth.delete_fluid_synth(music->synth);
++ fluidsynth.delete_fluid_settings(settings);
+ SDL_free(music);
+ }
+