summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--games-roguelike/dwarf-fortress/Manifest1
-rw-r--r--games-roguelike/dwarf-fortress/dwarf-fortress-0.47.05.ebuild95
-rw-r--r--games-roguelike/dwarf-fortress/files/dwarf-fortress-0.47.05-missing-cmath.patch (renamed from games-roguelike/dwarf-fortress/files/dwarf-fortress-0.47.05-fix-cmath.patch)11
-rw-r--r--games-roguelike/dwarf-fortress/files/dwarf-fortress-0.47.05-segfault-fixes.patch (renamed from games-roguelike/dwarf-fortress/files/dwarf-fortress-0.47.05-segfault-fix-729002.patch)65
4 files changed, 77 insertions, 95 deletions
diff --git a/games-roguelike/dwarf-fortress/Manifest b/games-roguelike/dwarf-fortress/Manifest
index 8b96ead81a7a..84e82c2074f3 100644
--- a/games-roguelike/dwarf-fortress/Manifest
+++ b/games-roguelike/dwarf-fortress/Manifest
@@ -1,2 +1,3 @@
DIST df_47_05_linux.tar.bz2 12725420 BLAKE2B 80987f05de2db2796a53cc8767ee7aa5c78674dff725efc0dafe07dc4118e56c7814cbf92507fe9b76a385e182405c7d6759cb6bcc942385110df1dc1a3b3af4 SHA512 9ea46fa12a80266cd09363f1aea8cdd059a5ebeefb453c4a46ffbb1115486409003c3caca95a1b6010da4040d04b781182c59e57a6cc033cd7de4507299f7534
DIST df_47_05_linux32.tar.bz2 13487455 BLAKE2B be604dd2fd480c5609da801013dfdae26964760c0a92c4b3d2d8369800eee7ca9c1b1c2313cc67357feee3c6d425bf7f9f67cab53d2e771ab59055bc4c3329d0 SHA512 e9b9cf6995c24b403347159a35cfe4b57603bdb777c78639beb2799d9bf31317edec54fb92b17dbb90df6001b905d43285a35e9446768d12a746492b2fd34fe7
+DIST dwarf-fortress.png 271 BLAKE2B cbc14917de1556b25d3817298215beedc4cb01075b8454e38b2d314bdf22f8c20c4bf2332f0d731c7e4c6d6a60056361565221ce3db2c7a15fdf934bff01df54 SHA512 08bdc0e084f861b6e6a8b12e3bc93b9703f2a4cbc133d62d1c2931daf81ccd70b728853d5c05bed19a1ef477cf4ad10fce263bbab7d9cad3b60658f17063acf6
diff --git a/games-roguelike/dwarf-fortress/dwarf-fortress-0.47.05.ebuild b/games-roguelike/dwarf-fortress/dwarf-fortress-0.47.05.ebuild
index 8df73a95939f..e94ca7db6dd6 100644
--- a/games-roguelike/dwarf-fortress/dwarf-fortress-0.47.05.ebuild
+++ b/games-roguelike/dwarf-fortress/dwarf-fortress-0.47.05.ebuild
@@ -3,95 +3,90 @@
EAPI=8
-inherit prefix optfeature toolchain-funcs desktop readme.gentoo-r1
+inherit desktop flag-o-matic optfeature prefix readme.gentoo-r1 toolchain-funcs
-MY_PV=$(ver_rs 1- _ "$(ver_cut 2-)")
-MY_P=df_${MY_PV}
+MY_P="df_$(ver_rs 1- _ $(ver_cut 2-))"
-DESCRIPTION="A single-player fantasy game"
-HOMEPAGE="https://www.bay12games.com/dwarves"
-SRC_URI="amd64? ( https://www.bay12games.com/dwarves/${MY_P}_linux.tar.bz2 )
- x86? ( https://www.bay12games.com/dwarves/${MY_P}_linux32.tar.bz2 )"
-S="${WORKDIR}"/df_linux
-
-PATCHES=(
- "${FILESDIR}/${P}-fix-cmath.patch"
- "${FILESDIR}/${P}-segfault-fix-729002.patch"
-)
+DESCRIPTION="Single-player fantasy game"
+HOMEPAGE="https://www.bay12games.com/dwarves/"
+SRC_URI="
+ amd64? ( https://www.bay12games.com/dwarves/${MY_P}_linux.tar.bz2 )
+ x86? ( https://www.bay12games.com/dwarves/${MY_P}_linux32.tar.bz2 )
+ https://dev.gentoo.org/~ionen/distfiles/${PN}.png"
+S="${WORKDIR}/df_linux"
LICENSE="free-noncomm BSD BitstreamVera"
SLOT="0"
KEYWORDS="-* ~amd64 ~x86"
IUSE="debug"
-RDEPEND="media-libs/glew:0=
- media-libs/libsdl[joystick,video]
+RDEPEND="
+ dev-libs/glib:2
+ media-libs/glew:0=
+ media-libs/libglvnd[X]
+ media-libs/libsdl[joystick,opengl,video]
media-libs/sdl-image[png]
media-libs/sdl-ttf
sys-libs/zlib:=
virtual/glu
x11-libs/gtk+:2"
-# Yup, libsndfile, openal and ncurses are only needed at compile-time; the code
-# dlopens them at runtime if requested.
-DEPEND="${RDEPEND}
+# libsndfile, openal and ncurses are only needed at compile-time,
+# optfeature through dlopen() at runtime if requested
+DEPEND="
+ ${RDEPEND}
media-libs/libsndfile
media-libs/openal
- sys-libs/ncurses-compat:5[unicode]
- virtual/pkgconfig"
+ sys-libs/ncurses-compat:5[unicode]"
BDEPEND="virtual/pkgconfig"
-QA_PREBUILT="/opt/${PN}/libs/Dwarf_Fortress"
+QA_PREBUILT="opt/${PN}/libs/Dwarf_Fortress"
-DOC_CONTENTS="Dwarf Fortress has been installed to /opt/${PN}. This is
- symlinked to ~/.dwarf-fortress when dwarf-fortress is run.
- For more information on what exactly is replaced, see ${EROOT}/usr/bin/dwarf-fortress.
- Note: This means that the primary entry point is ${EROOT}/usr/bin/dwarf-fortress.
- Do not run /opt/${PN}/libs/Dwarf_Fortress."
+PATCHES=(
+ "${FILESDIR}"/${P}-missing-cmath.patch
+ "${FILESDIR}"/${P}-segfault-fixes.patch
+)
src_prepare() {
- # fix line endings so the patches can apply properly
- sed -i \
- -e 's/\r$//' \
- g_src/ttf_manager.cpp \
- g_src/music_and_sound_openal.cpp \
- || die
-
default
- # dwarf fortress includes prebuilt libraries such as libstdc++ we won't use
- rm -f libs/*.so* || die
-}
-
-src_configure() {
- hprefixify "${WORKDIR}/dwarf-fortress"
-
- CXXFLAGS+=" -D$(use debug || echo N)DEBUG"
+ # remove prebuilt libraries that are provided by the system
+ rm libs/*.so* || die
}
src_compile() {
tc-export CXX PKG_CONFIG
- emake -f "${FILESDIR}/Makefile.native"
+ # -DDEBUG is recognized to give additional debug output
+ append-cppflags -D$(usev !debug N)DEBUG
+
+ emake -f "${FILESDIR}"/Makefile.native
}
src_install() {
insinto /opt/${PN}
- doins -r raw data libs
+ doins -r data libs raw
- dobin ${FILESDIR}/dwarf-fortress
+ fperms +x /opt/${PN}/libs/Dwarf_Fortress
- readme.gentoo_create_doc
- dodoc README.linux *.txt
+ dobin "$(prefixify_ro "${FILESDIR}"/dwarf-fortress)"
- fperms 755 /opt/${PN}/libs/Dwarf_Fortress
+ doicon "${DISTDIR}"/${PN}.png
+ make_desktop_entry dwarf-fortress "Dwarf Fortress"
- make_desktop_entry dwarf-fortress "Dwarf Fortress" "dwarf-fortress" Game
+ dodoc README.linux *.txt
+
+ local DOC_CONTENTS="
+ Dwarf Fortress has been installed to ${EPREFIX}/opt/${PN}. This is
+ symlinked to ~/.${PN} when ${PN} is run. For more information on what
+ exactly is replaced, see ${EPREFIX}/usr/bin/${PN}. Note: This means
+ that the primary entry point is ${EPREFIX}/usr/bin/${PN}, do not run
+ ${EPREFIX}/opt/${PN}/libs/Dwarf_Fortress."
+ readme.gentoo_create_doc
}
pkg_postinst() {
readme.gentoo_print_elog
optfeature "text PRINT_MODE" sys-libs/ncurses-compat:5[unicode]
- optfeature "audio output" "media-libs/openal media-libs/libsndfile"
- optfeature "OpenGL PRINT_MODE" media-libs/libsdl[opengl]
+ optfeature "audio output" "media-libs/openal media-libs/libsndfile[-minimal]"
}
diff --git a/games-roguelike/dwarf-fortress/files/dwarf-fortress-0.47.05-fix-cmath.patch b/games-roguelike/dwarf-fortress/files/dwarf-fortress-0.47.05-missing-cmath.patch
index 21017f6b41b1..a3028764afac 100644
--- a/games-roguelike/dwarf-fortress/files/dwarf-fortress-0.47.05-fix-cmath.patch
+++ b/games-roguelike/dwarf-fortress/files/dwarf-fortress-0.47.05-missing-cmath.patch
@@ -1,11 +1,8 @@
Fixes compilation due to missing <cmath> header required in this file.
-diff --git a/g_src/ttf_manager.cpp b/g_src/ttf_manager.cpp
-@@ -1,6 +1,7 @@
- #include "ttf_manager.hpp"
+--- a/g_src/ttf_manager.cpp
++++ b/g_src/ttf_manager.cpp
+@@ -2,2 +2,3 @@
#include "init.h"
- #include <iostream>
+#include <cmath>
-
- using namespace std;
-
+ #include <iostream>
diff --git a/games-roguelike/dwarf-fortress/files/dwarf-fortress-0.47.05-segfault-fix-729002.patch b/games-roguelike/dwarf-fortress/files/dwarf-fortress-0.47.05-segfault-fixes.patch
index 0f0a9a672874..24c43be41188 100644
--- a/games-roguelike/dwarf-fortress/files/dwarf-fortress-0.47.05-segfault-fix-729002.patch
+++ b/games-roguelike/dwarf-fortress/files/dwarf-fortress-0.47.05-segfault-fixes.patch
@@ -1,49 +1,38 @@
-Fixes a bug due to OpenAL soft crashing the game on startup: https://www.bay12games.com/dwarves/mantisbt/view.php?id=11564
-Fixes a bug regarding an infinite loop on anything higher than -O1: https://www.bay12games.com/dwarves/mantisbt/view.php?id=11564
+Fixes segfault / infinite loop with OpenAL and anything higher
+than -O1 mostly due to missing return values.
+https://bugs.gentoo.org/703384
+https://bugs.gentoo.org/703386
https://bugs.gentoo.org/729002
-
-diff --git a/g_src/enabler.cpp b/g_src/enabler.cpp
+https://www.bay12games.com/dwarves/mantisbt/view.php?id=11564
--- a/g_src/enabler.cpp
+++ b/g_src/enabler.cpp
-@@ -590,6 +590,10 @@ int enablerst::loop(string cmdline) {
-
+@@ -591,4 +591,6 @@
// Clean up graphical resources
delete renderer;
+
+ return 0;
}
-
- void enablerst::override_grid_size(int x, int y) {
-diff --git a/g_src/music_and_sound_openal.cpp b/g_src/music_and_sound_openal.cpp
+
--- a/g_src/music_and_sound_openal.cpp
+++ b/g_src/music_and_sound_openal.cpp
-@@ -250,7 +250,11 @@ void musicsoundst::deinitsound() {
- alDeleteBuffers(1, &buffer);
- }
- // Deinit OpenAL
-- alcMakeContextCurrent(NULL);
-+
-+ //alcMakeContextCurrent(NULL);
-+
- alcDestroyContext(context);
- alcCloseDevice(device);
-
-@@ -480,7 +484,9 @@ static bool init_openal() {
-
- void alEnable( ALenum capability ) { _alEnable(capability); }
- void alDisable( ALenum capability ) { _alDisable(capability); }
--ALboolean alIsEnabled( ALenum capability ) { _alIsEnabled(capability); }
-+ALboolean alIsEnabled( ALenum capability ) { return _alIsEnabled(capability); }
- const ALchar* alGetString( ALenum param ) { return _alGetString(param); }
- void alGetBooleanv( ALenum param, ALboolean* data ) { _alGetBooleanv(param, data); }
- void alGetIntegerv( ALenum param, ALint* data ) { _alGetIntegerv(param, data); }
-@@ -490,7 +496,9 @@ ALboolean alGetBoolean( ALenum param ) { return _alGetBoolean(param); }
- ALint alGetInteger( ALenum param ) { return _alGetInteger(param); }
- ALfloat alGetFloat( ALenum param ) { return _alGetFloat(param); }
- ALdouble alGetDouble( ALenum param ) { return _alGetDouble(param); }
--ALenum alGetError( void ) { _alGetError(); }
-+ALenum alGetError( void ) { return _alGetError(); }
- ALboolean alIsExtensionPresent( const ALchar* extname ) { return _alIsExtensionPresent(extname); }
- void* alGetProcAddress( const ALchar* fname ) { return _alGetProcAddress(fname); }
- ALenum alGetEnumValue( const ALchar* ename ) { return _alGetEnumValue(ename); }
+@@ -251,5 +251,4 @@
+ }
+ // Deinit OpenAL
+- alcMakeContextCurrent(NULL);
+ alcDestroyContext(context);
+ alcCloseDevice(device);
+@@ -481,5 +480,5 @@
+ void alEnable( ALenum capability ) { _alEnable(capability); }
+ void alDisable( ALenum capability ) { _alDisable(capability); }
+-ALboolean alIsEnabled( ALenum capability ) { _alIsEnabled(capability); }
++ALboolean alIsEnabled( ALenum capability ) { return _alIsEnabled(capability); }
+ const ALchar* alGetString( ALenum param ) { return _alGetString(param); }
+ void alGetBooleanv( ALenum param, ALboolean* data ) { _alGetBooleanv(param, data); }
+@@ -491,5 +490,5 @@
+ ALfloat alGetFloat( ALenum param ) { return _alGetFloat(param); }
+ ALdouble alGetDouble( ALenum param ) { return _alGetDouble(param); }
+-ALenum alGetError( void ) { _alGetError(); }
++ALenum alGetError( void ) { return _alGetError(); }
+ ALboolean alIsExtensionPresent( const ALchar* extname ) { return _alIsExtensionPresent(extname); }
+ void* alGetProcAddress( const ALchar* fname ) { return _alGetProcAddress(fname); }