Subject: [bug#42582] [PATCH] gnu: nomad: Update to 0.2.0-alpha.

From: Mike Rosset <[email-masked]>
Date: Tue, 28 Jul 2020 07:27:22 -0700

* gnu/packages/guile-xyz.scm (nomad): Update to 0.2.0-alpha.

This is a significant update to Nomad. This removes the majority of C code and
replaces it with gobject introspection using g-golf.

In the process the nomad package expression has changed significantly.
---
 gnu/packages/guile-xyz.scm | 210 ++++++++++++++++++++-----------------
 1 file changed, 115 insertions(+), 95 deletions(-)

diff --git a/gnu/packages/guile-xyz.scm b/gnu/packages/guile-xyz.scm
index 5f7a93b8c6..1cf2327de6 100644
--- a/gnu/packages/guile-xyz.scm
+++ b/gnu/packages/guile-xyz.scm
@@ -66,6 +66,7 @@
   #:use-module (gnu packages gnome)
   #:use-module (gnu packages gnupg)
   #:use-module (gnu packages gperf)
+  #:use-module (gnu packages gstreamer)
   #:use-module (gnu packages gtk)
   #:use-module (gnu packages guile)
   #:use-module (gnu packages hurd)
@@ -2952,101 +2953,120 @@ perform geometrical transforms on JPEG images.")
       (license license:gpl3+))))
 
 (define-public nomad
-  (package
-    (name "nomad")
-    (version "0.1.2-alpha")
-    (source (origin
-              (method git-fetch)
-              (uri (git-reference
-                    (url "https://git.savannah.gnu.org/git/nomad.git")
-                    (commit version)))
-              (file-name (git-file-name name version))
-              (sha256
-               (base32
-                "1dnkr1hmvfkwgxd75dcf93pg39yfgawvdpzdhv991yhghv0qxc9h"))))
-    (build-system gnu-build-system)
-    (native-inputs
-     `(("autoconf" ,autoconf)
-       ("automake" ,automake)
-       ("bash" ,bash)
-       ("pkg-config" ,pkg-config)
-       ("libtool" ,libtool)
-       ("guile" ,guile-2.2)
-       ("glib:bin" ,glib "bin")
-       ("texinfo" ,texinfo)
-       ("perl" ,perl)))
-    (inputs
-     `(("guile" ,guile-2.2)
-       ("guile-lib" ,guile2.2-lib)
-       ("guile-gcrypt" ,guile2.2-gcrypt)
-       ("guile-readline" ,guile2.2-readline)
-       ("gnutls" ,gnutls)
-       ("shroud" ,shroud)
-       ("emacsy" ,emacsy-minimal)
-       ("glib" ,glib)
-       ("dbus-glib" ,dbus-glib)
-       ("gtk+" ,gtk+)
-       ("gtksourceview" ,gtksourceview)
-       ("webkitgtk" ,webkitgtk)
-       ("xorg-server" ,xorg-server)))
-    (propagated-inputs
-     `(("glib" ,glib)
-       ("glib-networking" ,glib-networking)
-       ("gsettings-desktop-schemas" ,gsettings-desktop-schemas)))
-    (arguments
-     `(#:modules ((guix build gnu-build-system)
-                  (guix build utils)
-                  (ice-9 popen)
-                  (ice-9 rdelim)
-                  (srfi srfi-26))
-       #:configure-flags
-       ;; Ignore ‘error: ‘GTimeVal’ is deprecated: Use 'GDateTime' instead.’
-       (list "CFLAGS=-Wno-error")
-       #:phases
-       (modify-phases %standard-phases
-         (add-before 'check 'start-xorg-server
-           (lambda* (#:key inputs #:allow-other-keys)
-             ;; The test suite requires a running X server.
-             (system (format #f "~a/bin/Xvfb :1 &"
-                             (assoc-ref inputs "xorg-server")))
-             (setenv "DISPLAY" ":1")
-             #t))
-         (add-after 'install 'wrap-binaries
-           (lambda* (#:key inputs outputs #:allow-other-keys)
-             (let* ((out (assoc-ref outputs "out"))
-                    (gio-deps (map (cut assoc-ref inputs <>) '("glib-networking"
-                                                               "glib")))
-                    (gio-mod-path (map (cut string-append <> "/lib/gio/modules")
-                                       gio-deps))
-                    (effective (read-line (open-pipe*
-                                           OPEN_READ
-                                           "guile" "-c"
-                                           "(display (effective-version))")))
-                    (deps (map (cut assoc-ref inputs <>)
-                               '("emacsy" "guile-lib" "guile-readline"
-                                 "shroud")))
-                    (scm-path (map (cut string-append <>
-                                        "/share/guile/site/" effective)
-                                   `(,out ,@deps)))
-                    (go-path (map (cut string-append <>
-                                       "/lib/guile/" effective "/site-ccache")
-                                  `(,out ,@deps)))
-                    (progs (map (cut string-append out "/bin/" <>)
-                                '("nomad"))))
-               (map (cut wrap-program <>
-                         `("GIO_EXTRA_MODULES" ":" prefix ,gio-mod-path)
-                         `("GUILE_LOAD_PATH" ":" prefix ,scm-path)
-                         `("GUILE_LOAD_COMPILED_PATH" ":"
-                           prefix ,go-path))
-                    progs)
-               #t))))))
-    (home-page "https://savannah.nongnu.org/projects/nomad/")
-    (synopsis "Extensible Web Browser in Guile Scheme")
-    (description "Nomad is an Emacs-like Web Browser built using Webkitgtk and
-Emacsy.  It has a small C layer and most browser features are fully
-programmable in Guile.  It has hooks, keymaps, and self documentation
-features.")
-    (license license:gpl3+)))
+  (let ((commit "0.2.0-alpha")
+        (hash   (base32 "1z2z5x37v1qrk2vb8qlz2yj030iirzzd0maa9fjxzlqkrg6krbaj")))
+    (package
+      (name "nomad")
+      (version commit)
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference
+                      (url "https://git.savannah.gnu.org/git/nomad.git")
+                      (commit version)))
+                (file-name (git-file-name name version))
+                (sha256 hash)))
+      (build-system gnu-build-system)
+      (native-inputs
+       `(("autoconf" ,autoconf)
+         ("automake" ,automake)
+         ("bash" ,bash)
+         ("pkg-config" ,pkg-config)
+         ("libtool" ,libtool)
+         ("guile" ,guile-2.2)
+         ("glib:bin" ,glib "bin")
+         ("texinfo" ,texinfo)
+         ("perl" ,perl)))
+      (inputs
+       `(("guile" ,guile-2.2)
+         ("guile-lib" ,guile2.2-lib)
+         ("guile-readline" ,guile2.2-readline)
+         ("guile-gcrypt" ,guile2.2-gcrypt)
+         ("gnutls" ,gnutls)
+         ("shroud" ,shroud)
+         ("emacsy" ,emacsy-minimal)
+         ("glib" ,glib)
+         ("dbus-glib" ,dbus-glib)
+         ("gtk+" ,gtk+)
+         ("gtk+:bin" ,gtk+ "bin")
+         ("gtksourceview" ,gtksourceview)
+         ("webkitgtk" ,webkitgtk)
+         ("g-golf" ,g-golf)
+         ("xorg-server" ,xorg-server)))
+      (propagated-inputs
+       `(("glib" ,glib)
+         ("glib-networking" ,glib-networking)
+         ("gstreamer" ,gstreamer)
+         ("gst-plugins-base" ,gst-plugins-base)
+         ("gst-plugins-good" ,gst-plugins-good)
+         ("gst-plugins-bad" ,gst-plugins-bad)
+         ("gst-plugins-ugly" ,gst-plugins-ugly)
+         ("gtk+" ,gtk+)
+         ("gtksourceview" ,gtksourceview)
+         ("vte" ,vte)
+         ("webkitgtk" ,webkitgtk)
+         ("gsettings-desktop-schemas" ,gsettings-desktop-schemas)))
+      (arguments
+       `(#:modules ((guix build gnu-build-system)
+                    (guix build utils)
+                    (ice-9 popen)
+                    (ice-9 rdelim)
+                    (srfi srfi-26))
+         #:phases
+         (modify-phases %standard-phases
+           (add-before 'check 'start-xorg-server
+             (lambda* (#:key inputs #:allow-other-keys)
+               ;; The test suite requires a running X server.
+               (system (format #f "~a/bin/Xvfb :1 &"
+                               (assoc-ref inputs "xorg-server")))
+               (setenv "DISPLAY" ":1")
+               #t))
+           (add-after 'install 'wrap-binaries
+             (lambda* (#:key inputs outputs #:allow-other-keys)
+               (let* ((out (assoc-ref outputs "out"))
+                      (gio-deps (map (cut assoc-ref inputs <>) '("glib-networking"
+                                                                 "glib"
+                                                                 "gstreamer"
+                                                                 "gst-plugins-base"
+                                                                 "gst-plugins-good"
+                                                                 "gst-plugins-bad"
+                                                                 "gst-plugins-ugly")))
+                      (gio-mod-path (map (cut string-append <> "/lib/gio/modules")
+                                         gio-deps))
+                      (effective (read-line (open-pipe*
+                                             OPEN_READ
+                                             "guile" "-c"
+                                             "(display (effective-version))")))
+                      (deps (map (cut assoc-ref inputs <>)
+                                 '("emacsy" "guile-lib" "guile-readline" "g-golf"
+                                   "shroud")))
+                      (scm-path (map (cut string-append <>
+                                          "/share/guile/site/" effective)
+                                     `(,out ,@deps)))
+                      (go-path (map (cut string-append <>
+                                         "/lib/guile/" effective "/site-ccache")
+                                    `(,out ,@deps)))
+                      (progs (map (cut string-append out "/bin/" <>)
+                                  '("nomad"))))
+                 (map (cut wrap-program <>
+                           `("GIO_EXTRA_MODULES" ":" prefix ,gio-mod-path)
+                           `("GUILE_LOAD_PATH" ":" prefix ,scm-path)
+                           `("GUILE_LOAD_COMPILED_PATH" ":"
+                             prefix ,go-path))
+                      progs)
+                 #t))))))
+      (native-search-paths
+       (list (search-path-specification
+              (variable "GI_TYPELIB_PATH")
+              (separator ":")
+              (files '("lib/girepository-1.0")))
+             (search-path-specification
+              (variable "NOMAD_WEB_EXTENSION_DIR")
+              (separator ":")
+              (files '("libexec/nomad")))))
+      (home-page "https://savannah.nongnu.org/projects/nomad/")
+      (synopsis "Extensible Web Browser in Guile Scheme")
+      (description "Nomad is a Emacs-like web browser that consists of a modular feature-set fully programmable in Guile Scheme.")
+      (license license:gpl3+))))
 
 (define-public guile-cv
   (package
-- 
2.27.0