Subject: [PATCH core-update-frozen 07/13] gnu: json-glib-minimal: Introduce minimal variant.

From: Maxim Cournoyer <[email-masked]>
Date: Wed, 27 Oct 2021 00:51:38 -0400

* gnu/packages/gnome.scm (json-glib-minimal): New variable.
[source]: Adjust URI.
[outputs]: Move doc output to...
(json-glib)[outputs]: ... here.  Rewrite in terms of json-glib-minimal.
* gnu/packages/gtk.scm (gtk+): Use json-glib-minimal to break a cycle with
Inkscape.
---
 gnu/packages/gnome.scm | 134 ++++++++++++++++++++---------------------
 gnu/packages/gtk.scm   |   2 +-
 2 files changed, 66 insertions(+), 70 deletions(-)

diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm
index 9532717d89..fc486a4d1e 100644
--- a/gnu/packages/gnome.scm
+++ b/gnu/packages/gnome.scm
@@ -4590,86 +4590,27 @@ (define-public dconf
 configuration storage systems.")
     (license license:lgpl2.1+)))
 
-(define-public json-glib
+(define-public json-glib-minimal
   (package
-    (name "json-glib")
+    (name "json-glib-minimal")
     (version "1.6.2")
     (source (origin
               (method url-fetch)
-              (uri (string-append "mirror://gnome/sources/" name "/"
-                                  (version-major+minor version) "/"
-                                  name "-" version ".tar.xz"))
+              (uri (string-append "mirror://gnome/sources/json-glib/"
+                                  (version-major+minor version)
+                                  "/json-glib-" version ".tar.xz"))
               (sha256
                (base32
                 "092g2dyy1hhl0ix9kp33wcab0pg1qicnsv0cj5ms9g9qs336cgd3"))))
     (build-system meson-build-system)
-    (outputs '("out" "doc"))
     (arguments
-     `(#:glib-or-gtk? #t     ; To wrap binaries and/or compile schemas
-       #:configure-flags
-       (list
-        "-Ddocs=true"
-        "-Dman=true"
-        ,@(if (%current-target-system)
-              ;; If enabled, gtkdoc-scangobj will try to execute a
-              ;; cross-compiled binary.
-              '("-Dgtk_doc=disabled"
-                ;; Trying to build introspection data when cross-compiling
-                ;; causes errors during linking.
-                "-Dintrospection=disabled")
-              '()))
-       #:phases
-       (modify-phases %standard-phases
-         (add-after 'unpack 'patch-docbook
-           ;; TODO(core-updates): Use (or native-inputs inputs)
-           ;; unconditionally.
-           (lambda* (#:key ,@(if (%current-target-system)
-                                 '(native-inputs)
-                                 '()) inputs #:allow-other-keys)
-             (with-directory-excursion "doc"
-               (substitute* (find-files "." "\\.xml$")
-                 (("http://www.oasis-open.org/docbook/xml/4\\.3/")
-                  (string-append (assoc-ref ,(if (%current-target-system)
-                                                 '(or native-inputs inputs)
-                                                 'inputs)
-                                            "docbook-xml")
-                                 "/xml/dtd/docbook/")))
-               (substitute* "meson.build"
-                 (("http://docbook.sourceforge.net/release/xsl/current/")
-                  (string-append (assoc-ref ,(if (%current-target-system)
-                                                 '(or native-inputs inputs)
-                                                 'inputs) "docbook-xsl")
-                                 "/xml/xsl/docbook-xsl-1.79.2/"))))
-             #t))
-         ;; When cross-compiling, there are no docs to move.
-         ,(if (%current-target-system)
-              '(add-after 'install 'stub-docs
-                 (lambda* (#:key outputs #:allow-other-keys)
-                   ;; The daemon doesn't like empty output paths.
-                   (mkdir (assoc-ref outputs "doc"))))
-              '(add-after 'install 'move-docs
-                 (lambda* (#:key outputs #:allow-other-keys)
-                   (let* ((out (assoc-ref outputs "out"))
-                          (doc (assoc-ref outputs "doc")))
-                     (mkdir-p (string-append doc "/share"))
-                     (rename-file
-                      (string-append out "/share/gtk-doc")
-                      (string-append doc "/share/gtk-doc"))
-                     #t)))))))
+     `(#:glib-or-gtk? #t))           ; To wrap binaries and/or compile schemas
     (native-inputs
-     `(("docbook-xml" ,docbook-xml-4.3)
-       ("docbook-xsl" ,docbook-xsl)
-       ("gettext" ,gettext-minimal)
-       ("glib" ,glib "bin")      ;for glib-mkenums and glib-genmarshal
-       ("gobject-introspection" ,gobject-introspection)
-       ("gtk-doc" ,gtk-doc)
-       ("pkg-config" ,pkg-config)
-       ("xsltproc" ,libxslt)))
+     `(("gettext" ,gettext-minimal)
+       ("glib" ,glib "bin")             ;for glib-mkenums and glib-genmarshal
+       ("pkg-config" ,pkg-config)))
     (inputs
-     ;; TODO(core-updates): Make this input unconditional.
-     (if (%current-target-system)
-         `(("bash-minimal" ,bash-minimal))
-         '()))
+     `(("bash-minimal" ,bash-minimal)))
     (propagated-inputs
      `(("glib" ,glib)))                 ;according to json-glib-1.0.pc
     (home-page "https://wiki.gnome.org/Projects/JsonGlib")
@@ -4679,6 +4620,61 @@ (define-public json-glib
 GLib and GObject, and integrates JSON with GLib data types.")
     (license license:lgpl2.1+)))
 
+(define-public json-glib
+  (package/inherit json-glib-minimal
+    (name "json-glib")
+    (outputs (cons "doc" (package-outputs json-glib-minimal)))
+    (arguments
+     (substitute-keyword-arguments (package-arguments json-glib-minimal)
+       ((#:configure-flags _)
+        `(list "-Ddocs=true"
+               "-Dman=true"
+               ,@(if (%current-target-system)
+                     ;; If enabled, gtkdoc-scangobj will try to execute a
+                     ;; cross-compiled binary.
+                     '("-Dgtk_doc=disabled"
+                       ;; Trying to build introspection data when cross-compiling
+                       ;; causes errors during linking.
+                       "-Dintrospection=disabled")
+                     '())))
+       ((#:phases phases '%standard-phases)
+        `(modify-phases ,phases
+           (add-after 'unpack 'patch-docbook
+             (lambda* (#:key native-inputs inputs #:allow-other-keys)
+               (with-directory-excursion "doc"
+                 (substitute* (find-files "." "\\.xml$")
+                   (("http://www.oasis-open.org/docbook/xml/4\\.3/")
+                    (string-append (assoc-ref (or native-inputs inputs)
+                                              "docbook-xml")
+                                   "/xml/dtd/docbook/")))
+                 (substitute* "meson.build"
+                   (("http://docbook.sourceforge.net/release/xsl/current/")
+                    (string-append (assoc-ref (or native-inputs inputs)
+                                              "docbook-xsl")
+                                   "/xml/xsl/docbook-xsl-1.79.2/"))))))
+           ;; When cross-compiling, there are no docs to move.
+           ,(if (%current-target-system)
+                '(add-after 'install 'stub-docs
+                   (lambda* (#:key outputs #:allow-other-keys)
+                     ;; The daemon doesn't like empty output paths.
+                     (mkdir (assoc-ref outputs "doc"))))
+                '(add-after 'install 'move-docs
+                   (lambda* (#:key outputs #:allow-other-keys)
+                     (let* ((out (assoc-ref outputs "out"))
+                            (doc (assoc-ref outputs "doc")))
+                       (mkdir-p (string-append doc "/share"))
+                       (rename-file
+                        (string-append out "/share/gtk-doc")
+                        (string-append doc "/share/gtk-doc"))))))))))
+    (native-inputs
+     (append
+         `(("docbook-xml" ,docbook-xml-4.3)
+           ("docbook-xsl" ,docbook-xsl)
+           ("gobject-introspection" ,gobject-introspection)
+           ("gtk-doc" ,gtk-doc)
+           ("xsltproc" ,libxslt))
+         (package-native-inputs json-glib-minimal)))))
+
 (define-public libxklavier
   (package
     (name "libxklavier")
diff --git a/gnu/packages/gtk.scm b/gnu/packages/gtk.scm
index b67af8c051..1dd2c6c184 100644
--- a/gnu/packages/gtk.scm
+++ b/gnu/packages/gtk.scm
@@ -1028,7 +1028,7 @@ (define-public gtk+
        ("graphene" ,graphene)
        ("harfbuzz" ,harfbuzz)
        ("iso-codes" ,iso-codes)
-       ("json-glib" ,json-glib)
+       ("json-glib" ,json-glib-minimal)
        ("libxml2" ,libxml2)
        ("rest" ,rest)))
     (native-inputs
-- 
2.33.1