Subject: [PATCH gnome-team v2 10/12] gnu: gtk+: Update to 3.24.37.

From: Liliana Marie Prikler <[email-masked]>
Date: Thu, 30 Mar 2023 06:28:00 +0200

* gnu/packages/gtk.scm (gtk+): Update to 3.24.37.
[native-inputs]: Add docbook-xsl.
[build-system]: Use meson-build-system.
[arguments]: Add ‘glib-or-gtk?’.  Adjust configure-flags accordingly.
<#:phases>: Remove ‘generate-gdk-pixbuf-loaders-cache-file’.
Adjust ‘disable-failing-tests’.
Rename ‘move-desktop-files’ to ‘move-files’ and move documentation as well.
---
 gnu/packages/gtk.scm | 85 +++++++++++++++++++++++---------------------
 1 file changed, 44 insertions(+), 41 deletions(-)

diff --git a/gnu/packages/gtk.scm b/gnu/packages/gtk.scm
index 196d767160..75e56d4166 100644
--- a/gnu/packages/gtk.scm
+++ b/gnu/packages/gtk.scm
@@ -1101,7 +1101,7 @@ (define-public gtk+
   (package
     (inherit gtk+-2)
     (name "gtk+")
-    (version "3.24.30")
+    (version "3.24.37")
     (source
      (origin
        (method url-fetch)
@@ -1110,7 +1110,7 @@ (define-public gtk+
                            name "-" version ".tar.xz"))
        (sha256
         (base32
-         "1a9vg840fjq1mmm403b67k624qrkxh9shaz9pv7z9l8a6bzvyxds"))
+         "0mvzzgjrzzir7nzx379yz3swzk3pn1s283hgzm8l2yakq2sg0ib7"))
        (patches (search-patches "gtk3-respect-GUIX_GTK3_PATH.patch"
                                 "gtk3-respect-GUIX_GTK3_IM_MODULE_FILE.patch"))))
     (propagated-inputs
@@ -1152,6 +1152,7 @@ (define-public gtk+
            rest))
     (native-inputs
      (list docbook-xml-4.1.2
+           docbook-xsl
            gettext-minimal
            `(,glib "bin")
            gobject-introspection
@@ -1164,47 +1165,29 @@ (define-public gtk+
            ;; of updating xorg-server directly on the master branch.
            xorg-server-for-tests
            libxslt))
+    (build-system meson-build-system)
     (arguments
-     `(#:imported-modules ((guix build glib-or-gtk-build-system)
-                           ,@%gnu-build-system-modules)
-       #:modules ((guix build utils)
-                  (guix build gnu-build-system)
-                  ((guix build glib-or-gtk-build-system) #:prefix glib-or-gtk:))
+     `(#:glib-or-gtk? #t
        #:disallowed-references (,xorg-server-for-tests)
-       ;; 47 MiB goes to "out" (24 of which is locale data!), and 26 MiB goes
-       ;; to "doc".
-       #:configure-flags (list (string-append "--with-html-dir="
-                                              (assoc-ref %outputs "doc")
-                                              "/share/gtk-doc/html")
-                               "--enable-cloudproviders"
+       #:configure-flags (list "-Dcloudproviders=true"
                                ;; The header file <gdk/gdkwayland.h> is required
                                ;; by gnome-control-center
-                               "--enable-wayland-backend"
+                               "-Dwayland_backend=true"
                                ;; This is necessary to build both backends.
-                               "--enable-x11-backend"
+                               "-Dx11_backend=true"
                                ;; This enables the HTML5 websocket backend.
-                               "--enable-broadway-backend")
+                               "-Dbroadway_backend=true"
+                               "-Dman=true")
        #:phases
        (modify-phases %standard-phases
-         (add-after 'unpack 'generate-gdk-pixbuf-loaders-cache-file
-           (assoc-ref glib-or-gtk:%standard-phases
-                      'generate-gdk-pixbuf-loaders-cache-file))
          (add-after 'unpack 'disable-failing-tests
            (lambda _
-             (substitute* "testsuite/gtk/Makefile.in"
-               (("builderparser cellarea check-icon-names check-cursor-names")
-                "builderparser cellarea check-cursor-names")
-               (("notify no-gtk-init object objects-finalize papersize rbtree")
-                "no-gtk-init papersize rbtree")
-               (("stylecontext templates textbuffer textiter treemodel treepath")
-                "stylecontext textbuffer textiter treemodel treepath"))
-             (substitute* "testsuite/a11y/Makefile.in"
-               (("accessibility-dump tree-performance text children derive")
-                "tree-performance text children derive"))
-             (substitute* "testsuite/reftests/Makefile.in"
-               (("TEST_PROGS = gtk-reftest")
-                "TEST_PROGS = "))
-             #t))
+             (substitute* "testsuite/gtk/meson.build"
+               (("\\['defaultvalue'\\],") "")
+               (("\\['objects-finalize', .*\\],") ""))
+             (substitute* "testsuite/reftests/meson.build"
+               (("'flipping-icons(\\.[^.]*)?\\.ui',") "")
+               (("'gtk-icontheme-sizing(\\.[^.]*)?\\.ui',") ""))))
          (add-before 'check 'pre-check
            (lambda _
              ;; Tests require a running X server.
@@ -1217,15 +1200,35 @@ (define-public gtk+
              ;; For missing '/etc/machine-id'.
              (setenv "DBUS_FATAL_WARNINGS" "0")
              #t))
-         (add-after 'install 'move-desktop-files
-           ;; Move desktop files into 'bin' to avoid cycle references.
+         (add-after 'install 'move-files
            (lambda* (#:key outputs #:allow-other-keys)
-             (let ((out (assoc-ref outputs "out"))
-                   (bin (assoc-ref outputs "bin")))
-               (mkdir-p (string-append bin "/share"))
-               (rename-file (string-append out "/share/applications")
-                            (string-append bin "/share/applications"))
-               #t))))))
+             (define-values (out bin doc)
+               (values (assoc-ref outputs "out")
+                       (assoc-ref outputs "bin")
+                       (assoc-ref outputs "doc")))
+             (for-each mkdir-p
+                       (list
+                        (string-append bin "/bin")
+                        (string-append bin "/share/applications")
+                        (string-append bin "/share/icons")
+                        (string-append bin "/share/man")
+                        (string-append bin "/share/metainfo")
+                        (string-append doc "/share/doc")))
+             ;; Move programs and related files to output 'bin'.
+             (for-each (lambda (dir)
+                         (rename-file
+                          (string-append out dir)
+                          (string-append bin dir)))
+                       (list
+                        "/bin"
+                        "/share/applications"
+                        "/share/icons"
+                        "/share/man"))
+             ;; Move HTML documentation to output 'doc'.
+             (when (file-exists? (string-append out "/share/doc"))
+               (rename-file
+                (string-append out "/share/doc")
+                (string-append doc "/share/doc"))))))))
     (native-search-paths
      (list (search-path-specification
             (variable "GUIX_GTK3_PATH")
-- 
2.39.2