gnu: Add gzdoom.

* gnu/packages/games.scm (gzdoom): New variable.
* gnu/packages/patches/gzdoom-search-in-installed-share.patch: New file.
* gnu/local.mk (dist_patch_DATA): Add it.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
This commit is contained in:
okapi 2018-01-17 00:21:42 +01:00 committed by Ludovic Courtès
parent 9073c8758c
commit 2922852e86
No known key found for this signature in database
GPG Key ID: 090B11993D9AEBB5
3 changed files with 113 additions and 0 deletions

View File

@ -746,6 +746,7 @@ dist_patch_DATA = \
%D%/packages/patches/gtk3-respect-GUIX_GTK3_PATH.patch \
%D%/packages/patches/gtk3-respect-GUIX_GTK3_IM_MODULE_FILE.patch \
%D%/packages/patches/gtkglext-disable-disable-deprecated.patch \
%D%/packages/patches/gzdoom-search-in-installed-share.patch \
%D%/packages/patches/handbrake-pkg-config-path.patch \
%D%/packages/patches/hdf4-architectures.patch \
%D%/packages/patches/hdf4-reproducibility.patch \

View File

@ -33,6 +33,7 @@
;;; Copyright © 2017, 2018 Rutger Helling <rhelling@mykolab.com>
;;; Copyright © 2017 Roel Janssen <roel@gnu.org>
;;; Copyright © 2017, 2018 Nicolas Goaziou <mail@nicolasgoaziou.fr>
;;; Copyright © 2018 okapi <okapi@firemail.cc>
;;;
;;; This file is part of GNU Guix.
;;;
@ -5678,3 +5679,91 @@ to C++ and Java. Your mission is to find a new planet to live and survive.
You can save humanity and get programming skills!")
(home-page "https://colobot.info")
(license license:gpl3+)))
(define-public gzdoom
(package
(name "gzdoom")
(version "3.2.5")
(source (origin
(method url-fetch)
(uri
(string-append "https://zdoom.org/files/gzdoom/src/gzdoom-g"
version ".zip"))
(sha256
(base32
"1164d1zf5in98gp4j981ml3hwmks3q7vzfanlqpjlx2c09jmlv0q"))
(patches (search-patches "gzdoom-search-in-installed-share.patch"))
(modules '((guix build utils)))
(snippet
'(begin
(delete-file-recursively "bzip2")
(delete-file-recursively "game-music-emu")
(delete-file-recursively "jpeg-6b")
(delete-file-recursively "zlib")))))
(arguments
'(#:tests? #f
#:configure-flags
(let ((out (assoc-ref %outputs "out")))
(list
(string-append
"-DCMAKE_CXX_FLAGS:="
"-DSHARE_DIR=\\\"" out "/share/\\\" "
"-DGUIX_OUT_PK3=\\\"" out "/share/games/doom\\\"")
;; look for libraries at buildtime instead of
;; dynamically finding them at runtime
"-DDYN_OPENAL=OFF"
"-DDYN_FLUIDSYNTH=OFF"
"-DDYN_GTK=OFF"
"-DDYN_MPG123=OFF"
"-DDYN_SNDFILE=OFF"))
#:phases
(modify-phases %standard-phases
(add-before 'configure 'fix-referenced-paths
(lambda* (#:key inputs outputs #:allow-other-keys)
(let ((fluid-3 (assoc-ref inputs "fluid-3"))
(timidity++ (assoc-ref inputs "timidity++"))
(out (assoc-ref outputs "out")))
(substitute*
"src/CMakeLists.txt"
(("COMMAND /bin/sh")
(string-append "COMMAND " (which "sh"))))
(substitute*
"src/sound/mididevices/music_fluidsynth_mididevice.cpp"
(("/usr/share/sounds/sf2/FluidR3_GM.sf2")
(string-append fluid-3 "/share/soundfonts/FluidR3Mono_GM.sf3")))
(substitute*
"src/sound/mididevices/music_timiditypp_mididevice.cpp"
(("exename = \"timidity\"")
(string-append "exename = \"" timidity++ "/bin/timidity\"")))
#t))))))
(build-system cmake-build-system)
(inputs `(("bzip2" ,bzip2)
("fluid-3" ,fluid-3)
("fluidsynth" ,fluidsynth)
("gtk+3" ,gtk+)
("libgme" ,libgme)
("libjpeg" ,libjpeg)
("libsndfile" ,libsndfile)
("mesa" ,mesa)
("mpg123" ,mpg123)
("openal" ,openal)
("sdl2" ,sdl2)
("timidity++" ,timidity++)
("zlib" ,zlib)))
(native-inputs `(("pkg-config" ,pkg-config)
("unzip" ,unzip)))
(synopsis "Modern Doom 2 source port")
(description "GZdoom is a port of the Doom 2 game engine, with a modern
renderer. It improves modding support with ZDoom's advanced mapping features
and the new ZScript language. In addition to Doom, it supports Heretic, Hexen,
Strife, Chex Quest, and fan-created games like Harmony, Hacx and Freedoom.")
(home-page "https://zdoom.org/index")
(license (list license:gpl3+ ; gzdoom game
license:lgpl3+ ; gzdoom renderer
license:expat ; gdtoa
(license:non-copyleft ; modified dumb
"file://dumb/licence.txt"
"Dumb license, explicitly GPL compatible.")))))

View File

@ -0,0 +1,23 @@
Lookup gzdoom pk3 files in the installed directory in
addition to the path that is stored in ~/.config/gzdoom/.
Simply replacing the hardcoded /usr/share would leave the
configfile pointing to outdated guix builds, which could get
garbage collected and break the gzdoom installation.
This ensures that the files installed with the corresponding
build will be used.
--- /src/d_main.cpp 2018-01-16 22:13:09.700602781 +0200
+++ /src/d_main.cpp 2018-01-16 22:22:36.560617961 +0200
@@ -1716,6 +1716,11 @@
return wad;
}
+ mysnprintf (wad, countof(wad), "%s/%s", GUIX_OUT_PK3, file);
+ if (DirEntryExists (wad)) {
+ return wad;
+ }
+
if (GameConfig != NULL && GameConfig->SetSection ("FileSearch.Directories"))
{
const char *key;