all messages for Guix-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
From: nee <nee-git@hidamari.blue>
To: me@tobias.gr, 34879@debbugs.gnu.org
Subject: [bug#34879] [PATCH] gnu: yamagi-quake2: Update to 7.40.
Date: Mon, 1 Apr 2019 23:15:28 +0200	[thread overview]
Message-ID: <3e8808c3-0dde-f149-9573-3525bb2f680f@hidamari.blue> (raw)
In-Reply-To: <874l83be27.fsf@nckx>

[-- Attachment #1: Type: text/plain, Size: 1336 bytes --]

Hello, thank you for the review!

Am 16.03.19 um 06:09 schrieb Tobias Geerinckx-Rice:
> This version completely changes how it loads OpenAL.  The attached patch
> keeps everything working, but embeds an absolute store reference in the
> user's configuration file after the first run:>
>  λ grep /gnu/store ~/.yq2/baseq2/config.cfg  set al_driver
> "/gnu/store/…-openal-1.19.1/lib/libopenal.so.1"

Good job spotting that, how do you get it to generate that though? I
thought I didn't have it, because I had an old config, but now I moved
mine and it still doesn't appear.

Anyway, I looked at the code and curl seems to load the same way.

> 
> Any ideas, anyone?
> 
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!

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: 0001-gnu-yamagi-quake2-Update-to-7.40.patch --]
[-- Type: text/x-patch; name="0001-gnu-yamagi-quake2-Update-to-7.40.patch", Size: 4257 bytes --]

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


  reply	other threads:[~2019-04-01 21:16 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-03-15 23:19 [bug#34879] [PATCH] gnu: yamagi-quake2: Update to 7.40 nee
2019-03-16  5:09 ` Tobias Geerinckx-Rice
2019-04-01 21:15   ` nee [this message]
2021-08-06  4:04     ` bug#34879: " Maxim Cournoyer

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=3e8808c3-0dde-f149-9573-3525bb2f680f@hidamari.blue \
    --to=nee-git@hidamari.blue \
    --cc=34879@debbugs.gnu.org \
    --cc=me@tobias.gr \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this external index

	https://git.savannah.gnu.org/cgit/guix.git

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.