summary refs log tree commit diff
path: root/gnu/packages/gtk.scm
diff options
context:
space:
mode:
Diffstat (limited to 'gnu/packages/gtk.scm')
-rw-r--r--gnu/packages/gtk.scm667
1 files changed, 286 insertions, 381 deletions
diff --git a/gnu/packages/gtk.scm b/gnu/packages/gtk.scm
index 5024455368..d92c9e0c28 100644
--- a/gnu/packages/gtk.scm
+++ b/gnu/packages/gtk.scm
@@ -232,7 +232,7 @@ tools have full access to view and control running applications.")
        ("pkg-config" ,pkg-config)
        ("python" ,python-wrapper)))
     (inputs
-     `(("bash-minimal" ,bash-minimal)
+     `(("bash-minimal" ,bash-minimal)   ;for glib-or-gtk-wrap
        ("drm" ,libdrm)
        ("ghostscript" ,ghostscript)
        ("libspectre" ,libspectre)
@@ -284,67 +284,41 @@ output.  Experimental backends include OpenGL, BeOS, OS/2, and DirectFB.")
 
 (define-public harfbuzz
   (package
-   (name "harfbuzz")
-   (version "2.8.2")
-   (source (origin
-             (method url-fetch)
-             (uri (string-append "https://github.com/harfbuzz/harfbuzz"
-                                 "/releases/download/" version "/harfbuzz-"
-                                 version ".tar.xz"))
-             (sha256
-              (base32
-               "1rvv86wpm3y04fqns1655268rhvhvms469837709v2z2bhwn316m"))))
-   (build-system gnu-build-system)
-   (outputs '("out"
-              "bin")) ; 160K, only hb-view depend on cairo
-   (inputs
-    (list cairo))
-   (propagated-inputs
-    ;; There are all in the Requires or Requires.private field of '.pc'.
-    (list glib graphite2 icu4c))
-   (native-inputs
-    `(("glib:bin" ,glib "bin")          ;for glib-mkenums
-      ("gobject-introspection" ,gobject-introspection)
-      ("pkg-config" ,pkg-config)
-      ("python" ,python-wrapper)
-      ("which" ,which)))
-   (arguments
-    `(#:configure-flags `("--with-graphite2"
-                          "--with-gobject"
-                          ,(string-append
-                            "--bindir=" (assoc-ref %outputs "bin") "/bin"))))
-   (synopsis "OpenType text shaping engine")
-   (description
-    "HarfBuzz is an OpenType text shaping engine.")
-   (license (license:x11-style "file://COPYING"
-                       "See 'COPYING' in the distribution."))
-   (home-page "https://www.freedesktop.org/wiki/Software/HarfBuzz/")))
-
-(define-public harfbuzz-3
-  (package
-    (inherit harfbuzz)
-    (version "3.4.0")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append "https://github.com/harfbuzz/harfbuzz"
-                                  "/releases/download/" version
-                                  "/harfbuzz-" version ".tar.xz"))
-              (sha256
-               (base32
-                "0lprrl8iih8ji1n17xwm5llz05a1hv4g04b7a3y229dq9myahn3i"))))))
-
-(define-public harfbuzz-4
-  (package
-    (inherit harfbuzz)
-    (version "4.3.0")
+    (name "harfbuzz")
+    (version "5.3.1")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://github.com/harfbuzz/harfbuzz"
-                                  "/releases/download/" version
-                                  "/harfbuzz-" version ".tar.xz"))
+                                  "/releases/download/" version "/harfbuzz-"
+                                  version ".tar.xz"))
               (sha256
                (base32
-                "0c5mzwgz43d37h75p4b6cgjg4v24jdd96i7gjpgxirn8qks2i5m4"))))))
+                "0ka3nkk2lks2lgakq02vyibwdziv11dkpa2brkx230asnyby0v2a"))))
+    (build-system gnu-build-system)
+    (outputs '("out"
+               "bin"))                  ;160K, only hb-view depend on cairo
+    (inputs
+     (list cairo))
+    (propagated-inputs
+     ;; There are all in the Requires or Requires.private field of '.pc'.
+     (list glib graphite2 icu4c))
+    (native-inputs
+     (list `(,glib "bin")               ;for glib-mkenums
+           gobject-introspection
+           pkg-config
+           python-wrapper
+           which))
+    (arguments
+     (list #:configure-flags
+           #~(list "--with-graphite2"
+                   "--with-gobject"
+                   (string-append "--bindir=" #$output:bin "/bin"))))
+    (synopsis "OpenType text shaping engine")
+    (description
+     "HarfBuzz is an OpenType text shaping engine.")
+    (license (license:x11-style "file://COPYING"
+                                "See 'COPYING' in the distribution."))
+    (home-page "https://www.freedesktop.org/wiki/Software/HarfBuzz/")))
 
 
 (define-public harfbuzz-5
@@ -393,7 +367,7 @@ representing trie.  Trie is a kind of digital search tree.")
 (define-public libthai
   (package
     (name "libthai")
-    (version "0.1.28")
+    (version "0.1.29")
     (source
      (origin
        (method url-fetch)
@@ -401,7 +375,7 @@ representing trie.  Trie is a kind of digital search tree.")
         (string-append "https://linux.thai.net/pub/thailinux/software/"
                        "libthai/libthai-" version ".tar.xz"))
        (sha256
-        (base32 "04g93bgxrcnay9fglpq2lj9nr7x1xh06i60m7haip8as9dxs3q7z"))))
+        (base32 "1kab1w6i1fb76807xrwjfac8n2nky8jbvkhpnh117qahrdywr07w"))))
     (build-system gnu-build-system)
     (outputs '("out" "doc"))
     (arguments
@@ -426,7 +400,7 @@ applications.")
 (define-public pango
   (package
     (name "pango")
-    (version "1.48.10")
+    (version "1.50.10")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnome/sources/pango/"
@@ -435,7 +409,7 @@ applications.")
               (patches (search-patches "pango-skip-libthai-test.patch"))
               (sha256
                (base32
-                "166wxhsjb6hb0dk7wkkdcmpvasl9n0a0aa64mdgagzfdidwzbq91"))))
+                "0rj9sszflckk8gj47ppirpndpp3mzsx97l64lalj8kc580g2ypby"))))
     (build-system meson-build-system)
     (arguments
      '(#:glib-or-gtk? #t             ; To wrap binaries and/or compile schemas
@@ -451,26 +425,27 @@ applications.")
                         (("\\[ 'test-harfbuzz'.*") "")))))))
     (propagated-inputs
      ;; These are all in Requires or Requires.private of the '.pc' files.
-     `(("cairo" ,cairo)
-       ("fontconfig" ,fontconfig)
-       ("freetype" ,freetype)
-       ("fribidi" ,fribidi)
-       ("glib" ,glib)
-       ("harfbuzz" ,harfbuzz)
-       ("libthai" ,libthai)
-       ;; Some packages, such as Openbox, expect Pango to be built with the
-       ;; optional libxft support.
-       ("libxft" ,libxft)
-       ("libxrender" ,libxrender)))
+     (list cairo
+           fontconfig
+           freetype
+           fribidi
+           glib
+           harfbuzz
+           libthai
+           ;; Some packages, such as Openbox, expect Pango to be built with the
+           ;; optional libxft support.
+           libxft
+           libxrender))
     (inputs
-     (list bash-minimal zlib))
+     (list bash-minimal
+           zlib))
     (native-inputs
-     `(("glib" ,glib "bin")                             ; glib-mkenums, etc.
-       ("gobject-introspection" ,gobject-introspection) ; g-ir-compiler, etc.
-       ("help2man" ,help2man)
-       ("perl" ,perl)
-       ("pkg-config" ,pkg-config)
-       ("python" ,python-wrapper)))
+     (list `(,glib "bin")               ;glib-mkenums, etc.
+           gobject-introspection        ;g-ir-compiler, etc.
+           help2man
+           perl
+           pkg-config
+           python-wrapper))
     (synopsis "Text and font handling library")
     (description "Pango is a library for laying out and rendering of text, with
 an emphasis on internationalization.  Pango can be used anywhere that text
@@ -480,22 +455,6 @@ handling for GTK+-2.x.")
     (home-page "https://pango.gnome.org/")
     (license license:lgpl2.0+)))
 
-;; TODO: Make this the default package in next release cycle.
-(define-public pango-next
-  (package
-    (inherit pango)
-    (name "pango-next")                 ;to avoid profile conflicts
-    (version "1.50.4")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append "mirror://gnome/sources/pango/"
-                                  (version-major+minor version)
-                                  "/pango-" version ".tar.xz"))
-              (patches (search-patches "pango-skip-libthai-test.patch"))
-              (sha256
-               (base32
-                "0qn1a7ccs3p5vc6swbqm6hdzka879l0gp9220lq4bcf2gpl67bgl"))))))
-
 (define-public pango-1.42
   (package
    (inherit pango)
@@ -542,9 +501,7 @@ handling for GTK+-2.x.")
                #~(begin
                    (substitute* "pango/pangocairo-font.c"
                      (("cairo_user_font_face_set_render_color_glyph_func")
-                      "cairo_user_font_face_set_render_glyph_func"))))))
-    (inputs (modify-inputs (package-inputs pango)
-               (prepend harfbuzz-4)))))
+                      "cairo_user_font_face_set_render_glyph_func"))))))))
 
 (define-public pangox-compat
   (package
@@ -712,8 +669,8 @@ printing and other features typical of a source code editor.")
            glib-next
            gtk
            libxml2
-           pcre2
-           pango-next))
+           pango
+           pcre2))
     (home-page "https://wiki.gnome.org/Projects/GtkSourceView")
     (synopsis "GNOME source code widget")
     (description "GtkSourceView is a text widget that extends the standard
@@ -740,7 +697,6 @@ highlighting and other features typical of a source code editor.")
     (propagated-inputs
      (modify-inputs (package-propagated-inputs gtksourceview)
        (replace "gtk" gtk+)
-       (replace "pango-next" pango)
        (replace "glib" glib)))))
 
 (define-public gtksourceview-3
@@ -765,7 +721,7 @@ highlighting and other features typical of a source code editor.")
 (define-public gdk-pixbuf
   (package
     (name "gdk-pixbuf")
-    (version "2.42.4")
+    (version "2.42.8")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnome/sources/" name "/"
@@ -773,7 +729,7 @@ highlighting and other features typical of a source code editor.")
                                   name "-" version ".tar.xz"))
               (sha256
                (base32
-                "0k9f9177qxaryaxprwrhqnv5p2gdq4a8i6y05gm98qa8izc5v77y"))))
+                "1iplb43nn74pp3w1wjwwn522i9man6jia85k6j8v4494rcxfmb44"))))
     (build-system meson-build-system)
     (outputs '("out" "debug"))
     (arguments
@@ -781,57 +737,42 @@ highlighting and other features typical of a source code editor.")
        #:configure-flags '("-Dinstalled_tests=false")
        #:phases
        (modify-phases %standard-phases
-         (add-after 'unpack 'patch-docbook
-           (lambda* (#:key native-inputs inputs #:allow-other-keys)
-             (with-directory-excursion "docs"
-               (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/")))
-               (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/"))))))
          (add-before 'configure 'disable-failing-tests
            (lambda _
              (substitute* "tests/meson.build"
                (("\\[ 'pixbuf-fail', \\['conform', 'slow'\\], \\],")
                 ""))))
          ;; The slow tests take longer than the specified timeout.
-         ,@(if (any (cute string=? <> (%current-system))
-                    '("armhf-linux" "aarch64-linux"))
+         ,@(if (target-arm? (%current-system))
                '((replace 'check
-                   (lambda _
-                     (invoke "meson" "test" "--timeout-multiplier" "5"))))
+                   (lambda* (#:key tests? #:allow-other-keys)
+                     (when tests?
+                       (invoke "meson" "test" "--timeout-multiplier" "5")))))
                '()))))
     (propagated-inputs
-     (list ;; Required by gdk-pixbuf-2.0.pc
-           glib
-           ;; Required by gdk-pixbuf-xlib-2.0.pc
-           ;; TODO: Remove on core-updates.
-           libx11
-           ;; Used for testing and required at runtime.
-           shared-mime-info))
+     (list glib                         ;in Requires of gdk-pixbuf-2.0.pc
+
+           ;; These are in Requires.private of gdk-pixbuf-2.0.pc
+           libjpeg-turbo
+           libpng
+           libtiff
+           shared-mime-info))           ;required at runtime, too
     (inputs
-     `(,@(if (%current-target-system)
-             `(("bash-minimal" ,bash-minimal)) ; for glib-or-gtk-wrap
-             '())
-       ("libjpeg" ,libjpeg-turbo)
-       ("libpng"  ,libpng)
-       ("libtiff" ,libtiff)))
+     (if (%current-target-system)
+         (list bash-minimal)            ;for glib-or-gtk-wrap
+         '()))
     (native-inputs
-     `(("docbook-xml" ,docbook-xml-4.3)
-       ("docbook-xsl" ,docbook-xsl)
-       ("gettext" ,gettext-minimal)
-       ("glib" ,glib "bin")                             ; glib-mkenums, etc.
-       ("gobject-introspection" ,gobject-introspection) ; g-ir-compiler, etc.
-       ("perl" ,perl)
-       ("pkg-config" ,pkg-config)
-       ("xsltproc" ,libxslt)))
+     (list gettext-minimal
+           `(,glib "bin")               ;glib-mkenums, etc.
+           gobject-introspection        ;g-ir-compiler, etc.
+           perl
+           pkg-config
+
+           ;; For the documentation.
+           docbook-xml-4.3
+           docbook-xsl
+           libxml2                      ;for XML_CATALOG_FILES
+           libxslt))                    ;for xsltproc
     (native-search-paths
      ;; This file is produced by the gdk-pixbuf-loaders-cache-file
      ;; profile hook.
@@ -876,11 +817,11 @@ ever use this library.")
     (license license:lgpl2.1+)))
 
 ;;; A minimal variant used to prevent a cycle with Inkscape.
-(define-public at-spi2-core-minimal
+(define-public at-spi2-core
   (hidden-package
    (package
      (name "at-spi2-core")
-     (version "2.40.0")
+     (version "2.45.90")
      (source (origin
                (method url-fetch)
                (uri (string-append "mirror://gnome/sources/" name "/"
@@ -888,33 +829,44 @@ ever use this library.")
                                    name "-" version ".tar.xz"))
                (sha256
                 (base32
-                 "0a9l6cfxynjn6jcp29d72i75xbkrzs1l5kmqcwmfal801b9sg5j1"))))
+                 "03dba3c6m3sfapkkbbgzvbi1qcmrrlppydxjjs1m8ds9qb9hl1g9"))))
      (build-system meson-build-system)
      (arguments
-      '(#:glib-or-gtk? #t    ; To wrap binaries and/or compile schemas
-        #:phases
-        (modify-phases %standard-phases
-          (add-after 'install 'check
-            (lambda _
-              (setenv "HOME" (getenv "TMPDIR")) ; xfconfd requires a writable HOME
-              ;; Run test-suite under a dbus session.
-              (setenv "XDG_DATA_DIRS" ; for finding org.xfce.Xfconf.service
-                      (string-append %output "/share"))
-              ;; Don't fail on missing  '/etc/machine-id'.
-              (setenv "DBUS_FATAL_WARNINGS" "0") ;
-              (invoke "dbus-launch" "ninja" "test")))
-          (delete 'check))))
+      (list
+       #:glib-or-gtk? #t              ;to wrap binaries and/or compile schemas
+       #:phases
+       #~(modify-phases %standard-phases
+           (delete 'check)
+           (add-after 'install 'check
+             (lambda _
+               (setenv "HOME" (getenv "TMPDIR")) ;xfconfd requires a writable HOME
+               ;; Run test-suite under a dbus session.
+               (setenv "XDG_DATA_DIRS"  ;for finding org.xfce.Xfconf.service
+                       (string-append #$output "/share:" (getenv "XDG_DATA_DIRS")))
+               ;; Don't fail on missing  '/etc/machine-id'.
+               (setenv "DBUS_FATAL_WARNINGS" "0")
+               (with-directory-excursion (string-append "../at-spi2-core-"
+                                                        #$version "")
+                 (invoke "dbus-run-session" "--" "ci/run-registryd-tests.sh")
+                 (substitute* "ci/run-tests.sh"
+                   (("ps auxwww") "")   ;avoid a dependency on procps
+                   (("meson test -C _build")
+                    "meson test -C ../build")) ;adjust build directory
+                 (invoke "dbus-run-session" "--" "ci/run-tests.sh")))))))
      (inputs
-      (list bash-minimal))
+      (list bash-minimal libxml2))
      (propagated-inputs
       ;; atspi-2.pc refers to all these.
       (list dbus glib libx11 libxi libxtst))
      (native-inputs
-      `(("gettext" ,gettext-minimal)
-        ("glib" ,glib "bin")
-        ("gobject-introspection" ,gobject-introspection)
-        ("pkg-config" ,pkg-config)
-        ("python" ,python-wrapper)))
+      (list gettext-minimal
+            `(,glib "bin")
+            gobject-introspection
+            gsettings-desktop-schemas
+            pkg-config
+            python-dbusmock
+            python-pytest
+            python-wrapper))
      (synopsis "Assistive Technology Service Provider Interface, core components")
      (description
       "The Assistive Technology Service Provider Interface, core components,
@@ -922,86 +874,45 @@ is part of the GNOME accessibility project.")
      (license license:lgpl2.1+)
      (home-page "https://wiki.gnome.org/Accessibility/"))))
 
-(define-public at-spi2-core
-  (package/inherit at-spi2-core-minimal
-    (outputs (cons "doc" (package-outputs at-spi2-core-minimal)))
+(define-public at-spi2-core-with-documentation
+  (package/inherit at-spi2-core
+    (outputs (cons "doc" (package-outputs at-spi2-core)))
     (arguments
-     (substitute-keyword-arguments (package-arguments at-spi2-core-minimal)
+     (substitute-keyword-arguments (package-arguments at-spi2-core)
        ((#:configure-flags flags ''())
-        `(cons ,(if (%current-target-system)
-                    "-Ddocs=false"
-                    "-Ddocs=true")
-               ,flags))
+        #~(cons #$(if (%current-target-system)
+                      "-Ddocs=false"
+                      "-Ddocs=true")
+                #$flags))
        ((#:phases phases)
-        `(modify-phases ,phases
-           (add-after 'unpack 'set-documentation-path
-             (lambda* (#:key outputs #:allow-other-keys)
-               ;; Ensure that the cross-references point to the "doc" output.
-               (substitute* "doc/libatspi/meson.build"
-                 (("docpath =.*")
-                  (string-append "docpath = '" (assoc-ref outputs "doc")
-                                 "/share/gtk-doc/html'\n")))))
-           (add-before 'install 'prepare-doc-directory
-             (lambda* (#:key outputs #:allow-other-keys)
-               (mkdir-p (string-append (assoc-ref outputs "doc") "/share"))))
-           ,@(if (%current-target-system)
-                 '()
-                 '((add-after 'install 'move-documentation
-                     (lambda* (#:key outputs #:allow-other-keys)
-                       (let ((out (assoc-ref outputs "out"))
-                             (doc (assoc-ref outputs "doc")))
-                         (copy-recursively
-                          (string-append out "/share/gtk-doc")
-                          (string-append doc "/share/gtk-doc"))
-                         (delete-file-recursively
-                          (string-append out "/share/gtk-doc")))))))))))
+        #~(modify-phases #$phases
+            (add-after 'unpack 'set-documentation-path
+              (lambda _
+                ;; Ensure that the cross-references point to the "doc" output.
+                (substitute* "doc/libatspi/meson.build"
+                  (("docpath =.*")
+                   (string-append "docpath = '" #$output:doc
+                                  "/share/gtk-doc/html'\n")))))
+            (add-before 'install 'prepare-doc-directory
+              (lambda _
+                (mkdir-p (string-append #$output:doc "/share"))))
+            #$@(if (%current-target-system)
+                   #~()
+                   #~((add-after 'install 'move-documentation
+                        (lambda _
+                          (copy-recursively
+                           (string-append #$output "/share/gtk-doc")
+                           (string-append #$output:doc "/share/gtk-doc"))
+                          (delete-file-recursively
+                           (string-append #$output "/share/gtk-doc"))))))))))
     (native-inputs
-     (append `(("docbook-xml" ,docbook-xml-4.3)
-               ("gtk-doc" ,gtk-doc/stable)
-               ("libxml2" ,libxml2))    ;for XML_CATALOG_FILES
-         (package-native-inputs at-spi2-core-minimal)))
+     (modify-inputs (package-native-inputs at-spi2-core)
+       (append docbook-xml-4.3 gtk-doc/stable)))
     (properties (alist-delete 'hidden?
-                              (package-properties at-spi2-core-minimal)))))
+                              (package-properties at-spi2-core)))))
 
 (define-public at-spi2-atk
-  (package
-    (name "at-spi2-atk")
-    (version "2.38.0")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append "mirror://gnome/sources/" name "/"
-                                  (version-major+minor version)  "/"
-                                  name "-" version ".tar.xz"))
-              (sha256
-               (base32
-                "0ks6r9sx27l80n3a7yjmkilxv48cqj183wc7cap3caw2myjhi86g"))))
-    (build-system meson-build-system)
-    (arguments
-     `(#:glib-or-gtk? #t     ; To wrap binaries and/or compile schemas
-       ;; Compiling tests requires "libxml2" to be in 'inputs'.
-       ,@(if (%current-target-system)
-             `(#:configure-flags '("-Dtests=false"))
-             '())
-       #:phases
-       (modify-phases %standard-phases
-         (replace 'check
-           ;; Run test-suite under a dbus session.
-           (lambda _
-             (setenv "DBUS_FATAL_WARNINGS" "0")
-             (invoke "dbus-launch" "meson" "test"))))))
-    (propagated-inputs
-     (list at-spi2-core-minimal)) ; required by atk-bridge-2.0.pc
-    (inputs
-     (list atk glib))
-    (native-inputs
-     (list dbus ; For tests
-           gobject-introspection libxml2 pkg-config))
-    (synopsis "Assistive Technology Service Provider Interface, ATK bindings")
-    (description
-     "The Assistive Technology Service Provider Interface
-is part of the GNOME accessibility project.")
-    (license license:lgpl2.1+)
-    (home-page "https://wiki.gnome.org/Accessibility/")))
+  (deprecated-package "at-spi2-atk" at-spi2-core))
 
 (define-public gtk+-2
   (package
@@ -1022,11 +933,11 @@ is part of the GNOME accessibility project.")
     (build-system gnu-build-system)
     (outputs '("out" "bin" "doc" "debug"))
     (propagated-inputs
-     (list atk cairo
-           (if (target-x86-64?)
-             librsvg-bootstrap
-             librsvg-2.40)
-           glib pango))
+     (list atk
+           cairo
+           glib
+           (librsvg-for-system)
+           pango))
     (inputs
      (list cups
            libx11
@@ -1050,41 +961,43 @@ is part of the GNOME accessibility project.")
            python-wrapper
            xorg-server-for-tests))
     (arguments
-     `(#:parallel-tests? #f
-       #:configure-flags
-       (list "--with-xinput=yes"
-             (string-append "--with-html-dir="
-                            (assoc-ref %outputs "doc")
-                            "/share/gtk-doc/html"))
-       #:phases
-       (modify-phases %standard-phases
-         (add-after 'unpack 'disable-failing-tests
-           (lambda _
-             (substitute* "gtk/Makefile.in"
-               (("aliasfilescheck\\.sh") ""))
-             (substitute* "gtk/tests/recentmanager.c"
-               (("g_test_add_func \\(\"/recent-manager.*;") ""))
-             (substitute* "gtk/tests/defaultvalue.c"
-               (("return g_test_run\\(\\);") ""))
-             #t))
-         (add-before 'check 'pre-check
-           (lambda _
-             ;; Tests require a running X server.
-             (system "Xvfb :1 +extension GLX &")
-             (setenv "DISPLAY" ":1")
-             ;; Tests write to $HOME.
-             (setenv "HOME" (getcwd))
-             ;; Tests look for $XDG_RUNTIME_DIR.
-             (setenv "XDG_RUNTIME_DIR" (getcwd))
-             ;; For missing '/etc/machine-id'.
-             (setenv "DBUS_FATAL_WARNINGS" "0")
-             #t))
-         (add-after 'install 'remove-cache
-           (lambda* (#:key outputs #:allow-other-keys)
-	     (for-each
-	      delete-file
-	      (find-files (assoc-ref outputs "out") "immodules.cache"))
-             #t)))))
+     (list
+      #:parallel-tests? #f
+      #:configure-flags
+      #~(list "--with-xinput=yes"
+              (string-append "--with-html-dir=" #$output
+                             "/share/gtk-doc/html"))
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-after 'unpack 'disable-failing-tests
+            (lambda _
+              (substitute* "gtk/Makefile.in"
+                (("aliasfilescheck\\.sh") ""))
+              (substitute* "gtk/tests/recentmanager.c"
+                (("g_test_add_func \\(\"/recent-manager.*;") ""))
+              (substitute* "gtk/tests/defaultvalue.c"
+                (("return g_test_run\\(\\);") ""))
+              ;; These require XPM support in Gdk-Pixbuf which is obsolete.
+              (substitute* "gtk/tests/textbuffer.c"
+                (("g_test_add_func.*test_fill_empty\\);")
+                 "")
+                (("g_test_add_func.*test_tag\\);")
+                 ""))))
+          (add-before 'check 'pre-check
+            (lambda _
+              ;; Tests require a running X server.
+              (system "Xvfb :1 +extension GLX &")
+              (setenv "DISPLAY" ":1")
+              ;; Tests write to $HOME.
+              (setenv "HOME" (getcwd))
+              ;; Tests look for $XDG_RUNTIME_DIR.
+              (setenv "XDG_RUNTIME_DIR" (getcwd))
+              ;; For missing '/etc/machine-id'.
+              (setenv "DBUS_FATAL_WARNINGS" "0")))
+          (add-after 'install 'remove-cache
+            (lambda _
+	      (for-each delete-file
+	                (find-files #$output "immodules.cache")))))))
     (native-search-paths
      (list (search-path-specification
             (variable "GUIX_GTK2_PATH")
@@ -1117,14 +1030,12 @@ application suites.")
                                 "gtk3-respect-GUIX_GTK3_IM_MODULE_FILE.patch"))))
     (propagated-inputs
      (list atk
-           at-spi2-atk
+           at-spi2-core
            cairo
            fribidi
            fontconfig
            freetype
-           (if (target-x86-64?)
-             librsvg-bootstrap
-             librsvg-2.40)
+           (librsvg-for-system)
            glib
            libcloudproviders-minimal
            libepoxy
@@ -1144,11 +1055,11 @@ application suites.")
            wayland
            wayland-protocols))
     (inputs
-     (list colord-minimal ;to prevent a cycle with inkscape
+     (list colord-minimal               ;to prevent a cycle with inkscape
            cups
            graphene
            harfbuzz
-           iso-codes/official ;XXX TODO core-updates: use iso-codes
+           iso-codes
            json-glib-minimal
            libxml2
            rest))
@@ -1167,67 +1078,63 @@ application suites.")
            xorg-server-for-tests
            libxslt))
     (arguments
-     `(#:imported-modules ((guix build glib-or-gtk-build-system)
+     (list
+      #:imported-modules `((guix build glib-or-gtk-build-system)
                            ,@%gnu-build-system-modules)
-       #:modules ((guix build utils)
+      #:modules '((guix build utils)
                   (guix build gnu-build-system)
                   ((guix build glib-or-gtk-build-system) #:prefix glib-or-gtk:))
-       #: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"
-                               ;; The header file <gdk/gdkwayland.h> is required
-                               ;; by gnome-control-center
-                               "--enable-wayland-backend"
-                               ;; This is necessary to build both backends.
-                               "--enable-x11-backend"
-                               ;; This enables the HTML5 websocket backend.
-                               "--enable-broadway-backend")
-       #: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))
-         (add-before 'check 'pre-check
-           (lambda _
-             ;; Tests require a running X server.
-             (system "Xvfb :1 +extension GLX &")
-             (setenv "DISPLAY" ":1")
-             ;; Tests write to $HOME.
-             (setenv "HOME" (getcwd))
-             ;; Tests look for $XDG_RUNTIME_DIR.
-             (setenv "XDG_RUNTIME_DIR" (getcwd))
-             ;; 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.
-           (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))))))
+      #:disallowed-references (list 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="
+                                               #$output "/share/gtk-doc/html")
+                                "--enable-cloudproviders"
+                                ;; The header file <gdk/gdkwayland.h> is required
+                                ;; by gnome-control-center
+                                "--enable-wayland-backend"
+                                ;; This is necessary to build both backends.
+                                "--enable-x11-backend"
+                                ;; This enables the HTML5 websocket backend.
+                                "--enable-broadway-backend")
+      #: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 = "))))
+          (add-before 'check 'pre-check
+            (lambda _
+              ;; Tests require a running X server.
+              (system "Xvfb :1 +extension GLX &")
+              (setenv "DISPLAY" ":1")
+              ;; Tests write to $HOME.
+              (setenv "HOME" (getcwd))
+              ;; Tests look for $XDG_RUNTIME_DIR.
+              (setenv "XDG_RUNTIME_DIR" (getcwd))
+              ;; For missing '/etc/machine-id'.
+              (setenv "DBUS_FATAL_WARNINGS" "0")))
+          (add-after 'install 'move-desktop-files
+            ;; Move desktop files into 'bin' to avoid cycle references.
+            (lambda* (#:key outputs #:allow-other-keys)
+              (mkdir-p (string-append #$output:bin "/share"))
+              (rename-file (string-append #$output "/share/applications")
+                           (string-append #$output:bin
+                                          "/share/applications")))))))
     (native-search-paths
      (list (search-path-specification
             (variable "GUIX_GTK3_PATH")
@@ -1385,6 +1292,7 @@ application suites.")
            iso-codes
            json-glib
            libcloudproviders            ;for cloud-providers support
+           libgudev                     ;for gstreamer-gl
            libjpeg-turbo
            libpng
            libtiff
@@ -1395,9 +1303,7 @@ application suites.")
      ;; Following dependencies are referenced in .pc files.
      (list cairo
            fontconfig
-           (if (target-x86-64?)
-             librsvg-bootstrap
-             librsvg-2.40)
+           (librsvg-for-system)
            glib
            graphene
            libepoxy
@@ -1412,7 +1318,7 @@ application suites.")
            libxkbcommon
            libxrandr
            libxrender
-           pango-next
+           pango
            vulkan-headers
            vulkan-loader                ;for vulkan graphics API support
            wayland                      ;for wayland display-backend
@@ -1792,7 +1698,7 @@ library.")
 (define-public pangomm
   (package
     (name "pangomm")
-    (version "2.50.0")
+    (version "2.50.1")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnome/sources/" name "/"
@@ -1800,48 +1706,45 @@ library.")
                                   name "-" version ".tar.xz"))
               (sha256
                (base32
-                "0nrvvf1fyzlimh7rvxcblnrvn2l9rz8mpn2iwzlzr6kv05zafym2"))))
+                "054jglmnbig14fs99qqi5y174z9j90r6dprpyszw42742cs95jfc"))))
     (build-system meson-build-system)
     (outputs '("out" "doc"))
     (arguments
-     `(#:glib-or-gtk? #t     ; To wrap binaries and/or compile schemas
-       #:configure-flags
-       (list
-        "-Dbuild-documentation=true")
-       #:phases
-       (modify-phases %standard-phases
-         (add-after 'install 'move-doc
-           (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/doc")
-                (string-append doc "/share/doc"))
-               #t))))))
+     (list
+      #:glib-or-gtk? #t              ; To wrap binaries and/or compile schemas
+      #:configure-flags #~(list "-Dbuild-documentation=true")
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-after 'install 'move-doc
+            (lambda _
+              (mkdir-p (string-append #$output:doc "/share"))
+              (rename-file (string-append #$output "/share/doc")
+                           (string-append #$output:doc "/share/doc")))))))
     (native-inputs
-     `(("dot" ,graphviz)
-       ("doxygen" ,doxygen)
-       ("m4" ,m4)
-       ("mm-common" ,mm-common)
-       ("perl" ,perl)
-       ("pkg-config" ,pkg-config)
-       ("python" ,python)
-       ("xsltproc" ,libxslt)))
+     (list graphviz
+           doxygen
+           m4
+           mm-common
+           perl
+           pkg-config
+           python
+           libxslt))
     (propagated-inputs
-     (list cairo cairomm glibmm pango-next))
+     (list cairo
+           cairomm
+           glibmm
+           pango))
     (home-page "https://pango.gnome.org//")
     (synopsis "C++ interface to the Pango text rendering library")
-    (description
-     "Pangomm provides a C++ programming interface to the Pango text rendering
-library.")
+    (description "Pangomm provides a C++ programming interface to the Pango
+text rendering library.")
     (license license:lgpl2.1+)))
 
 (define-public pangomm-2.46
   (package
     (inherit pangomm)
     (name "pangomm")
-    (version "2.46.0")
+    (version "2.46.2")
     (source
      (origin
        (method url-fetch)
@@ -1850,7 +1753,7 @@ library.")
                        (version-major+minor version)  "/"
                        name "-" version ".tar.xz"))
        (sha256
-        (base32 "06zczkaxf5p5kjgnzrfylzi40w9a8lxpndgs7rpn12qrsq27sy6k"))))
+        (base32 "1x56xb4k1d9g88a1d9rlcvy97mmj39rib6c3wfzpff04vjs2li2p"))))
     (propagated-inputs
      (list cairomm-1.14 glibmm-2.64 pango))))
 
@@ -1994,7 +1897,7 @@ tutorial.")
   (package
     (inherit gtkmm)
     (name "gtkmm")
-    (version "3.24.5")
+    (version "3.24.6")
     (source
      (origin
        (method url-fetch)
@@ -2003,7 +1906,7 @@ tutorial.")
                        (version-major+minor version)  "/"
                        name "-" version ".tar.xz"))
        (sha256
-        (base32 "1ri2msp3cmzi6r65ghwb8gfavfaxv0axpwi3q60nm7v8hvg36qw5"))))
+        (base32 "1mhi3ws43l051fha4zssfpykraa1qc2hd408l2xk65jfjhp18gjb"))))
     (propagated-inputs
      `(("atkmm-2.28" ,atkmm-2.28)
        ("cairomm-1.14" ,cairomm-1.14)
@@ -2065,7 +1968,7 @@ printing and other features typical of a source code editor.")
 (define-public python-pycairo
   (package
     (name "python-pycairo")
-    (version "1.20.0")
+    (version "1.21.0")
     (source
      (origin
       (method url-fetch)
@@ -2073,7 +1976,7 @@ printing and other features typical of a source code editor.")
                           version "/pycairo-" version ".tar.gz"))
       (sha256
        (base32
-        "1326aa2ybhhhrvz3n4p22z5sic25m016ddb5yq0hvbprnw6a35an"))))
+        "0jxpyibpjadw8ah1mqbhvryr795myiznb1ikm8wgjbamibqhf695"))))
     (build-system python-build-system)
     (native-inputs
      (list pkg-config python-pytest))
@@ -2083,6 +1986,8 @@ printing and other features typical of a source code editor.")
     (synopsis "Python bindings for cairo")
     (description
      "Pycairo is a set of Python bindings for the Cairo graphics library.")
+    (properties
+     '((upstream-name . "pycairo")))
     (license license:lgpl3+)))
 
 ;; Pycairo no longer supports Python 2 since version 1.19.0, so we stick