Message ID | 3e8808c3-0dde-f149-9573-3525bb2f680f@hidamari.blue |
---|---|
State | Accepted |
Headers | show |
Series | [bug#34879] gnu: yamagi-quake2: Update to 7.40. | expand |
Context | Check | Description |
---|---|---|
cbaines/applying patch | fail | Apply failed |
Hi! nee <nee-git@hidamari.blue> writes: [...] > I think it's the best to just hard-code the path where it loads those > libraries. That prevents it from loading outdated or garbage collected > ones before the compiled one. Also curl doesn't have a default fallback > in the Makefile. > > Try the new patch and do this to the config: > echo 'set al_driver "/tmp/non-existing-garbage-collected-library"' >> > ~/.yq2/baseq2/config.cfg > echo 'set cl_libcurl "/tmp/non-existing-garbage-collected-library"' >> > ~/.yq2/baseq2/config.cfg > > I tested this new patch and the old patch, and the new one works while > the old one logs to stdout that failed to load curl and openal with that > config and falls back to sdl-audio. > > Happy hacking! > > From a268a6d5390e562f4ed5cc28784f7d83a2eb6f9d Mon Sep 17 00:00:00 2001 > From: nee <nee-git@hidamari.blue> > 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") We're now at 7.45 on master but loading the OpenAL library was failing... [...] > - ;; 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\""))))) ... until I applied the above forgotten patch! Finally applied as c64c49b152. Thank you! Closing. Maxim
From a268a6d5390e562f4ed5cc28784f7d83a2eb6f9d Mon Sep 17 00:00:00 2001 From: nee <nee-git@hidamari.blue> 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