From a268a6d5390e562f4ed5cc28784f7d83a2eb6f9d Mon Sep 17 00:00:00 2001 From: nee Date: Fri, 15 Mar 2019 20:56:47 +0100 Subject: [PATCH] gnu: yamagi-quake2: Update to 7.40. * gnu/packages/games.scm (yamagi-quake2): Update to 7.40. [arguments](phases): Add 'hard-code-dynamicly-loaded-libs phase. [inputs]: Add curl. --- gnu/packages/games.scm | 34 +++++++++++++++++++++++----------- 1 file changed, 23 insertions(+), 11 deletions(-) diff --git a/gnu/packages/games.scm b/gnu/packages/games.scm index 46b58e352c..69e259f044 100644 --- a/gnu/packages/games.scm +++ b/gnu/packages/games.scm @@ -5023,7 +5023,7 @@ some graphical niceities, and numerous bug-fixes and other improvements.") (define-public yamagi-quake2 (package (name "yamagi-quake2") - (version "7.10") + (version "7.40") (source (origin (method url-fetch) @@ -5031,28 +5031,39 @@ some graphical niceities, and numerous bug-fixes and other improvements.") version ".tar.xz")) (sha256 (base32 - "0psinbg25mysd58k99s1n34w31w5hj1vppb39gdjb0zqi6sl6cps")))) + "0aci73r15m1wbkrhpysxzdg77a294ywxfkd141gi5qgc2lwbsbqw")))) (build-system gnu-build-system) (arguments `(#:tests? #f #:make-flags (list "CC=gcc" - ;; link openAL instead of using dlopen at runtime - "DLOPEN_OPENAL=\"no\"" - ;; an optional directory where it will look for quake2 data files - ;; in addition to the current working directory + ;; An optional directory where it will look for quake2 data files + ;; In addition to the current working directory "WITH_SYSTEMWIDE=yes" "WITH_SYSTEMDIR=\"/opt/quake2\"") #:phases (modify-phases %standard-phases (delete 'configure) + (add-before 'build 'hard-code-dynamicly-loaded-libs + (lambda* (#:key inputs #:allow-other-keys) + ;; The game writes paths to openal.so and curl.so to ~/.yq2/... + ;; Workaround: hard-code the compiled paths where it load them, + ;; this prevents loading old or a garbage collected libraries + (substitute* "src/client/sound/qal.c" + (("al_driver->string") + (string-append "\""(assoc-ref inputs "openal") + "/lib/libopenal.so\""))) + (substitute* "src/client/curl/qcurl.c" + (("cl_libcurl->string") + (string-append "\"" (assoc-ref inputs "curl") + "/lib/libcurl.so\""))))) (replace 'install (lambda* (#:key outputs #:allow-other-keys) (let ((out (assoc-ref outputs "out"))) (mkdir-p (string-append out "/lib")) (mkdir-p (string-append out "/bin")) ;; The yamagi-quake2 binary must be in the same directory - ;; as it's engine libraries, but symlinking it to /bin is okay + ;; as its engine libraries, but symlinking it to /bin is okay ;; https://github.com/yquake2/yquake2/blob/master/stuff/packaging.md (copy-recursively "release" (string-append out "/lib/yamagi-quake2")) @@ -5060,11 +5071,12 @@ some graphical niceities, and numerous bug-fixes and other improvements.") (string-append out "/bin/yamagi-quake2")) (symlink (string-append out "/lib/yamagi-quake2/q2ded") (string-append out "/bin/yamagi-q2ded")))))))) - (inputs `(("sdl2" ,sdl2) - ("mesa" ,mesa) + (inputs `(("curl" ,curl) ("libvorbis" ,libvorbis) - ("zlib" ,zlib) - ("openal" ,openal))) + ("mesa" ,mesa) + ("openal" ,openal) + ("sdl2" ,sdl2) + ("zlib" ,zlib))) (native-inputs `(("pkg-config" ,pkg-config))) (synopsis "First person shooter engine based on quake2") (description "Yamagi Quake II is an enhanced client for id Software's Quake II. -- 2.20.1