summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authornee <nee-git@hidamari.blue>2019-03-15 20:56:47 +0100
committerMaxim Cournoyer <maxim.cournoyer@gmail.com>2021-08-06 00:00:02 -0400
commitc64c49b152b7713a5e09ae0cfdc1de86fb215966 (patch)
tree19fcecd91d09a454a31fb39ab5bf56313e80b8a5
parentf8f096d1e8f930ebeecd98125b9c03d97b3c7f65 (diff)
downloadguix-patches-c64c49b152b7713a5e09ae0cfdc1de86fb215966.tar
guix-patches-c64c49b152b7713a5e09ae0cfdc1de86fb215966.tar.gz
gnu: yamagi-quake2: Patch dynamically loaded libraries.
* gnu/packages/games.scm (yamagi-quake2) [arguments]{make-flags}: Remove the DLOPEN_OPENAL=no make flag, which was not working as intended. [phases]{patch-libraries}: New phase. Modified-by: Maxim Cournoyer <maxim.cournoyer@gmail.com> Signed-off-by: Maxim Cournoyer <maxim.cournoyer@gmail.com>
-rw-r--r--gnu/packages/games.scm19
1 files changed, 15 insertions, 4 deletions
diff --git a/gnu/packages/games.scm b/gnu/packages/games.scm
index f34f3a9ca5..468b0d58b1 100644
--- a/gnu/packages/games.scm
+++ b/gnu/packages/games.scm
@@ -7209,15 +7209,26 @@ some graphical niceities, and numerous bug-fixes and other improvements.")
`(#: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 'patch-libraries
+ (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 loads them;
+ ;; this prevents loading old or 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")))