Subject: Re: [bug#31153] [PATCH] gnu: nestopia-ue: Update to 1.48.

From: Kei Kebreau <[email-masked]>
Date: Mon, 16 Apr 2018 23:32:23 -0400

Marius Bakke <[email-masked]> writes:

> Kei Kebreau <[email-masked]> writes:
>
>> * gnu/packages/emulators.scm (nestopia-ue): Update to 1.48.
>> [source]: Simplify snippet.
>> [build-system]: Switch to cmake-build-system.
>> [inputs]: Remove glu and mesa. Add libepoxy.
>> [arguments]: Remove modified phases.
>
> [...]
>
>>                (modules '((guix build utils)))
>>                (snippet
>>                 '(begin
>>                    ;; We don't need libretro for the GNU/Linux build.
>> -                  (delete-file-recursively "libretro")
>> -                  ;; Use system zlib.
>> -                  (delete-file-recursively "source/zlib")
>> -                  (substitute* "source/core/NstZlib.cpp"
>> -                    (("#include \"../zlib/zlib.h\"") "#include <zlib.h>"))))))
>> -    (build-system gnu-build-system)
>> +                  (delete-file-recursively "libretro")))))
>> +    (build-system cmake-build-system)
>
> The commit message says 'simplify snippet', but the actual change is to
> not delete the zlib subfolder.  Is zlib no longer bundled?  If so,
> please mention that in the commit message.
>
> Apart from that LGTM.

Thank you for reviewing this!

I've attached a revised patch with some other small but necessary
changes that I overlooked the first time around. If the patch below
looks good, then I will push it to master.

From 7738c755edc7dec075090e567a53f1f05df05e53 Mon Sep 17 00:00:00 2001
From: Kei Kebreau <[email-masked]>
Date: Sat, 7 Apr 2018 00:11:39 -0400
Subject: [PATCH] gnu: nestopia-ue: Update to 1.48.
To: [email-masked]

* gnu/packages/emulators.scm (nestopia-ue): Update to 1.48.
[source]: Simplify snippet; 3rd-party zlib is no longer bundled.
[build-system]: Switch to cmake-build-system.
[inputs]: Remove glu and mesa. Add libepoxy.
[arguments]: Remove #:make-flags. Re-enable 'configure' phase. Remove
'remove-xdg-desktop-menu-call' and 'remove-gdkwayland-include' phases. Add
'wrap-program' phase.
---
 gnu/packages/emulators.scm | 36 ++++++++++++++----------------------
 1 file changed, 14 insertions(+), 22 deletions(-)

diff --git a/gnu/packages/emulators.scm b/gnu/packages/emulators.scm
index 232e14b47..79947059b 100644
--- a/gnu/packages/emulators.scm
+++ b/gnu/packages/emulators.scm
@@ -993,7 +993,7 @@ towards a working Mupen64Plus for casual users.")
 (define-public nestopia-ue
   (package
     (name "nestopia-ue")
-    (version "1.47")
+    (version "1.48")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -1002,42 +1002,34 @@ towards a working Mupen64Plus for casual users.")
               (file-name (string-append name "-" version ".tar.gz"))
               (sha256
                (base32
-                "1dzrrjmvyqks64q5l5pfly80jb6qcsbj5b3dm40fijd5xnpbapci"))
+                "184y05z4k4a4m4022niy625kan0rklh8gcxyynxli1fss2sjjrpv"))
               (modules '((guix build utils)))
               (snippet
                '(begin
                   ;; We don't need libretro for the GNU/Linux build.
-                  (delete-file-recursively "libretro")
-                  ;; Use system zlib.
-                  (delete-file-recursively "source/zlib")
-                  (substitute* "source/core/NstZlib.cpp"
-                    (("#include \"../zlib/zlib.h\"") "#include <zlib.h>"))))))
-    (build-system gnu-build-system)
+                  (delete-file-recursively "libretro")))))
+    (build-system cmake-build-system)
     (native-inputs
      `(("pkg-config" ,pkg-config)))
     (inputs
      `(("ao" ,ao)
-       ("glu" ,glu)
        ("gtk+" ,gtk+)
        ("libarchive" ,libarchive)
-       ("mesa" ,mesa)
+       ("libepoxy" ,libepoxy)
        ("sdl2" ,sdl2)
        ("zlib" ,zlib)))
     (arguments
      '(#:phases
        (modify-phases %standard-phases
-         ;; The Nestopia build system consists solely of a Makefile.
-         (delete 'configure)
-         (add-before 'build 'remove-xdg-desktop-menu-call
-           (lambda _
-             (substitute* "Makefile"
-               (("xdg-desktop-menu install .*") ""))))
-         (add-before 'build 'remove-gdkwayland-include
-           (lambda _
-             (substitute* "source/unix/gtkui/gtkui.h"
-               (("#include <gdk/gdkwayland\\.h>") "")))))
-       #:make-flags (let ((out (assoc-ref %outputs "out")))
-                      (list "CC=gcc" "CXX=g++" (string-append "PREFIX=" out)))
+         ;; This fixes the file chooser crash that happens with GTK 3.
+         (add-after 'install 'wrap-program
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             (let* ((out (assoc-ref outputs "out"))
+                    (nestopia (string-append out "/bin/nestopia"))
+                    (gtk (assoc-ref inputs "gtk+"))
+                    (gtk-share (string-append gtk "/share")))
+               (wrap-program nestopia
+                 `("XDG_DATA_DIRS" ":" prefix (,gtk-share)))))))
        ;; There are no tests.
        #:tests? #f))
     (home-page "http://0ldsk00l.ca/nestopia/")
-- 
2.17.0