unofficial mirror of guix-patches@gnu.org 
 help / color / mirror / code / Atom feed
* [bug#54261] [PATCH]: Update GTK to 4.6.1.
@ 2022-03-05 15:00 Zhu Zihao
       [not found] ` <handler.54261.B.164649346324787.ack@debbugs.gnu.org>
  0 siblings, 1 reply; 27+ messages in thread
From: Zhu Zihao @ 2022-03-05 15:00 UTC (permalink / raw)
  To: 54261


[-- Attachment #1.1: Type: text/plain, Size: 214 bytes --]

These patches add pango 1.50.4 and update GTK to 4.6.1.

I've test the celluloid and gnome-todo and they builts
successfully(depends on GTK4).

I also want to update libadwaita to 1.0.2, but it breaks gnome-todo.


[-- Attachment #1.2: signature.asc --]
[-- Type: application/pgp-signature, Size: 255 bytes --]

[-- Attachment #2: 0001-gnu-pango-Add-version-1.50.4.patch --]
[-- Type: text/x-patch, Size: 1639 bytes --]

From cdad10dfd07b2007d5b2d76098a4a36ab62ce3ec Mon Sep 17 00:00:00 2001
From: Zhu Zihao <all_but_last@163.com>
Date: Sat, 5 Mar 2022 21:36:25 +0800
Subject: [PATCH 1/2] gnu: pango: Add version 1.50.4.

* gnu/packages/gtk.scm(pango-1.50): New variable.
---
 gnu/packages/gtk.scm | 17 +++++++++++++++++
 1 file changed, 17 insertions(+)

diff --git a/gnu/packages/gtk.scm b/gnu/packages/gtk.scm
index 29302051c1..b9f8bc324f 100644
--- a/gnu/packages/gtk.scm
+++ b/gnu/packages/gtk.scm
@@ -29,6 +29,7 @@
 ;;; Copyright © 2021 Simon Streit <simon@netpanic.org>
 ;;; Copyright © 2021 Maxime Devos <maximedevos@telenet.be>
 ;;; Copyright © 2021 Wamm K. D. <jaft.r@outlook.com>
+;;; Copyright © 2022 Zhu Zihao <all_but_last@163.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -409,6 +410,22 @@ (define-public pango
     (home-page "https://pango.gnome.org/")
     (license license:lgpl2.0+)))
 
+;; TODO: Make this the default package next in release cycle.
+(define-public pango-1.50
+  (package
+    (inherit pango)
+    (name "pango")
+    (version "1.50.4")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "mirror://gnome/sources/pango/"
+                                  (version-major+minor version) "/"
+                                  name "-" version ".tar.xz"))
+              (patches (search-patches "pango-skip-libthai-test.patch"))
+              (sha256
+               (base32
+                "0qn1a7ccs3p5vc6swbqm6hdzka879l0gp9220lq4bcf2gpl67bgl"))))))
+
 (define-public pango-1.42
   (package
    (inherit pango)
-- 
2.34.0


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #3: 0002-gnu-gtk-Update-to-4.6.1.patch --]
[-- Type: text/x-patch, Size: 5414 bytes --]

From b542dce1f2a7b7eea7a254d1f1a05df26367b5ac Mon Sep 17 00:00:00 2001
From: Zhu Zihao <all_but_last@163.com>
Date: Sat, 5 Mar 2022 22:40:46 +0800
Subject: [PATCH 2/2] gnu: gtk: Update to 4.6.1.

* gnu/local.mk (dist_patch_DATA): Remove gtk-introspection-test.patch.
* gnu/packages/patches/gtk-introspection-test.patch: Remove.

* gnu/packages/gtk.scm (gtk): Update to 4.6.1.
[source]: Remove stale patch.
[arguments]<phases>: Add 'patch-rst2man' phase, correct the binary name of
rst2man to 'rst2man.py'
[inputs]: Add libjpeg-turbo, libpng, libtiff.
[native-inputs]: Add python-docutils.
[propagated-inputs]: Use pango-1.50.
---
 gnu/local.mk                                  |  1 -
 gnu/packages/gtk.scm                          | 17 +++++++++-----
 .../patches/gtk-introspection-test.patch      | 22 -------------------
 3 files changed, 12 insertions(+), 28 deletions(-)
 delete mode 100644 gnu/packages/patches/gtk-introspection-test.patch

diff --git a/gnu/local.mk b/gnu/local.mk
index c8026a1ec1..1e0bb0c00c 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -1244,7 +1244,6 @@ dist_patch_DATA =						\
   %D%/packages/patches/gtk3-respect-GUIX_GTK3_PATH.patch	\
   %D%/packages/patches/gtk3-respect-GUIX_GTK3_IM_MODULE_FILE.patch \
   %D%/packages/patches/gtk-doc-respect-xml-catalog.patch	\
-  %D%/packages/patches/gtk-introspection-test.patch		\
   %D%/packages/patches/gtk4-respect-GUIX_GTK4_PATH.patch    	\
   %D%/packages/patches/gtkglext-disable-disable-deprecated.patch \
   %D%/packages/patches/gtksourceview-2-add-default-directory.patch \
diff --git a/gnu/packages/gtk.scm b/gnu/packages/gtk.scm
index b9f8bc324f..11c99fb71b 100644
--- a/gnu/packages/gtk.scm
+++ b/gnu/packages/gtk.scm
@@ -1076,7 +1076,7 @@ (define-public gtk+
 (define-public gtk
   (package
     (name "gtk")
-    (version "4.4.1")
+    (version "4.6.1")
     (source
      (origin
        (method url-fetch)
@@ -1084,10 +1084,9 @@ (define-public gtk
                            (version-major+minor version)  "/"
                            name "-" version ".tar.xz"))
        (sha256
-        (base32 "1x6xlc063nqp7cg6py4kq1kpw9pkq49ifk5kki0brc667ncdmahg"))
+        (base32 "0pzcs24j67f90kjcp6apgn6rffynxksjm1m7d3an7kdv3k90hmfq"))
        (patches
-        (search-patches "gtk4-respect-GUIX_GTK4_PATH.patch"
-                        "gtk-introspection-test.patch"))))
+        (search-patches "gtk4-respect-GUIX_GTK4_PATH.patch"))))
     (build-system meson-build-system)
     (outputs '("out" "bin" "doc"))
     (arguments
@@ -1117,6 +1116,10 @@ (define-public gtk
          (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 'patch-rst2man
+           (lambda _
+             (substitute* "docs/reference/gtk/meson.build"
+               (("find_program\\('rst2man'") "find_program('rst2man.py'"))))
          (add-after 'unpack 'patch
            (lambda* (#:key inputs native-inputs outputs #:allow-other-keys)
              ;; Correct DTD resources of docbook.
@@ -1194,6 +1197,7 @@ (define-public gtk
        ("pkg-config" ,pkg-config)
        ("python-pygobject" ,python-pygobject)
        ;; These python modules are required for building documentation.
+       ("python-docutils" ,python-docutils)
        ("python-jinja2" ,python-jinja2)
        ("python-markdown" ,python-markdown)
        ("python-markupsafe" ,python-markupsafe)
@@ -1216,7 +1220,10 @@ (define-public gtk
            iso-codes
            json-glib
            libcloudproviders ;for cloud-providers support
+           libjpeg-turbo
+           libpng
            librsvg
+           libtiff
            python
            rest
            tracker))          ;for filechooser search support
@@ -1239,7 +1246,7 @@ (define-public gtk
        ("libxkbcommon" ,libxkbcommon)
        ("libxrandr" ,libxrandr)
        ("libxrender" ,libxrender)
-       ("pango" ,pango)
+       ("pango" ,pango-1.50)
        ("vulkan-headers" ,vulkan-headers)
        ("vulkan-loader" ,vulkan-loader) ;for vulkan graphics API support
        ("wayland" ,wayland)             ;for wayland display-backend
diff --git a/gnu/packages/patches/gtk-introspection-test.patch b/gnu/packages/patches/gtk-introspection-test.patch
deleted file mode 100644
index 570ea806a9..0000000000
--- a/gnu/packages/patches/gtk-introspection-test.patch
+++ /dev/null
@@ -1,22 +0,0 @@
-# Extend rather than stomp environment variables.
-# Upstream status: https://gitlab.gnome.org/GNOME/gtk/-/merge_requests/4268
-diff --git a/testsuite/introspection/meson.build b/testsuite/introspection/meson.build
-index 6202fb7446..b59191eb0f 100644
---- a/testsuite/introspection/meson.build
-+++ b/testsuite/introspection/meson.build
-@@ -1,9 +1,10 @@
-+env = environment()
-+env.prepend('GI_TYPELIB_PATH',
-+    join_paths(project_build_root, 'gtk'),
-+    gi_dep.get_pkgconfig_variable('typelibdir'))
-+env.prepend('LD_PRELOAD', join_paths(project_build_root, 'gtk', 'libgtk-4.so'))
- 
- test('api',
-      find_program('api.py', dirs: meson.current_source_dir()),
-      suite: ['introspection'],
--     env: [
--       'GI_TYPELIB_PATH=@0@/gtk:@1@'.format(project_build_root,
--          gi_dep.get_pkgconfig_variable('typelibdir')),
--       'LD_PRELOAD=@0@/gtk/libgtk-4.so'.format(project_build_root),
--     ])
-+     env: env)
-- 
2.34.0


[-- Attachment #4: Type: text/plain, Size: 100 bytes --]


-- 
Retrieve my PGP public key:

  gpg --recv-keys D47A9C8B2AE3905B563D9135BE42B352A9F6821F

Zihao

^ permalink raw reply related	[flat|nested] 27+ messages in thread

* [bug#54261] Acknowledgement ([PATCH]: Update GTK to 4.6.1.)
       [not found] ` <handler.54261.B.164649346324787.ack@debbugs.gnu.org>
@ 2022-03-05 15:55   ` Zhu Zihao
  2022-03-11 15:15     ` Zhu Zihao
  0 siblings, 1 reply; 27+ messages in thread
From: Zhu Zihao @ 2022-03-05 15:55 UTC (permalink / raw)
  To: 54261

[-- Attachment #1: Type: text/plain, Size: 201 bytes --]


Typo: next in release cycle -> in next release cyle.

Maybe call pango-1.50 'pango-next'? 
-- 
Retrieve my PGP public key:

  gpg --recv-keys D47A9C8B2AE3905B563D9135BE42B352A9F6821F

Zihao

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 255 bytes --]

^ permalink raw reply	[flat|nested] 27+ messages in thread

* [bug#54261] Acknowledgement ([PATCH]: Update GTK to 4.6.1.)
  2022-03-05 15:55   ` [bug#54261] Acknowledgement ([PATCH]: Update GTK to 4.6.1.) Zhu Zihao
@ 2022-03-11 15:15     ` Zhu Zihao
  2022-03-11 15:59       ` Maxime Devos
                         ` (3 more replies)
  0 siblings, 4 replies; 27+ messages in thread
From: Zhu Zihao @ 2022-03-11 15:15 UTC (permalink / raw)
  To: 54261


[-- Attachment #1.1: Type: text/plain, Size: 8 bytes --]


ping.


[-- Attachment #1.2: signature.asc --]
[-- Type: application/pgp-signature, Size: 255 bytes --]

[-- Attachment #2: 0001-gnu-pango-Add-version-1.50.4.patch --]
[-- Type: text/x-patch, Size: 1639 bytes --]

From bd53ac3a162c1f5b53363126c125d826a5cb6a6e Mon Sep 17 00:00:00 2001
From: Zhu Zihao <all_but_last@163.com>
Date: Sat, 5 Mar 2022 21:36:25 +0800
Subject: [PATCH 1/2] gnu: pango: Add version 1.50.4.

* gnu/packages/gtk.scm(pango-next): New variable.
---
 gnu/packages/gtk.scm | 17 +++++++++++++++++
 1 file changed, 17 insertions(+)

diff --git a/gnu/packages/gtk.scm b/gnu/packages/gtk.scm
index 29302051c1..bc7b388a88 100644
--- a/gnu/packages/gtk.scm
+++ b/gnu/packages/gtk.scm
@@ -29,6 +29,7 @@
 ;;; Copyright © 2021 Simon Streit <simon@netpanic.org>
 ;;; Copyright © 2021 Maxime Devos <maximedevos@telenet.be>
 ;;; Copyright © 2021 Wamm K. D. <jaft.r@outlook.com>
+;;; Copyright © 2022 Zhu Zihao <all_but_last@163.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -409,6 +410,22 @@ (define-public pango
     (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")
+    (version "1.50.4")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "mirror://gnome/sources/pango/"
+                                  (version-major+minor version) "/"
+                                  name "-" version ".tar.xz"))
+              (patches (search-patches "pango-skip-libthai-test.patch"))
+              (sha256
+               (base32
+                "0qn1a7ccs3p5vc6swbqm6hdzka879l0gp9220lq4bcf2gpl67bgl"))))))
+
 (define-public pango-1.42
   (package
    (inherit pango)
-- 
2.34.0


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #3: 0002-gnu-gtk-Update-to-4.6.1.patch --]
[-- Type: text/x-patch, Size: 5414 bytes --]

From 0c22cbd070d47b8c3b534caceb3eb05c8f7f6d41 Mon Sep 17 00:00:00 2001
From: Zhu Zihao <all_but_last@163.com>
Date: Sat, 5 Mar 2022 22:40:46 +0800
Subject: [PATCH 2/2] gnu: gtk: Update to 4.6.1.

* gnu/local.mk (dist_patch_DATA): Remove gtk-introspection-test.patch.
* gnu/packages/patches/gtk-introspection-test.patch: Remove.

* gnu/packages/gtk.scm (gtk): Update to 4.6.1.
[source]: Remove stale patch.
[arguments]<phases>: Add 'patch-rst2man' phase, correct the binary name of
rst2man to 'rst2man.py'
[inputs]: Add libjpeg-turbo, libpng, libtiff.
[native-inputs]: Add python-docutils.
[propagated-inputs]: Use pango-next.
---
 gnu/local.mk                                  |  1 -
 gnu/packages/gtk.scm                          | 17 +++++++++-----
 .../patches/gtk-introspection-test.patch      | 22 -------------------
 3 files changed, 12 insertions(+), 28 deletions(-)
 delete mode 100644 gnu/packages/patches/gtk-introspection-test.patch

diff --git a/gnu/local.mk b/gnu/local.mk
index c8026a1ec1..1e0bb0c00c 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -1244,7 +1244,6 @@ dist_patch_DATA =						\
   %D%/packages/patches/gtk3-respect-GUIX_GTK3_PATH.patch	\
   %D%/packages/patches/gtk3-respect-GUIX_GTK3_IM_MODULE_FILE.patch \
   %D%/packages/patches/gtk-doc-respect-xml-catalog.patch	\
-  %D%/packages/patches/gtk-introspection-test.patch		\
   %D%/packages/patches/gtk4-respect-GUIX_GTK4_PATH.patch    	\
   %D%/packages/patches/gtkglext-disable-disable-deprecated.patch \
   %D%/packages/patches/gtksourceview-2-add-default-directory.patch \
diff --git a/gnu/packages/gtk.scm b/gnu/packages/gtk.scm
index bc7b388a88..3d7706b9ee 100644
--- a/gnu/packages/gtk.scm
+++ b/gnu/packages/gtk.scm
@@ -1076,7 +1076,7 @@ (define-public gtk+
 (define-public gtk
   (package
     (name "gtk")
-    (version "4.4.1")
+    (version "4.6.1")
     (source
      (origin
        (method url-fetch)
@@ -1084,10 +1084,9 @@ (define-public gtk
                            (version-major+minor version)  "/"
                            name "-" version ".tar.xz"))
        (sha256
-        (base32 "1x6xlc063nqp7cg6py4kq1kpw9pkq49ifk5kki0brc667ncdmahg"))
+        (base32 "0pzcs24j67f90kjcp6apgn6rffynxksjm1m7d3an7kdv3k90hmfq"))
        (patches
-        (search-patches "gtk4-respect-GUIX_GTK4_PATH.patch"
-                        "gtk-introspection-test.patch"))))
+        (search-patches "gtk4-respect-GUIX_GTK4_PATH.patch"))))
     (build-system meson-build-system)
     (outputs '("out" "bin" "doc"))
     (arguments
@@ -1117,6 +1116,10 @@ (define-public gtk
          (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 'patch-rst2man
+           (lambda _
+             (substitute* "docs/reference/gtk/meson.build"
+               (("find_program\\('rst2man'") "find_program('rst2man.py'"))))
          (add-after 'unpack 'patch
            (lambda* (#:key inputs native-inputs outputs #:allow-other-keys)
              ;; Correct DTD resources of docbook.
@@ -1194,6 +1197,7 @@ (define-public gtk
        ("pkg-config" ,pkg-config)
        ("python-pygobject" ,python-pygobject)
        ;; These python modules are required for building documentation.
+       ("python-docutils" ,python-docutils)
        ("python-jinja2" ,python-jinja2)
        ("python-markdown" ,python-markdown)
        ("python-markupsafe" ,python-markupsafe)
@@ -1216,7 +1220,10 @@ (define-public gtk
            iso-codes
            json-glib
            libcloudproviders ;for cloud-providers support
+           libjpeg-turbo
+           libpng
            librsvg
+           libtiff
            python
            rest
            tracker))          ;for filechooser search support
@@ -1239,7 +1246,7 @@ (define-public gtk
        ("libxkbcommon" ,libxkbcommon)
        ("libxrandr" ,libxrandr)
        ("libxrender" ,libxrender)
-       ("pango" ,pango)
+       ("pango" ,pango-next)
        ("vulkan-headers" ,vulkan-headers)
        ("vulkan-loader" ,vulkan-loader) ;for vulkan graphics API support
        ("wayland" ,wayland)             ;for wayland display-backend
diff --git a/gnu/packages/patches/gtk-introspection-test.patch b/gnu/packages/patches/gtk-introspection-test.patch
deleted file mode 100644
index 570ea806a9..0000000000
--- a/gnu/packages/patches/gtk-introspection-test.patch
+++ /dev/null
@@ -1,22 +0,0 @@
-# Extend rather than stomp environment variables.
-# Upstream status: https://gitlab.gnome.org/GNOME/gtk/-/merge_requests/4268
-diff --git a/testsuite/introspection/meson.build b/testsuite/introspection/meson.build
-index 6202fb7446..b59191eb0f 100644
---- a/testsuite/introspection/meson.build
-+++ b/testsuite/introspection/meson.build
-@@ -1,9 +1,10 @@
-+env = environment()
-+env.prepend('GI_TYPELIB_PATH',
-+    join_paths(project_build_root, 'gtk'),
-+    gi_dep.get_pkgconfig_variable('typelibdir'))
-+env.prepend('LD_PRELOAD', join_paths(project_build_root, 'gtk', 'libgtk-4.so'))
- 
- test('api',
-      find_program('api.py', dirs: meson.current_source_dir()),
-      suite: ['introspection'],
--     env: [
--       'GI_TYPELIB_PATH=@0@/gtk:@1@'.format(project_build_root,
--          gi_dep.get_pkgconfig_variable('typelibdir')),
--       'LD_PRELOAD=@0@/gtk/libgtk-4.so'.format(project_build_root),
--     ])
-+     env: env)
-- 
2.34.0


[-- Attachment #4: Type: text/plain, Size: 101 bytes --]



-- 
Retrieve my PGP public key:

  gpg --recv-keys D47A9C8B2AE3905B563D9135BE42B352A9F6821F

Zihao

^ permalink raw reply related	[flat|nested] 27+ messages in thread

* [bug#54261] Acknowledgement ([PATCH]: Update GTK to 4.6.1.)
  2022-03-11 15:15     ` Zhu Zihao
@ 2022-03-11 15:59       ` Maxime Devos
  2022-03-11 16:01       ` Maxime Devos
                         ` (2 subsequent siblings)
  3 siblings, 0 replies; 27+ messages in thread
From: Maxime Devos @ 2022-03-11 15:59 UTC (permalink / raw)
  To: Zhu Zihao, 54261

[-- Attachment #1: Type: text/plain, Size: 213 bytes --]

Zhu Zihao schreef op vr 11-03-2022 om 23:15 [+0800]:
> +;; TODO: Make this the default package in next release cycle.
> +(define-public pango-next

Did you mean core-updates cycle here?

Greetings,
Maxime

[-- Attachment #2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 260 bytes --]

^ permalink raw reply	[flat|nested] 27+ messages in thread

* [bug#54261] Acknowledgement ([PATCH]: Update GTK to 4.6.1.)
  2022-03-11 15:15     ` Zhu Zihao
  2022-03-11 15:59       ` Maxime Devos
@ 2022-03-11 16:01       ` Maxime Devos
  2022-03-12  2:38         ` Zhu Zihao
  2022-03-11 16:03       ` Maxime Devos
  2022-03-15 15:42       ` Zhu Zihao
  3 siblings, 1 reply; 27+ messages in thread
From: Maxime Devos @ 2022-03-11 16:01 UTC (permalink / raw)
  To: Zhu Zihao, 54261

[-- Attachment #1: Type: text/plain, Size: 459 bytes --]

Zhu Zihao schreef op vr 11-03-2022 om 23:15 [+0800]:
> +(define-public pango-next
> +  (package
> +    (inherit pango)
> +    (name "pango")
> +    (version "1.50.4")

Due to pkg-config requiring propagation (*), this can probably
unfortunately often cause profile collisions.

Greetings,
Maxime

(*) Could be avoided by symlinking pkg-config files into the pkg-config
directories of their dependent libraries, as suggested by lilyp.

[-- Attachment #2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 260 bytes --]

^ permalink raw reply	[flat|nested] 27+ messages in thread

* [bug#54261] Acknowledgement ([PATCH]: Update GTK to 4.6.1.)
  2022-03-11 15:15     ` Zhu Zihao
  2022-03-11 15:59       ` Maxime Devos
  2022-03-11 16:01       ` Maxime Devos
@ 2022-03-11 16:03       ` Maxime Devos
  2022-03-15 15:42       ` Zhu Zihao
  3 siblings, 0 replies; 27+ messages in thread
From: Maxime Devos @ 2022-03-11 16:03 UTC (permalink / raw)
  To: Zhu Zihao, 54261

[-- Attachment #1: Type: text/plain, Size: 386 bytes --]

Zhu Zihao schreef op vr 11-03-2022 om 23:15 [+0800]:
> -       ("pango" ,pango)
> +       ("pango" ,pango-next)

What if a program uses both 'pango' and gtk?  Then IIUC, it would
simultanuously use pango and pango-next in the same process, which can
easily cause problems (see e.g. the bug report about segfaults
involving multiple libcairos).

Greetings,
Maxime

[-- Attachment #2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 260 bytes --]

^ permalink raw reply	[flat|nested] 27+ messages in thread

* [bug#54261] Acknowledgement ([PATCH]: Update GTK to 4.6.1.)
  2022-03-11 16:01       ` Maxime Devos
@ 2022-03-12  2:38         ` Zhu Zihao
  2022-03-12  9:17           ` Maxime Devos
  2022-03-12  9:32           ` Maxime Devos
  0 siblings, 2 replies; 27+ messages in thread
From: Zhu Zihao @ 2022-03-12  2:38 UTC (permalink / raw)
  To: Maxime Devos; +Cc: 54261

[-- Attachment #1: Type: text/plain, Size: 1555 bytes --]


Yes, so many packages depend on pango, we'd better to update it in 'core-updates'.

Maxime Devos <maximedevos@telenet.be> writes:

> [[PGP Signed Part:Undecided]]
> Zhu Zihao schreef op vr 11-03-2022 om 23:15 [+0800]:
>> +(define-public pango-next
>> +  (package
>> +    (inherit pango)
>> +    (name "pango")
>> +    (version "1.50.4")
>
> Due to pkg-config requiring propagation (*), this can probably
> unfortunately often cause profile collisions.
>
> Greetings,
> Maxime
>
> (*) Could be avoided by symlinking pkg-config files into the pkg-config
> directories of their dependent libraries, as suggested by lilyp.
>
> [[End of PGP Signed Part]]

Not only for pkg-config files, but also for headers.

For example, the header of gtk4 may have following lines

#include <pango.h>

> What if a program uses both 'pango' and gtk?  Then IIUC, it would
> simultanuously use pango and pango-next in the same process, which can
> easily cause problems (see e.g. the bug report about segfaults
> involving multiple libcairos).

If package A propagates C@1.0 and package B propagates C@2.0. Guix will
raise an error. However, it doesn't care about something like

guix shell gtk pango@1.48

IDK which pango will win the game.

I've asked in https://debbugs.gnu.org/cgi/bugreport.cgi?bug=44327 and
suggest to introduce priority mechanism like Nix. But Ludovic Courtès
doesn't accept my suggestion.

-- 
Retrieve my PGP public key:

  gpg --recv-keys D47A9C8B2AE3905B563D9135BE42B352A9F6821F

Zihao

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 255 bytes --]

^ permalink raw reply	[flat|nested] 27+ messages in thread

* [bug#54261] Acknowledgement ([PATCH]: Update GTK to 4.6.1.)
  2022-03-12  2:38         ` Zhu Zihao
@ 2022-03-12  9:17           ` Maxime Devos
  2022-03-12  9:32           ` Maxime Devos
  1 sibling, 0 replies; 27+ messages in thread
From: Maxime Devos @ 2022-03-12  9:17 UTC (permalink / raw)
  To: Zhu Zihao; +Cc: 54261


[-- Attachment #1.1: Type: text/plain, Size: 742 bytes --]

Zhu Zihao schreef op za 12-03-2022 om 10:38 [+0800]:
> > (*) Could be avoided by symlinking pkg-config files into the pkg-
> config
> > directories of their dependent libraries, as suggested by lilyp.
> > 
> > [[End of PGP Signed Part]]
> 
> Not only for pkg-config files, but also for headers.
> 
> For example, the header of gtk4 may have following lines
> 
> #include <pango.h>

This is getting a little off-topic, but for headers, symlinking is not
necessary, pango.h could be automatically replaced by the absolute file
name /gnu/store/.../include/pango.h in gtk4's header, see attachement.
(Idea suggested by lilyp on IRC).  It needs some more work though,
see TODO's and lack of documentation.

Greetings,
Maxime.

[-- Attachment #1.2: absolute-inclusions.scm --]
[-- Type: text/x-scheme, Size: 1926 bytes --]

;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2022 Ludovic Courtès <ludo@gnu.org>
;;;
;;; This file is part of GNU Guix.
;;;
;;; GNU Guix is free software; you can redistribute it and/or modify it
;;; under the terms of the GNU General Public License as published by
;;; the Free Software Foundation; either version 3 of the License, or (at
;;; your option) any later version.
;;;
;;; GNU Guix is distributed in the hope that it will be useful, but
;;; WITHOUT ANY WARRANTY; without even the implied warranty of
;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
;;; GNU General Public License for more details.
;;;
;;; You should have received a copy of the GNU General Public License
;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.

(define-module (guix build absolute-inclusions)
  #:export (absolute-inclusions patch-header-inclusions)
  #:use-module (guix build utils)
  #:use-module (ice-9 match)
  #:use-module (rnrs exceptions))

(define (absolute-inclusions files header-locations)
  (substitute* files
    (("#include <(.*)>" original header-name)
     (guard (c ((search-error? c) original))
       ;; TODO: libgcc & etc, maybe avoid increasing the closure size
       ;; by skipping glibc headers ...
       (format #f "#include <~a>"
               (search-input-file header-locations
                                  (string-append "include/" header-name)))))))

(define* (patch-header-inclusions #:key inputs outputs #:allow-other-keys)
  "Patch inclusions in C headers in OUTPUTS to use absolute file names."
  (define header-locations (append outputs inputs))
  (define header-file? (file-name-predicate "\\.(h|hpp)$"))
  (for-each (match-lambda
              ((_ . output)
               (absolute-inclusions
                (find-files (string-append output "/include") header-file?)
                header-locations)))
            outputs))

[-- Attachment #2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 260 bytes --]

^ permalink raw reply	[flat|nested] 27+ messages in thread

* [bug#54261] Acknowledgement ([PATCH]: Update GTK to 4.6.1.)
  2022-03-12  2:38         ` Zhu Zihao
  2022-03-12  9:17           ` Maxime Devos
@ 2022-03-12  9:32           ` Maxime Devos
  2022-03-12  9:40             ` Maxime Devos
  1 sibling, 1 reply; 27+ messages in thread
From: Maxime Devos @ 2022-03-12  9:32 UTC (permalink / raw)
  To: Zhu Zihao; +Cc: 54261

[-- Attachment #1: Type: text/plain, Size: 1406 bytes --]

Zhu Zihao schreef op za 12-03-2022 om 10:38 [+0800]:
> > What if a program uses both 'pango' and gtk?  Then IIUC, it would
> > simultanuously use pango and pango-next in the same process, which
> can
> > easily cause problems (see e.g. the bug report about segfaults
> > involving multiple libcairos).
> 
> If package A propagates C@1.0 and package B propagates C@2.0. Guix
> will
> raise an error. However, it doesn't care about something like
> 
> guix shell gtk pango@1.48
> 
> IDK which pango will win the game.

'guix install' and 'guix shell' might not care, but how would this stop
the segfaults caused by multiple versions of the same library in the
same process?

Also, gtk currently propagates pango@1.48.0, the same pango as
pango@1.48, so this doesn't seem a good test to me.

Instead:

$ guix shell gtk pango@1.42.4

Looks like $GUIX_ENVIRONMENT/share/doc/ only contains pango-1.42.4 and
not pango-1.48.  Looks like a bug?

Next I tried:

$ guix shell pango@1.42.4 pango@1.48

this also does not complain and the share/doc only contains pango@42.4.
Also looks buggy?  I'll send a bug report.

> 
> I've asked in https://debbugs.gnu.org/cgi/bugreport.cgi?bug=44327 and
> suggest to introduce priority mechanism like Nix. But Ludovic Courtès
> doesn't accept my suggestion

How could a priority mechanism solve the segfaults?

Greetings,
Maxime.

[-- Attachment #2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 260 bytes --]

^ permalink raw reply	[flat|nested] 27+ messages in thread

* [bug#54261] Acknowledgement ([PATCH]: Update GTK to 4.6.1.)
  2022-03-12  9:32           ` Maxime Devos
@ 2022-03-12  9:40             ` Maxime Devos
  0 siblings, 0 replies; 27+ messages in thread
From: Maxime Devos @ 2022-03-12  9:40 UTC (permalink / raw)
  To: Zhu Zihao; +Cc: 54261

[-- Attachment #1: Type: text/plain, Size: 296 bytes --]

Maxime Devos schreef op za 12-03-2022 om 10:32 [+0100]:
> this also does not complain and the share/doc only contains
> pango@42.4.
> Also looks buggy?  I'll send a bug report.

Nevermind about the second part, looks like pango does not have a
share/doc directory.

Greetings,
Maxime.

[-- Attachment #2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 260 bytes --]

^ permalink raw reply	[flat|nested] 27+ messages in thread

* [bug#54261] Acknowledgement ([PATCH]: Update GTK to 4.6.1.)
  2022-03-11 15:15     ` Zhu Zihao
                         ` (2 preceding siblings ...)
  2022-03-11 16:03       ` Maxime Devos
@ 2022-03-15 15:42       ` Zhu Zihao
  2022-03-18 22:48         ` [bug#54261] [PATCH]: Update GTK to 4.6.1 Ludovic Courtès
  3 siblings, 1 reply; 27+ messages in thread
From: Zhu Zihao @ 2022-03-15 15:42 UTC (permalink / raw)
  To: 54261


[-- Attachment #1.1: Type: text/plain, Size: 33 bytes --]


Also update gtkmm and pangomm.


[-- Attachment #1.2: signature.asc --]
[-- Type: application/pgp-signature, Size: 255 bytes --]

[-- Attachment #2: 0001-gnu-pango-Add-version-1.50.4.patch --]
[-- Type: text/x-patch, Size: 1639 bytes --]

From bd53ac3a162c1f5b53363126c125d826a5cb6a6e Mon Sep 17 00:00:00 2001
From: Zhu Zihao <all_but_last@163.com>
Date: Sat, 5 Mar 2022 21:36:25 +0800
Subject: [PATCH 1/4] gnu: pango: Add version 1.50.4.

* gnu/packages/gtk.scm(pango-next): New variable.
---
 gnu/packages/gtk.scm | 17 +++++++++++++++++
 1 file changed, 17 insertions(+)

diff --git a/gnu/packages/gtk.scm b/gnu/packages/gtk.scm
index 29302051c1..bc7b388a88 100644
--- a/gnu/packages/gtk.scm
+++ b/gnu/packages/gtk.scm
@@ -29,6 +29,7 @@
 ;;; Copyright © 2021 Simon Streit <simon@netpanic.org>
 ;;; Copyright © 2021 Maxime Devos <maximedevos@telenet.be>
 ;;; Copyright © 2021 Wamm K. D. <jaft.r@outlook.com>
+;;; Copyright © 2022 Zhu Zihao <all_but_last@163.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -409,6 +410,22 @@ (define-public pango
     (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")
+    (version "1.50.4")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "mirror://gnome/sources/pango/"
+                                  (version-major+minor version) "/"
+                                  name "-" version ".tar.xz"))
+              (patches (search-patches "pango-skip-libthai-test.patch"))
+              (sha256
+               (base32
+                "0qn1a7ccs3p5vc6swbqm6hdzka879l0gp9220lq4bcf2gpl67bgl"))))))
+
 (define-public pango-1.42
   (package
    (inherit pango)
-- 
2.34.0


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #3: 0002-gnu-gtk-Update-to-4.6.1.patch --]
[-- Type: text/x-patch, Size: 5414 bytes --]

From 0c22cbd070d47b8c3b534caceb3eb05c8f7f6d41 Mon Sep 17 00:00:00 2001
From: Zhu Zihao <all_but_last@163.com>
Date: Sat, 5 Mar 2022 22:40:46 +0800
Subject: [PATCH 2/4] gnu: gtk: Update to 4.6.1.

* gnu/local.mk (dist_patch_DATA): Remove gtk-introspection-test.patch.
* gnu/packages/patches/gtk-introspection-test.patch: Remove.

* gnu/packages/gtk.scm (gtk): Update to 4.6.1.
[source]: Remove stale patch.
[arguments]<phases>: Add 'patch-rst2man' phase, correct the binary name of
rst2man to 'rst2man.py'
[inputs]: Add libjpeg-turbo, libpng, libtiff.
[native-inputs]: Add python-docutils.
[propagated-inputs]: Use pango-next.
---
 gnu/local.mk                                  |  1 -
 gnu/packages/gtk.scm                          | 17 +++++++++-----
 .../patches/gtk-introspection-test.patch      | 22 -------------------
 3 files changed, 12 insertions(+), 28 deletions(-)
 delete mode 100644 gnu/packages/patches/gtk-introspection-test.patch

diff --git a/gnu/local.mk b/gnu/local.mk
index c8026a1ec1..1e0bb0c00c 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -1244,7 +1244,6 @@ dist_patch_DATA =						\
   %D%/packages/patches/gtk3-respect-GUIX_GTK3_PATH.patch	\
   %D%/packages/patches/gtk3-respect-GUIX_GTK3_IM_MODULE_FILE.patch \
   %D%/packages/patches/gtk-doc-respect-xml-catalog.patch	\
-  %D%/packages/patches/gtk-introspection-test.patch		\
   %D%/packages/patches/gtk4-respect-GUIX_GTK4_PATH.patch    	\
   %D%/packages/patches/gtkglext-disable-disable-deprecated.patch \
   %D%/packages/patches/gtksourceview-2-add-default-directory.patch \
diff --git a/gnu/packages/gtk.scm b/gnu/packages/gtk.scm
index bc7b388a88..3d7706b9ee 100644
--- a/gnu/packages/gtk.scm
+++ b/gnu/packages/gtk.scm
@@ -1076,7 +1076,7 @@ (define-public gtk+
 (define-public gtk
   (package
     (name "gtk")
-    (version "4.4.1")
+    (version "4.6.1")
     (source
      (origin
        (method url-fetch)
@@ -1084,10 +1084,9 @@ (define-public gtk
                            (version-major+minor version)  "/"
                            name "-" version ".tar.xz"))
        (sha256
-        (base32 "1x6xlc063nqp7cg6py4kq1kpw9pkq49ifk5kki0brc667ncdmahg"))
+        (base32 "0pzcs24j67f90kjcp6apgn6rffynxksjm1m7d3an7kdv3k90hmfq"))
        (patches
-        (search-patches "gtk4-respect-GUIX_GTK4_PATH.patch"
-                        "gtk-introspection-test.patch"))))
+        (search-patches "gtk4-respect-GUIX_GTK4_PATH.patch"))))
     (build-system meson-build-system)
     (outputs '("out" "bin" "doc"))
     (arguments
@@ -1117,6 +1116,10 @@ (define-public gtk
          (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 'patch-rst2man
+           (lambda _
+             (substitute* "docs/reference/gtk/meson.build"
+               (("find_program\\('rst2man'") "find_program('rst2man.py'"))))
          (add-after 'unpack 'patch
            (lambda* (#:key inputs native-inputs outputs #:allow-other-keys)
              ;; Correct DTD resources of docbook.
@@ -1194,6 +1197,7 @@ (define-public gtk
        ("pkg-config" ,pkg-config)
        ("python-pygobject" ,python-pygobject)
        ;; These python modules are required for building documentation.
+       ("python-docutils" ,python-docutils)
        ("python-jinja2" ,python-jinja2)
        ("python-markdown" ,python-markdown)
        ("python-markupsafe" ,python-markupsafe)
@@ -1216,7 +1220,10 @@ (define-public gtk
            iso-codes
            json-glib
            libcloudproviders ;for cloud-providers support
+           libjpeg-turbo
+           libpng
            librsvg
+           libtiff
            python
            rest
            tracker))          ;for filechooser search support
@@ -1239,7 +1246,7 @@ (define-public gtk
        ("libxkbcommon" ,libxkbcommon)
        ("libxrandr" ,libxrandr)
        ("libxrender" ,libxrender)
-       ("pango" ,pango)
+       ("pango" ,pango-next)
        ("vulkan-headers" ,vulkan-headers)
        ("vulkan-loader" ,vulkan-loader) ;for vulkan graphics API support
        ("wayland" ,wayland)             ;for wayland display-backend
diff --git a/gnu/packages/patches/gtk-introspection-test.patch b/gnu/packages/patches/gtk-introspection-test.patch
deleted file mode 100644
index 570ea806a9..0000000000
--- a/gnu/packages/patches/gtk-introspection-test.patch
+++ /dev/null
@@ -1,22 +0,0 @@
-# Extend rather than stomp environment variables.
-# Upstream status: https://gitlab.gnome.org/GNOME/gtk/-/merge_requests/4268
-diff --git a/testsuite/introspection/meson.build b/testsuite/introspection/meson.build
-index 6202fb7446..b59191eb0f 100644
---- a/testsuite/introspection/meson.build
-+++ b/testsuite/introspection/meson.build
-@@ -1,9 +1,10 @@
-+env = environment()
-+env.prepend('GI_TYPELIB_PATH',
-+    join_paths(project_build_root, 'gtk'),
-+    gi_dep.get_pkgconfig_variable('typelibdir'))
-+env.prepend('LD_PRELOAD', join_paths(project_build_root, 'gtk', 'libgtk-4.so'))
- 
- test('api',
-      find_program('api.py', dirs: meson.current_source_dir()),
-      suite: ['introspection'],
--     env: [
--       'GI_TYPELIB_PATH=@0@/gtk:@1@'.format(project_build_root,
--          gi_dep.get_pkgconfig_variable('typelibdir')),
--       'LD_PRELOAD=@0@/gtk/libgtk-4.so'.format(project_build_root),
--     ])
-+     env: env)
-- 
2.34.0


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #4: 0003-gnu-pangomm-Update-to-2.50.0.patch --]
[-- Type: text/x-patch, Size: 1577 bytes --]

From 216abd161ce06d49f7586203281dcf1ba523a8af Mon Sep 17 00:00:00 2001
From: Zhu Zihao <all_but_last@163.com>
Date: Tue, 15 Mar 2022 22:39:43 +0800
Subject: [PATCH 3/4] gnu: pangomm: Update to 2.50.0.

* gnu/packages/gtk.scm (pangomm): Update to 2.50.0.

[propagated-inputs]: Replace 'pango' with 'pango-next'.
---
 gnu/packages/gtk.scm | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/gnu/packages/gtk.scm b/gnu/packages/gtk.scm
index 3d7706b9ee..2ee273229f 100644
--- a/gnu/packages/gtk.scm
+++ b/gnu/packages/gtk.scm
@@ -1627,7 +1627,7 @@ (define-public cairomm-1.14
 (define-public pangomm
   (package
     (name "pangomm")
-    (version "2.48.0")
+    (version "2.50.0")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnome/sources/" name "/"
@@ -1635,7 +1635,7 @@ (define-public pangomm
                                   name "-" version ".tar.xz"))
               (sha256
                (base32
-                "0y2vyp6azvhrii6rzs89kr08wg8z1p562awyr812131zqdsd83ly"))))
+                "0nrvvf1fyzlimh7rvxcblnrvn2l9rz8mpn2iwzlzr6kv05zafym2"))))
     (build-system meson-build-system)
     (outputs '("out" "doc"))
     (arguments
@@ -1664,7 +1664,7 @@ (define-public pangomm
        ("python" ,python)
        ("xsltproc" ,libxslt)))
     (propagated-inputs
-     (list cairo cairomm glibmm pango))
+     (list cairo cairomm glibmm pango-next))
     (home-page "https://pango.gnome.org//")
     (synopsis "C++ interface to the Pango text rendering library")
     (description
-- 
2.34.0


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #5: 0004-gnu-gtkmm-Update-to-4.6.0.patch --]
[-- Type: text/x-patch, Size: 1102 bytes --]

From dc4aabc7831c00526f0b2b2c3e69cab4aa5f3459 Mon Sep 17 00:00:00 2001
From: Zhu Zihao <all_but_last@163.com>
Date: Tue, 15 Mar 2022 22:40:27 +0800
Subject: [PATCH 4/4] gnu: gtkmm: Update to 4.6.0.

* gnu/packages/gtk.scm (gtkmm): Update to 4.6.0.
---
 gnu/packages/gtk.scm | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/gnu/packages/gtk.scm b/gnu/packages/gtk.scm
index 2ee273229f..75d4120e7e 100644
--- a/gnu/packages/gtk.scm
+++ b/gnu/packages/gtk.scm
@@ -1760,7 +1760,7 @@ (define-public atkmm-2.28
 (define-public gtkmm
   (package
     (name "gtkmm")
-    (version "4.4.0")
+    (version "4.6.0")
     (source
      (origin
        (method url-fetch)
@@ -1769,7 +1769,7 @@ (define-public gtkmm
                        (version-major+minor version)  "/"
                        name "-" version ".tar.xz"))
        (sha256
-        (base32 "1nhdf1s437k41af6frbqw2sky46qci0hgkg9h86a9rlnc0r69d1f"))))
+        (base32 "07sch42iavk5fw3r9x5m0kb2l4xg1ch3vn85mksiwmybjf8a0lqk"))))
     (build-system meson-build-system)
     (outputs '("out" "doc"))
     (arguments
-- 
2.34.0


[-- Attachment #6: Type: text/plain, Size: 100 bytes --]


-- 
Retrieve my PGP public key:

  gpg --recv-keys D47A9C8B2AE3905B563D9135BE42B352A9F6821F

Zihao

^ permalink raw reply related	[flat|nested] 27+ messages in thread

* [bug#54261] [PATCH]: Update GTK to 4.6.1.
  2022-03-15 15:42       ` Zhu Zihao
@ 2022-03-18 22:48         ` Ludovic Courtès
  2022-03-19  3:00           ` Zhu Zihao
  2022-03-21  1:17           ` Zhu Zihao
  0 siblings, 2 replies; 27+ messages in thread
From: Ludovic Courtès @ 2022-03-18 22:48 UTC (permalink / raw)
  To: Zhu Zihao; +Cc: 54261, Maxime Devos

Hi,

The patches all LGTM, but unfortunately they break fcitx5-gtk, which
pulls in both ‘pango’ and ‘pango-next’, leading to:

--8<---------------cut here---------------start------------->8---
-- Checking for module 'gtk+-3.0'
--   Found gtk+-3.0, version 3.24.30
-- Checking for module 'gdk-3.0'
--   Found gdk-3.0, version 3.24.30
-- Checking for module 'gdk-x11-3.0'
--   Found gdk-x11-3.0, version 3.24.30
-- Checking for module 'gtk4>=4.2'
--   Package 'gtk4' requires 'pango >= 1.50.0' but version of pango is 1.48.10
CMake Error at /gnu/store/zga679c4nldah9l8dhd5a4hdy820hcyf-cmake-minimal-3.21.4/share/cmake-3.21/Modules/FindPkgConfig.cmake:562 (message):
  A required package was not found
Call Stack (most recent call first):
  /gnu/store/zga679c4nldah9l8dhd5a4hdy820hcyf-cmake-minimal-3.21.4/share/cmake-3.21/Modules/FindPkgConfig.cmake:784 (_pkg_check_modules_internal)
  gtk4/CMakeLists.txt:10 (pkg_check_modules)
--8<---------------cut here---------------end--------------->8---

Solutions that come to mind:

  1. Disable the GTK 4 backend of ‘fcitx5-gtk’.

  2. Add ‘pango-next’ as an input of ‘fcitx5-gtk’, taking precedence
     over ‘pango’, at the risk of breaking the GTK+2 and GTK+3
     backends.

  3. There is no 3rd idea.

Thoughts?

Ludo’.




^ permalink raw reply	[flat|nested] 27+ messages in thread

* [bug#54261] [PATCH]: Update GTK to 4.6.1.
  2022-03-18 22:48         ` [bug#54261] [PATCH]: Update GTK to 4.6.1 Ludovic Courtès
@ 2022-03-19  3:00           ` Zhu Zihao
  2022-03-21  1:17           ` Zhu Zihao
  1 sibling, 0 replies; 27+ messages in thread
From: Zhu Zihao @ 2022-03-19  3:00 UTC (permalink / raw)
  To: Ludovic Courtès; +Cc: 54261, Maxime Devos

[-- Attachment #1: Type: text/plain, Size: 334 bytes --]


Ludovic Courtès <ludo@gnu.org> writes:


>   3. There is no 3rd idea.
>
> Thoughts?
>
> Ludo’.

3. I'll reconsider your proposal in recent fcitx5-gtk update that split
the gtk4 backend into a separated package.

-- 
Retrieve my PGP public key:

  gpg --recv-keys D47A9C8B2AE3905B563D9135BE42B352A9F6821F

Zihao

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 255 bytes --]

^ permalink raw reply	[flat|nested] 27+ messages in thread

* [bug#54261] [PATCH]: Update GTK to 4.6.1.
  2022-03-18 22:48         ` [bug#54261] [PATCH]: Update GTK to 4.6.1 Ludovic Courtès
  2022-03-19  3:00           ` Zhu Zihao
@ 2022-03-21  1:17           ` Zhu Zihao
  2022-03-27  3:04             ` Zhu Zihao
  2022-03-29 13:34             ` Ludovic Courtès
  1 sibling, 2 replies; 27+ messages in thread
From: Zhu Zihao @ 2022-03-21  1:17 UTC (permalink / raw)
  To: Ludovic Courtès; +Cc: 54261, Maxime Devos


[-- Attachment #1.1: Type: text/plain, Size: 112 bytes --]


Here is a draft patch, it now works. But some part may need polish.
Can you give me some suggestions? Thanks.


[-- Attachment #1.2: signature.asc --]
[-- Type: application/pgp-signature, Size: 255 bytes --]

[-- Attachment #2: 0001-gnu-pango-Add-version-1.50.4.patch --]
[-- Type: text/x-patch, Size: 1639 bytes --]

From bd53ac3a162c1f5b53363126c125d826a5cb6a6e Mon Sep 17 00:00:00 2001
From: Zhu Zihao <all_but_last@163.com>
Date: Sat, 5 Mar 2022 21:36:25 +0800
Subject: [PATCH 1/6] gnu: pango: Add version 1.50.4.

* gnu/packages/gtk.scm(pango-next): New variable.
---
 gnu/packages/gtk.scm | 17 +++++++++++++++++
 1 file changed, 17 insertions(+)

diff --git a/gnu/packages/gtk.scm b/gnu/packages/gtk.scm
index 29302051c1..bc7b388a88 100644
--- a/gnu/packages/gtk.scm
+++ b/gnu/packages/gtk.scm
@@ -29,6 +29,7 @@
 ;;; Copyright © 2021 Simon Streit <simon@netpanic.org>
 ;;; Copyright © 2021 Maxime Devos <maximedevos@telenet.be>
 ;;; Copyright © 2021 Wamm K. D. <jaft.r@outlook.com>
+;;; Copyright © 2022 Zhu Zihao <all_but_last@163.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -409,6 +410,22 @@ (define-public pango
     (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")
+    (version "1.50.4")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "mirror://gnome/sources/pango/"
+                                  (version-major+minor version) "/"
+                                  name "-" version ".tar.xz"))
+              (patches (search-patches "pango-skip-libthai-test.patch"))
+              (sha256
+               (base32
+                "0qn1a7ccs3p5vc6swbqm6hdzka879l0gp9220lq4bcf2gpl67bgl"))))))
+
 (define-public pango-1.42
   (package
    (inherit pango)
-- 
2.34.0


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #3: 0002-gnu-gtk-Update-to-4.6.1.patch --]
[-- Type: text/x-patch, Size: 5414 bytes --]

From 0c22cbd070d47b8c3b534caceb3eb05c8f7f6d41 Mon Sep 17 00:00:00 2001
From: Zhu Zihao <all_but_last@163.com>
Date: Sat, 5 Mar 2022 22:40:46 +0800
Subject: [PATCH 2/6] gnu: gtk: Update to 4.6.1.

* gnu/local.mk (dist_patch_DATA): Remove gtk-introspection-test.patch.
* gnu/packages/patches/gtk-introspection-test.patch: Remove.

* gnu/packages/gtk.scm (gtk): Update to 4.6.1.
[source]: Remove stale patch.
[arguments]<phases>: Add 'patch-rst2man' phase, correct the binary name of
rst2man to 'rst2man.py'
[inputs]: Add libjpeg-turbo, libpng, libtiff.
[native-inputs]: Add python-docutils.
[propagated-inputs]: Use pango-next.
---
 gnu/local.mk                                  |  1 -
 gnu/packages/gtk.scm                          | 17 +++++++++-----
 .../patches/gtk-introspection-test.patch      | 22 -------------------
 3 files changed, 12 insertions(+), 28 deletions(-)
 delete mode 100644 gnu/packages/patches/gtk-introspection-test.patch

diff --git a/gnu/local.mk b/gnu/local.mk
index c8026a1ec1..1e0bb0c00c 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -1244,7 +1244,6 @@ dist_patch_DATA =						\
   %D%/packages/patches/gtk3-respect-GUIX_GTK3_PATH.patch	\
   %D%/packages/patches/gtk3-respect-GUIX_GTK3_IM_MODULE_FILE.patch \
   %D%/packages/patches/gtk-doc-respect-xml-catalog.patch	\
-  %D%/packages/patches/gtk-introspection-test.patch		\
   %D%/packages/patches/gtk4-respect-GUIX_GTK4_PATH.patch    	\
   %D%/packages/patches/gtkglext-disable-disable-deprecated.patch \
   %D%/packages/patches/gtksourceview-2-add-default-directory.patch \
diff --git a/gnu/packages/gtk.scm b/gnu/packages/gtk.scm
index bc7b388a88..3d7706b9ee 100644
--- a/gnu/packages/gtk.scm
+++ b/gnu/packages/gtk.scm
@@ -1076,7 +1076,7 @@ (define-public gtk+
 (define-public gtk
   (package
     (name "gtk")
-    (version "4.4.1")
+    (version "4.6.1")
     (source
      (origin
        (method url-fetch)
@@ -1084,10 +1084,9 @@ (define-public gtk
                            (version-major+minor version)  "/"
                            name "-" version ".tar.xz"))
        (sha256
-        (base32 "1x6xlc063nqp7cg6py4kq1kpw9pkq49ifk5kki0brc667ncdmahg"))
+        (base32 "0pzcs24j67f90kjcp6apgn6rffynxksjm1m7d3an7kdv3k90hmfq"))
        (patches
-        (search-patches "gtk4-respect-GUIX_GTK4_PATH.patch"
-                        "gtk-introspection-test.patch"))))
+        (search-patches "gtk4-respect-GUIX_GTK4_PATH.patch"))))
     (build-system meson-build-system)
     (outputs '("out" "bin" "doc"))
     (arguments
@@ -1117,6 +1116,10 @@ (define-public gtk
          (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 'patch-rst2man
+           (lambda _
+             (substitute* "docs/reference/gtk/meson.build"
+               (("find_program\\('rst2man'") "find_program('rst2man.py'"))))
          (add-after 'unpack 'patch
            (lambda* (#:key inputs native-inputs outputs #:allow-other-keys)
              ;; Correct DTD resources of docbook.
@@ -1194,6 +1197,7 @@ (define-public gtk
        ("pkg-config" ,pkg-config)
        ("python-pygobject" ,python-pygobject)
        ;; These python modules are required for building documentation.
+       ("python-docutils" ,python-docutils)
        ("python-jinja2" ,python-jinja2)
        ("python-markdown" ,python-markdown)
        ("python-markupsafe" ,python-markupsafe)
@@ -1216,7 +1220,10 @@ (define-public gtk
            iso-codes
            json-glib
            libcloudproviders ;for cloud-providers support
+           libjpeg-turbo
+           libpng
            librsvg
+           libtiff
            python
            rest
            tracker))          ;for filechooser search support
@@ -1239,7 +1246,7 @@ (define-public gtk
        ("libxkbcommon" ,libxkbcommon)
        ("libxrandr" ,libxrandr)
        ("libxrender" ,libxrender)
-       ("pango" ,pango)
+       ("pango" ,pango-next)
        ("vulkan-headers" ,vulkan-headers)
        ("vulkan-loader" ,vulkan-loader) ;for vulkan graphics API support
        ("wayland" ,wayland)             ;for wayland display-backend
diff --git a/gnu/packages/patches/gtk-introspection-test.patch b/gnu/packages/patches/gtk-introspection-test.patch
deleted file mode 100644
index 570ea806a9..0000000000
--- a/gnu/packages/patches/gtk-introspection-test.patch
+++ /dev/null
@@ -1,22 +0,0 @@
-# Extend rather than stomp environment variables.
-# Upstream status: https://gitlab.gnome.org/GNOME/gtk/-/merge_requests/4268
-diff --git a/testsuite/introspection/meson.build b/testsuite/introspection/meson.build
-index 6202fb7446..b59191eb0f 100644
---- a/testsuite/introspection/meson.build
-+++ b/testsuite/introspection/meson.build
-@@ -1,9 +1,10 @@
-+env = environment()
-+env.prepend('GI_TYPELIB_PATH',
-+    join_paths(project_build_root, 'gtk'),
-+    gi_dep.get_pkgconfig_variable('typelibdir'))
-+env.prepend('LD_PRELOAD', join_paths(project_build_root, 'gtk', 'libgtk-4.so'))
- 
- test('api',
-      find_program('api.py', dirs: meson.current_source_dir()),
-      suite: ['introspection'],
--     env: [
--       'GI_TYPELIB_PATH=@0@/gtk:@1@'.format(project_build_root,
--          gi_dep.get_pkgconfig_variable('typelibdir')),
--       'LD_PRELOAD=@0@/gtk/libgtk-4.so'.format(project_build_root),
--     ])
-+     env: env)
-- 
2.34.0


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #4: 0003-gnu-pangomm-Update-to-2.50.0.patch --]
[-- Type: text/x-patch, Size: 1577 bytes --]

From 216abd161ce06d49f7586203281dcf1ba523a8af Mon Sep 17 00:00:00 2001
From: Zhu Zihao <all_but_last@163.com>
Date: Tue, 15 Mar 2022 22:39:43 +0800
Subject: [PATCH 3/6] gnu: pangomm: Update to 2.50.0.

* gnu/packages/gtk.scm (pangomm): Update to 2.50.0.

[propagated-inputs]: Replace 'pango' with 'pango-next'.
---
 gnu/packages/gtk.scm | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/gnu/packages/gtk.scm b/gnu/packages/gtk.scm
index 3d7706b9ee..2ee273229f 100644
--- a/gnu/packages/gtk.scm
+++ b/gnu/packages/gtk.scm
@@ -1627,7 +1627,7 @@ (define-public cairomm-1.14
 (define-public pangomm
   (package
     (name "pangomm")
-    (version "2.48.0")
+    (version "2.50.0")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnome/sources/" name "/"
@@ -1635,7 +1635,7 @@ (define-public pangomm
                                   name "-" version ".tar.xz"))
               (sha256
                (base32
-                "0y2vyp6azvhrii6rzs89kr08wg8z1p562awyr812131zqdsd83ly"))))
+                "0nrvvf1fyzlimh7rvxcblnrvn2l9rz8mpn2iwzlzr6kv05zafym2"))))
     (build-system meson-build-system)
     (outputs '("out" "doc"))
     (arguments
@@ -1664,7 +1664,7 @@ (define-public pangomm
        ("python" ,python)
        ("xsltproc" ,libxslt)))
     (propagated-inputs
-     (list cairo cairomm glibmm pango))
+     (list cairo cairomm glibmm pango-next))
     (home-page "https://pango.gnome.org//")
     (synopsis "C++ interface to the Pango text rendering library")
     (description
-- 
2.34.0


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #5: 0004-gnu-gtkmm-Update-to-4.6.0.patch --]
[-- Type: text/x-patch, Size: 1102 bytes --]

From dc4aabc7831c00526f0b2b2c3e69cab4aa5f3459 Mon Sep 17 00:00:00 2001
From: Zhu Zihao <all_but_last@163.com>
Date: Tue, 15 Mar 2022 22:40:27 +0800
Subject: [PATCH 4/6] gnu: gtkmm: Update to 4.6.0.

* gnu/packages/gtk.scm (gtkmm): Update to 4.6.0.
---
 gnu/packages/gtk.scm | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/gnu/packages/gtk.scm b/gnu/packages/gtk.scm
index 2ee273229f..75d4120e7e 100644
--- a/gnu/packages/gtk.scm
+++ b/gnu/packages/gtk.scm
@@ -1760,7 +1760,7 @@ (define-public atkmm-2.28
 (define-public gtkmm
   (package
     (name "gtkmm")
-    (version "4.4.0")
+    (version "4.6.0")
     (source
      (origin
        (method url-fetch)
@@ -1769,7 +1769,7 @@ (define-public gtkmm
                        (version-major+minor version)  "/"
                        name "-" version ".tar.xz"))
        (sha256
-        (base32 "1nhdf1s437k41af6frbqw2sky46qci0hgkg9h86a9rlnc0r69d1f"))))
+        (base32 "07sch42iavk5fw3r9x5m0kb2l4xg1ch3vn85mksiwmybjf8a0lqk"))))
     (build-system meson-build-system)
     (outputs '("out" "doc"))
     (arguments
-- 
2.34.0


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #6: 0005-gnu-fcitx5-gtk-Remove-GTK4-support.patch --]
[-- Type: text/x-patch, Size: 2728 bytes --]

From e1cc0e4054cc34320ed1ff8d35c64bc5db6b0e28 Mon Sep 17 00:00:00 2001
From: Zhu Zihao <all_but_last@163.com>
Date: Mon, 21 Mar 2022 09:11:10 +0800
Subject: [PATCH 5/6] gnu: fcitx5-gtk: Remove GTK4 support.

The GTK4 support will be separated and placed in a dedicated package.

* gnu/packages/fcitx5.scm (fcitx5-gtk)[arguments]: Disable GTK4 build.

<configure-flags>: Add "-DENABLE_GTK_IM_MODULE=OFF".

<phases>: In phase "patch-install-prefix", Remove GTK4 code.

[inputs]: Remove package gtk.

[outputs]: Remove output "gtk4".
---
 gnu/packages/fcitx5.scm | 15 ++++++---------
 1 file changed, 6 insertions(+), 9 deletions(-)

diff --git a/gnu/packages/fcitx5.scm b/gnu/packages/fcitx5.scm
index 0be5e53863..2d5917f3c0 100644
--- a/gnu/packages/fcitx5.scm
+++ b/gnu/packages/fcitx5.scm
@@ -203,7 +203,8 @@ (define-public fcitx5-gtk
       #~(list (string-append "-DGOBJECT_INTROSPECTION_GIRDIR="
                              #$output "/share/gir-1.0")
               (string-append "-DGOBJECT_INTROSPECTION_TYPELIBDIR="
-                             #$output "/lib/girepository-1.0"))
+                             #$output "/lib/girepository-1.0")
+              "-DENABLE_GTK4_IM_MODULE=OFF")
       #:phases
       #~(modify-phases %standard-phases
           (add-before 'configure 'patch-install-prefix
@@ -216,11 +217,10 @@ (define (split-immodule gtk-version output)
                    (string-append output "/lib"))))
 
               (let ((gtk2 #$output:gtk2)
-                    (gtk3 #$output:gtk3)
-                    (gtk4 #$output:gtk4))
+                    (gtk3 #$output:gtk3))
                 (for-each split-immodule
-                          '("gtk2" "gtk3" "gtk4")
-                          (list gtk2 gtk3 gtk4))))))))
+                          '("gtk2" "gtk3")
+                          (list gtk2 gtk3))))))))
     (inputs
      (list fcitx5
            fmt
@@ -230,12 +230,11 @@ (define (split-immodule gtk-version output)
            gobject-introspection
            gtk+-2
            gtk+
-           gtk
            glib))
     (native-inputs
      (list extra-cmake-modules pkg-config
            `(,glib "bin")))           ;for glib-genmarshal
-    (outputs '("out" "gtk2" "gtk3" "gtk4"))
+    (outputs '("out" "gtk2" "gtk3"))
     (home-page "https://github.com/fcitx/fcitx5-gtk")
     (synopsis "GLib-based D-Bus client and GTK IM module for Fcitx 5")
     (description "Fcitx5-gtk provides the following functionality in the
@@ -248,8 +247,6 @@ (define (split-immodule gtk-version output)
 IM module for GTK+2 applications.
 @item gtk3
 IM module for GTK+3 applications.
-@item gtk4
-IM module for GTK4 applications.
 @end table")
     (license license:lgpl2.1+)))
 
-- 
2.34.0


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #7: 0006-gnu-Add-fcitx5-gtk4.patch --]
[-- Type: text/x-patch, Size: 2502 bytes --]

From 84da7d385c7759fbf9defdfa5e573bfe57c00c4b Mon Sep 17 00:00:00 2001
From: Zhu Zihao <all_but_last@163.com>
Date: Mon, 21 Mar 2022 09:16:38 +0800
Subject: [PATCH 6/6] gnu: Add fcitx5-gtk4.

* gnu/packages/fcitx5.scm (fcitx5-gtk4): New variable.
---
 gnu/packages/fcitx5.scm | 42 +++++++++++++++++++++++++++++++++++++++++
 1 file changed, 42 insertions(+)

diff --git a/gnu/packages/fcitx5.scm b/gnu/packages/fcitx5.scm
index 2d5917f3c0..be46a5036c 100644
--- a/gnu/packages/fcitx5.scm
+++ b/gnu/packages/fcitx5.scm
@@ -250,6 +250,48 @@ (define (split-immodule gtk-version output)
 @end table")
     (license license:lgpl2.1+)))
 
+;; XXX: This package is separated from fcitx5-gtk for following reasons.
+;; 1. GTK4 has a lot more dependencies, some of which maybe unavailable on
+;;    platforms other than x86_64. See <https://issues.guix.gnu.org/53648>.
+;; 2. GTK4 now propagates pango@1.50, it will conflict with GTK3 and GTK2
+;;    (propagates pango@1.48) if they're all in the inputs of same package.
+;;    See <https://issues.guix.gnu.org/54261>.
+(define-public fcitx5-gtk4
+  (package
+    (inherit fcitx5-gtk)
+    (name "fcitx5-gtk4")
+    (arguments
+     (list
+      #:tests? #f                       ;No test
+      #:configure-flags
+      #~(list (string-append "-DCMAKE_CXX_FLAGS=-I"
+                             #$(this-package-input "fcitx5-gtk")
+                             "/include/Fcitx5/GClient"))
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-before 'configure 'fix-gclient
+            (lambda* (#:key inputs #:allow-other-keys)
+              (define gclient
+                (search-input-file inputs "lib/libFcitx5GClient.so"))
+              ;; Force cmake search libFcitx5GClient.so in library search
+              ;; path instead of compiling again.
+              (substitute* "gtk4/CMakeLists.txt"
+                (("Fcitx5::GClient")
+                 gclient))))
+          (add-before 'build 'enter-gtk4-subdirectory
+            (lambda _
+              (chdir "gtk4")))
+          (add-after 'install 'leave-gtk4-subdirectory
+            (lambda _
+              (chdir ".."))))))
+    (inputs
+     (modify-inputs (package-inputs fcitx5-gtk)
+       (delete "gtk+")
+       (prepend fcitx5-gtk gtk)))
+    (outputs '("out"))
+    (synopsis "GTK4 IM module for Fcitx 5")
+    (description "Fcitx5-gtk4 provides IM module for GTK4 applications.")))
+
 (define-public fcitx5-qt
   (package
     (name "fcitx5-qt")
-- 
2.34.0


[-- Attachment #8: Type: text/plain, Size: 100 bytes --]


-- 
Retrieve my PGP public key:

  gpg --recv-keys D47A9C8B2AE3905B563D9135BE42B352A9F6821F

Zihao

^ permalink raw reply related	[flat|nested] 27+ messages in thread

* [bug#54261] [PATCH]: Update GTK to 4.6.1.
  2022-03-21  1:17           ` Zhu Zihao
@ 2022-03-27  3:04             ` Zhu Zihao
  2022-03-27  7:38               ` Liliana Marie Prikler
  2022-03-29 13:34             ` Ludovic Courtès
  1 sibling, 1 reply; 27+ messages in thread
From: Zhu Zihao @ 2022-03-27  3:04 UTC (permalink / raw)
  To: Ludovic Courtès; +Cc: 54261, Maxime Devos

[-- Attachment #1: Type: text/plain, Size: 130 bytes --]


ping. Any thoughts?

-- 
Retrieve my PGP public key:

  gpg --recv-keys D47A9C8B2AE3905B563D9135BE42B352A9F6821F

Zihao

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 255 bytes --]

^ permalink raw reply	[flat|nested] 27+ messages in thread

* [bug#54261] [PATCH]: Update GTK to 4.6.1.
  2022-03-27  3:04             ` Zhu Zihao
@ 2022-03-27  7:38               ` Liliana Marie Prikler
  2022-03-28 15:37                 ` Zhu Zihao
  0 siblings, 1 reply; 27+ messages in thread
From: Liliana Marie Prikler @ 2022-03-27  7:38 UTC (permalink / raw)
  To: Zhu Zihao, Ludovic Courtès; +Cc: 54261, Maxime Devos

Am Sonntag, dem 27.03.2022 um 11:04 +0800 schrieb Zhu Zihao:
> 
> ping. Any thoughts?
> 
As far as I can see, the main issue (GTK propagating pango-next) has
not been addressed, we're just piling on workarounds.  This is not the
way to go, as it will inevitably lead to more conflicts later on.

If possible, I'd suggest trying to build GTK against the old pango,
perhaps with a patch that can be removed on core-updates.  WDYT?




^ permalink raw reply	[flat|nested] 27+ messages in thread

* [bug#54261] [PATCH]: Update GTK to 4.6.1.
  2022-03-27  7:38               ` Liliana Marie Prikler
@ 2022-03-28 15:37                 ` Zhu Zihao
  2022-03-28 18:19                   ` Liliana Marie Prikler
  0 siblings, 1 reply; 27+ messages in thread
From: Zhu Zihao @ 2022-03-28 15:37 UTC (permalink / raw)
  To: Liliana Marie Prikler; +Cc: Ludovic Courtès, 54261, Maxime Devos


[-- Attachment #1.1: Type: text/plain, Size: 0 bytes --]



[-- Attachment #1.2: signature.asc --]
[-- Type: application/pgp-signature, Size: 255 bytes --]

[-- Attachment #2.1: Type: text/plain, Size: 912 bytes --]


Liliana Marie Prikler <liliana.prikler@gmail.com> writes:

> Am Sonntag, dem 27.03.2022 um 11:04 +0800 schrieb Zhu Zihao:
>> 
>> ping. Any thoughts?
>> 
> As far as I can see, the main issue (GTK propagating pango-next) has
> not been addressed, we're just piling on workarounds.  This is not the
> way to go, as it will inevitably lead to more conflicts later on.
>
> If possible, I'd suggest trying to build GTK against the old pango,
> perhaps with a patch that can be removed on core-updates.  WDYT?


Try build GTK 4.6.1 with Pango 1.48 is so tricky IMO. GTK 4.6.1 may use
the API introduced in pango 1.50 series. Currently my idea's make GTK+ 2
& 3 use Pango 1.50. It'll triggeer 3000+ builds, and we can put it to
stage branch (if we update pango, it will trigger 7000+ builds)

-- 
Retrieve my PGP public key:

  gpg --recv-keys D47A9C8B2AE3905B563D9135BE42B352A9F6821F

Zihao

[-- Attachment #2.2: signature.asc --]
[-- Type: application/pgp-signature, Size: 255 bytes --]

^ permalink raw reply	[flat|nested] 27+ messages in thread

* [bug#54261] [PATCH]: Update GTK to 4.6.1.
  2022-03-28 15:37                 ` Zhu Zihao
@ 2022-03-28 18:19                   ` Liliana Marie Prikler
  2022-03-29  5:56                     ` Zhu Zihao
  2022-03-29  6:01                     ` Zhu Zihao
  0 siblings, 2 replies; 27+ messages in thread
From: Liliana Marie Prikler @ 2022-03-28 18:19 UTC (permalink / raw)
  To: Zhu Zihao; +Cc: Ludovic Courtès, 54261, Maxime Devos

Am Montag, dem 28.03.2022 um 23:37 +0800 schrieb Zhu Zihao:
> 
> Liliana Marie Prikler <liliana.prikler@gmail.com> writes:
> 
> > Am Sonntag, dem 27.03.2022 um 11:04 +0800 schrieb Zhu Zihao:
> > > ping. Any thoughts?
> > As far as I can see, the main issue (GTK propagating pango-next)
> > has not been addressed, we're just piling on workarounds.  This is
> > not the way to go, as it will inevitably lead to more conflicts
> > later on.
> > 
> > If possible, I'd suggest trying to build GTK against the old pango,
> > perhaps with a patch that can be removed on core-updates.  WDYT?
> 
> 
> Try build GTK 4.6.1 with Pango 1.48 is so tricky IMO. GTK 4.6.1 may
> use the API introduced in pango 1.50 series. Currently my idea's make
> GTK+ 2 & 3 use Pango 1.50. It'll triggeer 3000+ builds, and we can
> put it to stage branch (if we update pango, it will trigger 7000+
> builds)
3k rebuilds is still beyond the limit of 1.5k and doesn't address the
main issue (that being propagation).





^ permalink raw reply	[flat|nested] 27+ messages in thread

* [bug#54261] [PATCH]: Update GTK to 4.6.1.
  2022-03-28 18:19                   ` Liliana Marie Prikler
@ 2022-03-29  5:56                     ` Zhu Zihao
  2022-03-29  6:01                     ` Zhu Zihao
  1 sibling, 0 replies; 27+ messages in thread
From: Zhu Zihao @ 2022-03-29  5:56 UTC (permalink / raw)
  To: Liliana Marie Prikler; +Cc: Ludovic Courtès, 54261, Maxime Devos

[-- Attachment #1: Type: text/plain, Size: 1291 bytes --]


Ok, just update pango and queue these commits into the core-updates
branch :( 

Liliana Marie Prikler <liliana.prikler@gmail.com> writes:

> Am Montag, dem 28.03.2022 um 23:37 +0800 schrieb Zhu Zihao:
>> 
>> Liliana Marie Prikler <liliana.prikler@gmail.com> writes:
>> 
>> > Am Sonntag, dem 27.03.2022 um 11:04 +0800 schrieb Zhu Zihao:
>> > > ping. Any thoughts?
>> > As far as I can see, the main issue (GTK propagating pango-next)
>> > has not been addressed, we're just piling on workarounds.  This is
>> > not the way to go, as it will inevitably lead to more conflicts
>> > later on.
>> > 
>> > If possible, I'd suggest trying to build GTK against the old pango,
>> > perhaps with a patch that can be removed on core-updates.  WDYT?
>> 
>> 
>> Try build GTK 4.6.1 with Pango 1.48 is so tricky IMO. GTK 4.6.1 may
>> use the API introduced in pango 1.50 series. Currently my idea's make
>> GTK+ 2 & 3 use Pango 1.50. It'll triggeer 3000+ builds, and we can
>> put it to stage branch (if we update pango, it will trigger 7000+
>> builds)
> 3k rebuilds is still beyond the limit of 1.5k and doesn't address the
> main issue (that being propagation).


-- 
Retrieve my PGP public key:

  gpg --recv-keys D47A9C8B2AE3905B563D9135BE42B352A9F6821F

Zihao

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 255 bytes --]

^ permalink raw reply	[flat|nested] 27+ messages in thread

* [bug#54261] [PATCH]: Update GTK to 4.6.1.
  2022-03-28 18:19                   ` Liliana Marie Prikler
  2022-03-29  5:56                     ` Zhu Zihao
@ 2022-03-29  6:01                     ` Zhu Zihao
  2022-03-30 19:56                       ` Ludovic Courtès
  1 sibling, 1 reply; 27+ messages in thread
From: Zhu Zihao @ 2022-03-29  6:01 UTC (permalink / raw)
  To: Liliana Marie Prikler; +Cc: Ludovic Courtès, 54261

[-- Attachment #1: Type: text/plain, Size: 297 bytes --]

To Ludovic Courtès: 

If you think this hack to fcitx5-gtk is bad, I'd like to update to pango
and make these changes on core-updates.


Please tell me your ideas on it. Thanks a lot!
-- 
Retrieve my PGP public key:

  gpg --recv-keys D47A9C8B2AE3905B563D9135BE42B352A9F6821F

Zihao

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 255 bytes --]

^ permalink raw reply	[flat|nested] 27+ messages in thread

* [bug#54261] [PATCH]: Update GTK to 4.6.1.
  2022-03-21  1:17           ` Zhu Zihao
  2022-03-27  3:04             ` Zhu Zihao
@ 2022-03-29 13:34             ` Ludovic Courtès
  2022-03-30  3:45               ` Zhu Zihao
  1 sibling, 1 reply; 27+ messages in thread
From: Ludovic Courtès @ 2022-03-29 13:34 UTC (permalink / raw)
  To: Zhu Zihao; +Cc: 54261, Maxime Devos, Liliana Marie Prikler

Hi,

Sorry for the delay.

Zhu Zihao <all_but_last@163.com> skribis:

> From bd53ac3a162c1f5b53363126c125d826a5cb6a6e Mon Sep 17 00:00:00 2001
> From: Zhu Zihao <all_but_last@163.com>
> Date: Sat, 5 Mar 2022 21:36:25 +0800
> Subject: [PATCH 1/6] gnu: pango: Add version 1.50.4.
>
> * gnu/packages/gtk.scm(pango-next): New variable.

[...]

> From 0c22cbd070d47b8c3b534caceb3eb05c8f7f6d41 Mon Sep 17 00:00:00 2001
> From: Zhu Zihao <all_but_last@163.com>
> Date: Sat, 5 Mar 2022 22:40:46 +0800
> Subject: [PATCH 2/6] gnu: gtk: Update to 4.6.1.
>
> * gnu/local.mk (dist_patch_DATA): Remove gtk-introspection-test.patch.
> * gnu/packages/patches/gtk-introspection-test.patch: Remove.
>
> * gnu/packages/gtk.scm (gtk): Update to 4.6.1.
> [source]: Remove stale patch.
> [arguments]<phases>: Add 'patch-rst2man' phase, correct the binary name of
> rst2man to 'rst2man.py'
> [inputs]: Add libjpeg-turbo, libpng, libtiff.
> [native-inputs]: Add python-docutils.
> [propagated-inputs]: Use pango-next.

[...]

> From 216abd161ce06d49f7586203281dcf1ba523a8af Mon Sep 17 00:00:00 2001
> From: Zhu Zihao <all_but_last@163.com>
> Date: Tue, 15 Mar 2022 22:39:43 +0800
> Subject: [PATCH 3/6] gnu: pangomm: Update to 2.50.0.
>
> * gnu/packages/gtk.scm (pangomm): Update to 2.50.0.
>
> [propagated-inputs]: Replace 'pango' with 'pango-next'.

Only Ardour and gtkmm depend on it; are they find after this change?

> From dc4aabc7831c00526f0b2b2c3e69cab4aa5f3459 Mon Sep 17 00:00:00 2001
> From: Zhu Zihao <all_but_last@163.com>
> Date: Tue, 15 Mar 2022 22:40:27 +0800
> Subject: [PATCH 4/6] gnu: gtkmm: Update to 4.6.0.
>
> * gnu/packages/gtk.scm (gtkmm): Update to 4.6.0.

If pangomm and gtkmm are meant to be updated in lockstep, you can merge
patches #3 and #4.

> From e1cc0e4054cc34320ed1ff8d35c64bc5db6b0e28 Mon Sep 17 00:00:00 2001
> From: Zhu Zihao <all_but_last@163.com>
> Date: Mon, 21 Mar 2022 09:11:10 +0800
> Subject: [PATCH 5/6] gnu: fcitx5-gtk: Remove GTK4 support.
>
> The GTK4 support will be separated and placed in a dedicated package.
>
> * gnu/packages/fcitx5.scm (fcitx5-gtk)[arguments]: Disable GTK4 build.
>
> <configure-flags>: Add "-DENABLE_GTK_IM_MODULE=OFF".
>
> <phases>: In phase "patch-install-prefix", Remove GTK4 code.
>
> [inputs]: Remove package gtk.
>
> [outputs]: Remove output "gtk4".

Likewise, this one can be merged with the “gtk” package update since
otherwise it would be left temporarily broken.

(Nitpick: no need to leave empty lines like this in the commit log.)

> From 84da7d385c7759fbf9defdfa5e573bfe57c00c4b Mon Sep 17 00:00:00 2001
> From: Zhu Zihao <all_but_last@163.com>
> Date: Mon, 21 Mar 2022 09:16:38 +0800
> Subject: [PATCH 6/6] gnu: Add fcitx5-gtk4.
>
> * gnu/packages/fcitx5.scm (fcitx5-gtk4): New variable.

Sounds good to me.

Liliana suggests using the “old” Pango version, but my understanding is
that it’s not really feasible.  Thus, I think the approach above is the
way to go.

Could you send an updated patch taking the cosmetic suggestions above
into account?

Thanks!

Ludo’.




^ permalink raw reply	[flat|nested] 27+ messages in thread

* [bug#54261] [PATCH]: Update GTK to 4.6.1.
  2022-03-29 13:34             ` Ludovic Courtès
@ 2022-03-30  3:45               ` Zhu Zihao
  2022-04-01 15:54                 ` Ludovic Courtès
  0 siblings, 1 reply; 27+ messages in thread
From: Zhu Zihao @ 2022-03-30  3:45 UTC (permalink / raw)
  To: Ludovic Courtès; +Cc: 54261, Maxime Devos, Liliana Marie Prikler


[-- Attachment #1.1: Type: text/plain, Size: 449 bytes --]


Ludovic Courtès <ludo@gnu.org> writes:
>
> Only Ardour and gtkmm depend on it; are they find after this change?

I've tested ardour, it builds and runs successfully.

Ardour depends on gtkmm-2 (propagates pangomm-2.46) but also add pangomm
to the inputs. I don't know we need pangomm or not.

I also make some minor changes in these patches, Update gtkmm to 4.6.1
and remove atkmm from its propagated-inputs. GTK4 no longer use ATK.


[-- Attachment #1.2: signature.asc --]
[-- Type: application/pgp-signature, Size: 255 bytes --]

[-- Attachment #2: 0001-gnu-pango-1.50-Add-version-1.50.4.patch --]
[-- Type: text/x-patch, Size: 1644 bytes --]

From a9be73a1723810dbcec0c4caa3a9d6669494f6d9 Mon Sep 17 00:00:00 2001
From: Zhu Zihao <all_but_last@163.com>
Date: Sat, 5 Mar 2022 21:36:25 +0800
Subject: [PATCH 1/4] gnu: pango 1.50: Add version 1.50.4.

* gnu/packages/gtk.scm(pango-next): New variable.
---
 gnu/packages/gtk.scm | 17 +++++++++++++++++
 1 file changed, 17 insertions(+)

diff --git a/gnu/packages/gtk.scm b/gnu/packages/gtk.scm
index 29302051c1..bc7b388a88 100644
--- a/gnu/packages/gtk.scm
+++ b/gnu/packages/gtk.scm
@@ -29,6 +29,7 @@
 ;;; Copyright © 2021 Simon Streit <simon@netpanic.org>
 ;;; Copyright © 2021 Maxime Devos <maximedevos@telenet.be>
 ;;; Copyright © 2021 Wamm K. D. <jaft.r@outlook.com>
+;;; Copyright © 2022 Zhu Zihao <all_but_last@163.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -409,6 +410,22 @@ (define-public pango
     (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")
+    (version "1.50.4")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "mirror://gnome/sources/pango/"
+                                  (version-major+minor version) "/"
+                                  name "-" version ".tar.xz"))
+              (patches (search-patches "pango-skip-libthai-test.patch"))
+              (sha256
+               (base32
+                "0qn1a7ccs3p5vc6swbqm6hdzka879l0gp9220lq4bcf2gpl67bgl"))))))
+
 (define-public pango-1.42
   (package
    (inherit pango)
-- 
2.34.0


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #3: 0002-gnu-gtk-Update-to-4.6.1.patch --]
[-- Type: text/x-patch, Size: 7812 bytes --]

From 823fb5ae1d0cff0247baf6c4847555648c710e55 Mon Sep 17 00:00:00 2001
From: Zhu Zihao <all_but_last@163.com>
Date: Sat, 5 Mar 2022 22:40:46 +0800
Subject: [PATCH 2/4] gnu: gtk: Update to 4.6.1.

* gnu/local.mk (dist_patch_DATA): Remove gtk-introspection-test.patch.
* gnu/packages/patches/gtk-introspection-test.patch: Remove.
* gnu/packages/gtk.scm (gtk): Update to 4.6.1.
[source]: Remove stale patch.
[arguments]<phases>: Add 'patch-rst2man' phase, correct the binary name of
rst2man to 'rst2man.py'
[inputs]: Add libjpeg-turbo, libpng, libtiff.
[native-inputs]: Add python-docutils.
[propagated-inputs]: Use pango-next.
* gnu/packages/fcitx5.scm (fcitx5-gtk)[arguments]: Disable GTK4 build.
<configure-flags>: Add "-DENABLE_GTK_IM_MODULE=OFF".
<phases>: In phase "patch-install-prefix", Remove GTK4 code.
[inputs]: Remove package gtk.
[outputs]: Remove output "gtk4".
---
 gnu/local.mk                                  |  1 -
 gnu/packages/fcitx5.scm                       | 15 +++++--------
 gnu/packages/gtk.scm                          | 17 +++++++++-----
 .../patches/gtk-introspection-test.patch      | 22 -------------------
 4 files changed, 18 insertions(+), 37 deletions(-)
 delete mode 100644 gnu/packages/patches/gtk-introspection-test.patch

diff --git a/gnu/local.mk b/gnu/local.mk
index c8026a1ec1..1e0bb0c00c 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -1244,7 +1244,6 @@ dist_patch_DATA =						\
   %D%/packages/patches/gtk3-respect-GUIX_GTK3_PATH.patch	\
   %D%/packages/patches/gtk3-respect-GUIX_GTK3_IM_MODULE_FILE.patch \
   %D%/packages/patches/gtk-doc-respect-xml-catalog.patch	\
-  %D%/packages/patches/gtk-introspection-test.patch		\
   %D%/packages/patches/gtk4-respect-GUIX_GTK4_PATH.patch    	\
   %D%/packages/patches/gtkglext-disable-disable-deprecated.patch \
   %D%/packages/patches/gtksourceview-2-add-default-directory.patch \
diff --git a/gnu/packages/fcitx5.scm b/gnu/packages/fcitx5.scm
index 0be5e53863..2d5917f3c0 100644
--- a/gnu/packages/fcitx5.scm
+++ b/gnu/packages/fcitx5.scm
@@ -203,7 +203,8 @@ (define-public fcitx5-gtk
       #~(list (string-append "-DGOBJECT_INTROSPECTION_GIRDIR="
                              #$output "/share/gir-1.0")
               (string-append "-DGOBJECT_INTROSPECTION_TYPELIBDIR="
-                             #$output "/lib/girepository-1.0"))
+                             #$output "/lib/girepository-1.0")
+              "-DENABLE_GTK4_IM_MODULE=OFF")
       #:phases
       #~(modify-phases %standard-phases
           (add-before 'configure 'patch-install-prefix
@@ -216,11 +217,10 @@ (define (split-immodule gtk-version output)
                    (string-append output "/lib"))))
 
               (let ((gtk2 #$output:gtk2)
-                    (gtk3 #$output:gtk3)
-                    (gtk4 #$output:gtk4))
+                    (gtk3 #$output:gtk3))
                 (for-each split-immodule
-                          '("gtk2" "gtk3" "gtk4")
-                          (list gtk2 gtk3 gtk4))))))))
+                          '("gtk2" "gtk3")
+                          (list gtk2 gtk3))))))))
     (inputs
      (list fcitx5
            fmt
@@ -230,12 +230,11 @@ (define (split-immodule gtk-version output)
            gobject-introspection
            gtk+-2
            gtk+
-           gtk
            glib))
     (native-inputs
      (list extra-cmake-modules pkg-config
            `(,glib "bin")))           ;for glib-genmarshal
-    (outputs '("out" "gtk2" "gtk3" "gtk4"))
+    (outputs '("out" "gtk2" "gtk3"))
     (home-page "https://github.com/fcitx/fcitx5-gtk")
     (synopsis "GLib-based D-Bus client and GTK IM module for Fcitx 5")
     (description "Fcitx5-gtk provides the following functionality in the
@@ -248,8 +247,6 @@ (define (split-immodule gtk-version output)
 IM module for GTK+2 applications.
 @item gtk3
 IM module for GTK+3 applications.
-@item gtk4
-IM module for GTK4 applications.
 @end table")
     (license license:lgpl2.1+)))
 
diff --git a/gnu/packages/gtk.scm b/gnu/packages/gtk.scm
index bc7b388a88..3d7706b9ee 100644
--- a/gnu/packages/gtk.scm
+++ b/gnu/packages/gtk.scm
@@ -1076,7 +1076,7 @@ (define-public gtk+
 (define-public gtk
   (package
     (name "gtk")
-    (version "4.4.1")
+    (version "4.6.1")
     (source
      (origin
        (method url-fetch)
@@ -1084,10 +1084,9 @@ (define-public gtk
                            (version-major+minor version)  "/"
                            name "-" version ".tar.xz"))
        (sha256
-        (base32 "1x6xlc063nqp7cg6py4kq1kpw9pkq49ifk5kki0brc667ncdmahg"))
+        (base32 "0pzcs24j67f90kjcp6apgn6rffynxksjm1m7d3an7kdv3k90hmfq"))
        (patches
-        (search-patches "gtk4-respect-GUIX_GTK4_PATH.patch"
-                        "gtk-introspection-test.patch"))))
+        (search-patches "gtk4-respect-GUIX_GTK4_PATH.patch"))))
     (build-system meson-build-system)
     (outputs '("out" "bin" "doc"))
     (arguments
@@ -1117,6 +1116,10 @@ (define-public gtk
          (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 'patch-rst2man
+           (lambda _
+             (substitute* "docs/reference/gtk/meson.build"
+               (("find_program\\('rst2man'") "find_program('rst2man.py'"))))
          (add-after 'unpack 'patch
            (lambda* (#:key inputs native-inputs outputs #:allow-other-keys)
              ;; Correct DTD resources of docbook.
@@ -1194,6 +1197,7 @@ (define-public gtk
        ("pkg-config" ,pkg-config)
        ("python-pygobject" ,python-pygobject)
        ;; These python modules are required for building documentation.
+       ("python-docutils" ,python-docutils)
        ("python-jinja2" ,python-jinja2)
        ("python-markdown" ,python-markdown)
        ("python-markupsafe" ,python-markupsafe)
@@ -1216,7 +1220,10 @@ (define-public gtk
            iso-codes
            json-glib
            libcloudproviders ;for cloud-providers support
+           libjpeg-turbo
+           libpng
            librsvg
+           libtiff
            python
            rest
            tracker))          ;for filechooser search support
@@ -1239,7 +1246,7 @@ (define-public gtk
        ("libxkbcommon" ,libxkbcommon)
        ("libxrandr" ,libxrandr)
        ("libxrender" ,libxrender)
-       ("pango" ,pango)
+       ("pango" ,pango-next)
        ("vulkan-headers" ,vulkan-headers)
        ("vulkan-loader" ,vulkan-loader) ;for vulkan graphics API support
        ("wayland" ,wayland)             ;for wayland display-backend
diff --git a/gnu/packages/patches/gtk-introspection-test.patch b/gnu/packages/patches/gtk-introspection-test.patch
deleted file mode 100644
index 570ea806a9..0000000000
--- a/gnu/packages/patches/gtk-introspection-test.patch
+++ /dev/null
@@ -1,22 +0,0 @@
-# Extend rather than stomp environment variables.
-# Upstream status: https://gitlab.gnome.org/GNOME/gtk/-/merge_requests/4268
-diff --git a/testsuite/introspection/meson.build b/testsuite/introspection/meson.build
-index 6202fb7446..b59191eb0f 100644
---- a/testsuite/introspection/meson.build
-+++ b/testsuite/introspection/meson.build
-@@ -1,9 +1,10 @@
-+env = environment()
-+env.prepend('GI_TYPELIB_PATH',
-+    join_paths(project_build_root, 'gtk'),
-+    gi_dep.get_pkgconfig_variable('typelibdir'))
-+env.prepend('LD_PRELOAD', join_paths(project_build_root, 'gtk', 'libgtk-4.so'))
- 
- test('api',
-      find_program('api.py', dirs: meson.current_source_dir()),
-      suite: ['introspection'],
--     env: [
--       'GI_TYPELIB_PATH=@0@/gtk:@1@'.format(project_build_root,
--          gi_dep.get_pkgconfig_variable('typelibdir')),
--       'LD_PRELOAD=@0@/gtk/libgtk-4.so'.format(project_build_root),
--     ])
-+     env: env)
-- 
2.34.0


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #4: 0003-gnu-Add-fcitx5-gtk4.patch --]
[-- Type: text/x-patch, Size: 2502 bytes --]

From 62a640576ae1de9523fba593219fb50ac97b44c6 Mon Sep 17 00:00:00 2001
From: Zhu Zihao <all_but_last@163.com>
Date: Mon, 21 Mar 2022 09:16:38 +0800
Subject: [PATCH 3/4] gnu: Add fcitx5-gtk4.

* gnu/packages/fcitx5.scm (fcitx5-gtk4): New variable.
---
 gnu/packages/fcitx5.scm | 42 +++++++++++++++++++++++++++++++++++++++++
 1 file changed, 42 insertions(+)

diff --git a/gnu/packages/fcitx5.scm b/gnu/packages/fcitx5.scm
index 2d5917f3c0..be46a5036c 100644
--- a/gnu/packages/fcitx5.scm
+++ b/gnu/packages/fcitx5.scm
@@ -250,6 +250,48 @@ (define (split-immodule gtk-version output)
 @end table")
     (license license:lgpl2.1+)))
 
+;; XXX: This package is separated from fcitx5-gtk for following reasons.
+;; 1. GTK4 has a lot more dependencies, some of which maybe unavailable on
+;;    platforms other than x86_64. See <https://issues.guix.gnu.org/53648>.
+;; 2. GTK4 now propagates pango@1.50, it will conflict with GTK3 and GTK2
+;;    (propagates pango@1.48) if they're all in the inputs of same package.
+;;    See <https://issues.guix.gnu.org/54261>.
+(define-public fcitx5-gtk4
+  (package
+    (inherit fcitx5-gtk)
+    (name "fcitx5-gtk4")
+    (arguments
+     (list
+      #:tests? #f                       ;No test
+      #:configure-flags
+      #~(list (string-append "-DCMAKE_CXX_FLAGS=-I"
+                             #$(this-package-input "fcitx5-gtk")
+                             "/include/Fcitx5/GClient"))
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-before 'configure 'fix-gclient
+            (lambda* (#:key inputs #:allow-other-keys)
+              (define gclient
+                (search-input-file inputs "lib/libFcitx5GClient.so"))
+              ;; Force cmake search libFcitx5GClient.so in library search
+              ;; path instead of compiling again.
+              (substitute* "gtk4/CMakeLists.txt"
+                (("Fcitx5::GClient")
+                 gclient))))
+          (add-before 'build 'enter-gtk4-subdirectory
+            (lambda _
+              (chdir "gtk4")))
+          (add-after 'install 'leave-gtk4-subdirectory
+            (lambda _
+              (chdir ".."))))))
+    (inputs
+     (modify-inputs (package-inputs fcitx5-gtk)
+       (delete "gtk+")
+       (prepend fcitx5-gtk gtk)))
+    (outputs '("out"))
+    (synopsis "GTK4 IM module for Fcitx 5")
+    (description "Fcitx5-gtk4 provides IM module for GTK4 applications.")))
+
 (define-public fcitx5-qt
   (package
     (name "fcitx5-qt")
-- 
2.34.0


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #5: 0004-gnu-gtkmm-Update-to-4.6.1.patch --]
[-- Type: text/x-patch, Size: 2744 bytes --]

From 78044067d76596736eba95a49cb9ebc8aa6d5424 Mon Sep 17 00:00:00 2001
From: Zhu Zihao <all_but_last@163.com>
Date: Tue, 15 Mar 2022 22:40:27 +0800
Subject: [PATCH 4/4] gnu: gtkmm: Update to 4.6.1.

* gnu/packages/gtk.scm (gtkmm): Update to 4.6.1.
[propagated-inputs]: Remove atkmm because it's no longer needed.
* gnu/packages/gtk.scm (pangomm): Update to 2.50.0.
[propagated-inputs]: Replace 'pango' with 'pango-next'.
---
 gnu/packages/gtk.scm | 12 ++++++------
 1 file changed, 6 insertions(+), 6 deletions(-)

diff --git a/gnu/packages/gtk.scm b/gnu/packages/gtk.scm
index 3d7706b9ee..8ec14e7bff 100644
--- a/gnu/packages/gtk.scm
+++ b/gnu/packages/gtk.scm
@@ -1627,7 +1627,7 @@ (define-public cairomm-1.14
 (define-public pangomm
   (package
     (name "pangomm")
-    (version "2.48.0")
+    (version "2.50.0")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnome/sources/" name "/"
@@ -1635,7 +1635,7 @@ (define-public pangomm
                                   name "-" version ".tar.xz"))
               (sha256
                (base32
-                "0y2vyp6azvhrii6rzs89kr08wg8z1p562awyr812131zqdsd83ly"))))
+                "0nrvvf1fyzlimh7rvxcblnrvn2l9rz8mpn2iwzlzr6kv05zafym2"))))
     (build-system meson-build-system)
     (outputs '("out" "doc"))
     (arguments
@@ -1664,7 +1664,7 @@ (define-public pangomm
        ("python" ,python)
        ("xsltproc" ,libxslt)))
     (propagated-inputs
-     (list cairo cairomm glibmm pango))
+     (list cairo cairomm glibmm pango-next))
     (home-page "https://pango.gnome.org//")
     (synopsis "C++ interface to the Pango text rendering library")
     (description
@@ -1760,7 +1760,7 @@ (define-public atkmm-2.28
 (define-public gtkmm
   (package
     (name "gtkmm")
-    (version "4.4.0")
+    (version "4.6.1")
     (source
      (origin
        (method url-fetch)
@@ -1769,7 +1769,7 @@ (define-public gtkmm
                        (version-major+minor version)  "/"
                        name "-" version ".tar.xz"))
        (sha256
-        (base32 "1nhdf1s437k41af6frbqw2sky46qci0hgkg9h86a9rlnc0r69d1f"))))
+        (base32 "1q6iycd7jfbn6rp4sq6r7ndm96dc21inq8mq1d9xsky6kv5gwphd"))))
     (build-system meson-build-system)
     (outputs '("out" "doc"))
     (arguments
@@ -1809,7 +1809,7 @@ (define-public gtkmm
        ("xsltproc" ,libxslt)
        ("xorg-server" ,xorg-server-for-tests)))
     (propagated-inputs
-     (list atkmm cairomm glibmm gtk pangomm))
+     (list cairomm glibmm gtk pangomm))
     (synopsis "C++ Interfaces for GTK+ and GNOME")
     (description "GTKmm is the official C++ interface for the popular GUI
 library GTK+.  Highlights include typesafe callbacks, and a comprehensive set
-- 
2.34.0


[-- Attachment #6: Type: text/plain, Size: 101 bytes --]



-- 
Retrieve my PGP public key:

  gpg --recv-keys D47A9C8B2AE3905B563D9135BE42B352A9F6821F

Zihao

^ permalink raw reply related	[flat|nested] 27+ messages in thread

* [bug#54261] [PATCH]: Update GTK to 4.6.1.
  2022-03-29  6:01                     ` Zhu Zihao
@ 2022-03-30 19:56                       ` Ludovic Courtès
  2022-03-31  5:13                         ` Zhu Zihao
  0 siblings, 1 reply; 27+ messages in thread
From: Ludovic Courtès @ 2022-03-30 19:56 UTC (permalink / raw)
  To: Zhu Zihao; +Cc: 54261, Liliana Marie Prikler

Hi,

Zhu Zihao <all_but_last@163.com> skribis:

> To Ludovic Courtès: 
>
> If you think this hack to fcitx5-gtk is bad, I'd like to update to pango
> and make these changes on core-updates.

I think the fcitx5-gtk split is good; maybe it’s not idea, but it’s a
good middleground IMO.

Like I wrote, the patches LGTM for master, except that I’d suggest
merging the bits that go together:

  https://issues.guix.gnu.org/54261#20

Liliana suggests “doing the right thing”, which is to update the default
pango, but that would require delaying to ‘core-updates’.  Instead, I
think it’s okay to have it the way you propose in ‘master’.

I hope this clarifies my view!

Thanks,
Ludo’.




^ permalink raw reply	[flat|nested] 27+ messages in thread

* [bug#54261] [PATCH]: Update GTK to 4.6.1.
  2022-03-30 19:56                       ` Ludovic Courtès
@ 2022-03-31  5:13                         ` Zhu Zihao
  0 siblings, 0 replies; 27+ messages in thread
From: Zhu Zihao @ 2022-03-31  5:13 UTC (permalink / raw)
  To: Ludovic Courtès; +Cc: 54261, Liliana Marie Prikler

[-- Attachment #1: Type: text/plain, Size: 970 bytes --]



Done in https://issues.guix.gnu.org/54261#21.

Ludovic Courtès <ludo@gnu.org> writes:

> Hi,
>
> Zhu Zihao <all_but_last@163.com> skribis:
>
>> To Ludovic Courtès: 
>>
>> If you think this hack to fcitx5-gtk is bad, I'd like to update to pango
>> and make these changes on core-updates.
>
> I think the fcitx5-gtk split is good; maybe it’s not idea, but it’s a
> good middleground IMO.
>
> Like I wrote, the patches LGTM for master, except that I’d suggest
> merging the bits that go together:
>
>   https://issues.guix.gnu.org/54261#20
>
> Liliana suggests “doing the right thing”, which is to update the default
> pango, but that would require delaying to ‘core-updates’.  Instead, I
> think it’s okay to have it the way you propose in ‘master’.
>
> I hope this clarifies my view!
>
> Thanks,
> Ludo’.


-- 
Retrieve my PGP public key:

  gpg --recv-keys D47A9C8B2AE3905B563D9135BE42B352A9F6821F

Zihao

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 255 bytes --]

^ permalink raw reply	[flat|nested] 27+ messages in thread

* [bug#54261] [PATCH]: Update GTK to 4.6.1.
  2022-03-30  3:45               ` Zhu Zihao
@ 2022-04-01 15:54                 ` Ludovic Courtès
  2022-04-02  3:41                   ` Zhu Zihao
  0 siblings, 1 reply; 27+ messages in thread
From: Ludovic Courtès @ 2022-04-01 15:54 UTC (permalink / raw)
  To: Zhu Zihao; +Cc: 54261, Maxime Devos, Liliana Marie Prikler

Hi,

Zhu Zihao <all_but_last@163.com> skribis:

> From 62a640576ae1de9523fba593219fb50ac97b44c6 Mon Sep 17 00:00:00 2001
> From: Zhu Zihao <all_but_last@163.com>
> Date: Mon, 21 Mar 2022 09:16:38 +0800
> Subject: [PATCH 3/4] gnu: Add fcitx5-gtk4.
>
> * gnu/packages/fcitx5.scm (fcitx5-gtk4): New variable.
> ---
>  gnu/packages/fcitx5.scm | 42 +++++++++++++++++++++++++++++++++++++++++
>  1 file changed, 42 insertions(+)
>
> diff --git a/gnu/packages/fcitx5.scm b/gnu/packages/fcitx5.scm
> index 2d5917f3c0..be46a5036c 100644
> --- a/gnu/packages/fcitx5.scm
> +++ b/gnu/packages/fcitx5.scm
> @@ -250,6 +250,48 @@ (define (split-immodule gtk-version output)
>  @end table")
>      (license license:lgpl2.1+)))
>  
> +;; XXX: This package is separated from fcitx5-gtk for following reasons.
> +;; 1. GTK4 has a lot more dependencies, some of which maybe unavailable on
> +;;    platforms other than x86_64. See <https://issues.guix.gnu.org/53648>.
> +;; 2. GTK4 now propagates pango@1.50, it will conflict with GTK3 and GTK2
> +;;    (propagates pango@1.48) if they're all in the inputs of same package.
> +;;    See <https://issues.guix.gnu.org/54261>.
> +(define-public fcitx5-gtk4
> +  (package
> +    (inherit fcitx5-gtk)
> +    (name "fcitx5-gtk4")
> +    (arguments
> +     (list
> +      #:tests? #f                       ;No test
> +      #:configure-flags
> +      #~(list (string-append "-DCMAKE_CXX_FLAGS=-I"
> +                             #$(this-package-input "fcitx5-gtk")
> +                             "/include/Fcitx5/GClient"))

This one fails to build for me:

--8<---------------cut here---------------start------------->8---
-- Looking for shmat - found
-- Checking for module 'gtk+-2.0'
--   No package 'gtk+-2.0' found
CMake Error at /gnu/store/zga679c4nldah9l8dhd5a4hdy820hcyf-cmake-minimal-3.21.4/share/cmake-3.21/Modules/FindPkgConfig.cmake:562 (message):
  A required package was not found
Call Stack (most recent call first):
  /gnu/store/zga679c4nldah9l8dhd5a4hdy820hcyf-cmake-minimal-3.21.4/share/cmake-3.21/Modules/FindPkgConfig.cmake:784 (_pkg_check_modules_internal)
  gtk2/CMakeLists.txt:6 (pkg_check_modules)


-- Configuring incomplete, errors occurred!
See also "/tmp/guix-build-fcitx5-gtk4-5.0.9.drv-0/build/CMakeFiles/CMakeOutput.log".
error: in phase 'configure': uncaught exception:
%exception #<&invoke-error program: "cmake" arguments: ("../fcitx5-gtk-5.0.9" "-DCMAKE_BUILD_TYPE=RelWithDebInfo" "-DCMAKE_INSTALL_PREFIX=/gnu/store/5z0a2zrr19pmg4swzsb0jm5fwqh03x0y-fcitx5-gtk4-5.0.9" "-DCMAKE_INSTALL_LIBDIR=lib" "-DCMAKE_INSTALL_RPATH_USE_LINK_PATH=TRUE" "-DCMAKE_INSTALL_RPATH=/gnu/store/5z0a2zrr19pmg4swzsb0jm5fwqh03x0y-fcitx5-gtk4-5.0.9/lib" "-DCMAKE_VERBOSE_MAKEFILE=ON" "-DCMAKE_CXX_FLAGS=-I/gnu/store/fkq1pgfp1r43f2131f8yvx543n7gb7ww-fcitx5-gtk-5.0.9/include/Fcitx5/GClient") exit-status: 1 term-signal: #f stop-signal: #f> 
phase `configure' failed after 2.9 seconds
command "cmake" "../fcitx5-gtk-5.0.9" "-DCMAKE_BUILD_TYPE=RelWithDebInfo" "-DCMAKE_INSTALL_PREFIX=/gnu/store/5z0a2zrr19pmg4swzsb0jm5fwqh03x0y-fcitx5-gtk4-5.0.9" "-DCMAKE_INSTALL_LIBDIR=lib" "-DCMAKE_INSTALL_RPATH_USE_LINK_PATH=TRUE" "-DCMAKE_INSTALL_RPATH=/gnu/store/5z0a2zrr19pmg4swzsb0jm5fwqh03x0y-fcitx5-gtk4-5.0.9/lib" "-DCMAKE_VERBOSE_MAKEFILE=ON" "-DCMAKE_CXX_FLAGS=-I/gnu/store/fkq1pgfp1r43f2131f8yvx543n7gb7ww-fcitx5-gtk-5.0.9/include/Fcitx5/GClient" failed with status 1
builder for `/gnu/store/p9611ymj4mav45wi92fdyslb2p7854hl-fcitx5-gtk4-5.0.9.drv' failed with exit code 1
@ build-failed /gnu/store/p9611ymj4mav45wi92fdyslb2p7854hl-fcitx5-gtk4-5.0.9.drv - 1 builder for `/gnu/store/p9611ymj4mav45wi92fdyslb2p7854hl-fcitx5-gtk4-5.0.9.drv' failed with exit code 1
derivation '/gnu/store/p9611ymj4mav45wi92fdyslb2p7854hl-fcitx5-gtk4-5.0.9.drv' offloaded to 'localhost' failed: build of `/gnu/store/p9611ymj4mav45wi92fdyslb2p7854hl-fcitx5-gtk4-5.0.9.drv' failed
build of /gnu/store/p9611ymj4mav45wi92fdyslb2p7854hl-fcitx5-gtk4-5.0.9.drv failed
--8<---------------cut here---------------end--------------->8---

Could you take a look and send an updated patch?

Also, I find it surprising that ‘fcitx5-gtk4’ depends on ‘fcitx5-gtk’;
is it avoidable?

The rest LGTM, thanks!

Ludo’.




^ permalink raw reply	[flat|nested] 27+ messages in thread

* [bug#54261] [PATCH]: Update GTK to 4.6.1.
  2022-04-01 15:54                 ` Ludovic Courtès
@ 2022-04-02  3:41                   ` Zhu Zihao
  2022-04-04 20:12                     ` bug#54261: " Ludovic Courtès
  0 siblings, 1 reply; 27+ messages in thread
From: Zhu Zihao @ 2022-04-02  3:41 UTC (permalink / raw)
  To: Ludovic Courtès; +Cc: 54261, Maxime Devos, Liliana Marie Prikler


[-- Attachment #1.1: Type: text/plain, Size: 713 bytes --]


Ludovic Courtès <ludo@gnu.org> writes:
> This one fails to build for me:
>
> -- Looking for shmat - found
> -- Checking for module 'gtk+-2.0'
> --   No package 'gtk+-2.0' found

I forget to disable GTK2 & GTK3 for this package. Now add it.
> Also, I find it surprising that ‘fcitx5-gtk4’ depends on ‘fcitx5-gtk’;
> is it avoidable?

Because fcitx5-gtk4 use the Glib based D-Bus client. I'd prefer to reuse
existing one instead of build it again for fcitx5-gtk4.


BTW, How to remove gtk+ and gtk+-2 in same inputs via modify-inputs?

Do we need repeat (delete "gtk+") clause in the modify-inputs? If we
can't handle it without trick, IMO this is a fail of label-less style
input.


[-- Attachment #1.2: signature.asc --]
[-- Type: application/pgp-signature, Size: 255 bytes --]

[-- Attachment #2: 0001-gnu-pango-1.50-Add-version-1.50.4.patch --]
[-- Type: text/x-patch, Size: 1644 bytes --]

From a9be73a1723810dbcec0c4caa3a9d6669494f6d9 Mon Sep 17 00:00:00 2001
From: Zhu Zihao <all_but_last@163.com>
Date: Sat, 5 Mar 2022 21:36:25 +0800
Subject: [PATCH 1/4] gnu: pango 1.50: Add version 1.50.4.

* gnu/packages/gtk.scm(pango-next): New variable.
---
 gnu/packages/gtk.scm | 17 +++++++++++++++++
 1 file changed, 17 insertions(+)

diff --git a/gnu/packages/gtk.scm b/gnu/packages/gtk.scm
index 29302051c1..bc7b388a88 100644
--- a/gnu/packages/gtk.scm
+++ b/gnu/packages/gtk.scm
@@ -29,6 +29,7 @@
 ;;; Copyright © 2021 Simon Streit <simon@netpanic.org>
 ;;; Copyright © 2021 Maxime Devos <maximedevos@telenet.be>
 ;;; Copyright © 2021 Wamm K. D. <jaft.r@outlook.com>
+;;; Copyright © 2022 Zhu Zihao <all_but_last@163.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -409,6 +410,22 @@ (define-public pango
     (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")
+    (version "1.50.4")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "mirror://gnome/sources/pango/"
+                                  (version-major+minor version) "/"
+                                  name "-" version ".tar.xz"))
+              (patches (search-patches "pango-skip-libthai-test.patch"))
+              (sha256
+               (base32
+                "0qn1a7ccs3p5vc6swbqm6hdzka879l0gp9220lq4bcf2gpl67bgl"))))))
+
 (define-public pango-1.42
   (package
    (inherit pango)
-- 
2.34.0


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #3: 0002-gnu-gtk-Update-to-4.6.1.patch --]
[-- Type: text/x-patch, Size: 7812 bytes --]

From 823fb5ae1d0cff0247baf6c4847555648c710e55 Mon Sep 17 00:00:00 2001
From: Zhu Zihao <all_but_last@163.com>
Date: Sat, 5 Mar 2022 22:40:46 +0800
Subject: [PATCH 2/4] gnu: gtk: Update to 4.6.1.

* gnu/local.mk (dist_patch_DATA): Remove gtk-introspection-test.patch.
* gnu/packages/patches/gtk-introspection-test.patch: Remove.
* gnu/packages/gtk.scm (gtk): Update to 4.6.1.
[source]: Remove stale patch.
[arguments]<phases>: Add 'patch-rst2man' phase, correct the binary name of
rst2man to 'rst2man.py'
[inputs]: Add libjpeg-turbo, libpng, libtiff.
[native-inputs]: Add python-docutils.
[propagated-inputs]: Use pango-next.
* gnu/packages/fcitx5.scm (fcitx5-gtk)[arguments]: Disable GTK4 build.
<configure-flags>: Add "-DENABLE_GTK_IM_MODULE=OFF".
<phases>: In phase "patch-install-prefix", Remove GTK4 code.
[inputs]: Remove package gtk.
[outputs]: Remove output "gtk4".
---
 gnu/local.mk                                  |  1 -
 gnu/packages/fcitx5.scm                       | 15 +++++--------
 gnu/packages/gtk.scm                          | 17 +++++++++-----
 .../patches/gtk-introspection-test.patch      | 22 -------------------
 4 files changed, 18 insertions(+), 37 deletions(-)
 delete mode 100644 gnu/packages/patches/gtk-introspection-test.patch

diff --git a/gnu/local.mk b/gnu/local.mk
index c8026a1ec1..1e0bb0c00c 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -1244,7 +1244,6 @@ dist_patch_DATA =						\
   %D%/packages/patches/gtk3-respect-GUIX_GTK3_PATH.patch	\
   %D%/packages/patches/gtk3-respect-GUIX_GTK3_IM_MODULE_FILE.patch \
   %D%/packages/patches/gtk-doc-respect-xml-catalog.patch	\
-  %D%/packages/patches/gtk-introspection-test.patch		\
   %D%/packages/patches/gtk4-respect-GUIX_GTK4_PATH.patch    	\
   %D%/packages/patches/gtkglext-disable-disable-deprecated.patch \
   %D%/packages/patches/gtksourceview-2-add-default-directory.patch \
diff --git a/gnu/packages/fcitx5.scm b/gnu/packages/fcitx5.scm
index 0be5e53863..2d5917f3c0 100644
--- a/gnu/packages/fcitx5.scm
+++ b/gnu/packages/fcitx5.scm
@@ -203,7 +203,8 @@ (define-public fcitx5-gtk
       #~(list (string-append "-DGOBJECT_INTROSPECTION_GIRDIR="
                              #$output "/share/gir-1.0")
               (string-append "-DGOBJECT_INTROSPECTION_TYPELIBDIR="
-                             #$output "/lib/girepository-1.0"))
+                             #$output "/lib/girepository-1.0")
+              "-DENABLE_GTK4_IM_MODULE=OFF")
       #:phases
       #~(modify-phases %standard-phases
           (add-before 'configure 'patch-install-prefix
@@ -216,11 +217,10 @@ (define (split-immodule gtk-version output)
                    (string-append output "/lib"))))
 
               (let ((gtk2 #$output:gtk2)
-                    (gtk3 #$output:gtk3)
-                    (gtk4 #$output:gtk4))
+                    (gtk3 #$output:gtk3))
                 (for-each split-immodule
-                          '("gtk2" "gtk3" "gtk4")
-                          (list gtk2 gtk3 gtk4))))))))
+                          '("gtk2" "gtk3")
+                          (list gtk2 gtk3))))))))
     (inputs
      (list fcitx5
            fmt
@@ -230,12 +230,11 @@ (define (split-immodule gtk-version output)
            gobject-introspection
            gtk+-2
            gtk+
-           gtk
            glib))
     (native-inputs
      (list extra-cmake-modules pkg-config
            `(,glib "bin")))           ;for glib-genmarshal
-    (outputs '("out" "gtk2" "gtk3" "gtk4"))
+    (outputs '("out" "gtk2" "gtk3"))
     (home-page "https://github.com/fcitx/fcitx5-gtk")
     (synopsis "GLib-based D-Bus client and GTK IM module for Fcitx 5")
     (description "Fcitx5-gtk provides the following functionality in the
@@ -248,8 +247,6 @@ (define (split-immodule gtk-version output)
 IM module for GTK+2 applications.
 @item gtk3
 IM module for GTK+3 applications.
-@item gtk4
-IM module for GTK4 applications.
 @end table")
     (license license:lgpl2.1+)))
 
diff --git a/gnu/packages/gtk.scm b/gnu/packages/gtk.scm
index bc7b388a88..3d7706b9ee 100644
--- a/gnu/packages/gtk.scm
+++ b/gnu/packages/gtk.scm
@@ -1076,7 +1076,7 @@ (define-public gtk+
 (define-public gtk
   (package
     (name "gtk")
-    (version "4.4.1")
+    (version "4.6.1")
     (source
      (origin
        (method url-fetch)
@@ -1084,10 +1084,9 @@ (define-public gtk
                            (version-major+minor version)  "/"
                            name "-" version ".tar.xz"))
        (sha256
-        (base32 "1x6xlc063nqp7cg6py4kq1kpw9pkq49ifk5kki0brc667ncdmahg"))
+        (base32 "0pzcs24j67f90kjcp6apgn6rffynxksjm1m7d3an7kdv3k90hmfq"))
        (patches
-        (search-patches "gtk4-respect-GUIX_GTK4_PATH.patch"
-                        "gtk-introspection-test.patch"))))
+        (search-patches "gtk4-respect-GUIX_GTK4_PATH.patch"))))
     (build-system meson-build-system)
     (outputs '("out" "bin" "doc"))
     (arguments
@@ -1117,6 +1116,10 @@ (define-public gtk
          (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 'patch-rst2man
+           (lambda _
+             (substitute* "docs/reference/gtk/meson.build"
+               (("find_program\\('rst2man'") "find_program('rst2man.py'"))))
          (add-after 'unpack 'patch
            (lambda* (#:key inputs native-inputs outputs #:allow-other-keys)
              ;; Correct DTD resources of docbook.
@@ -1194,6 +1197,7 @@ (define-public gtk
        ("pkg-config" ,pkg-config)
        ("python-pygobject" ,python-pygobject)
        ;; These python modules are required for building documentation.
+       ("python-docutils" ,python-docutils)
        ("python-jinja2" ,python-jinja2)
        ("python-markdown" ,python-markdown)
        ("python-markupsafe" ,python-markupsafe)
@@ -1216,7 +1220,10 @@ (define-public gtk
            iso-codes
            json-glib
            libcloudproviders ;for cloud-providers support
+           libjpeg-turbo
+           libpng
            librsvg
+           libtiff
            python
            rest
            tracker))          ;for filechooser search support
@@ -1239,7 +1246,7 @@ (define-public gtk
        ("libxkbcommon" ,libxkbcommon)
        ("libxrandr" ,libxrandr)
        ("libxrender" ,libxrender)
-       ("pango" ,pango)
+       ("pango" ,pango-next)
        ("vulkan-headers" ,vulkan-headers)
        ("vulkan-loader" ,vulkan-loader) ;for vulkan graphics API support
        ("wayland" ,wayland)             ;for wayland display-backend
diff --git a/gnu/packages/patches/gtk-introspection-test.patch b/gnu/packages/patches/gtk-introspection-test.patch
deleted file mode 100644
index 570ea806a9..0000000000
--- a/gnu/packages/patches/gtk-introspection-test.patch
+++ /dev/null
@@ -1,22 +0,0 @@
-# Extend rather than stomp environment variables.
-# Upstream status: https://gitlab.gnome.org/GNOME/gtk/-/merge_requests/4268
-diff --git a/testsuite/introspection/meson.build b/testsuite/introspection/meson.build
-index 6202fb7446..b59191eb0f 100644
---- a/testsuite/introspection/meson.build
-+++ b/testsuite/introspection/meson.build
-@@ -1,9 +1,10 @@
-+env = environment()
-+env.prepend('GI_TYPELIB_PATH',
-+    join_paths(project_build_root, 'gtk'),
-+    gi_dep.get_pkgconfig_variable('typelibdir'))
-+env.prepend('LD_PRELOAD', join_paths(project_build_root, 'gtk', 'libgtk-4.so'))
- 
- test('api',
-      find_program('api.py', dirs: meson.current_source_dir()),
-      suite: ['introspection'],
--     env: [
--       'GI_TYPELIB_PATH=@0@/gtk:@1@'.format(project_build_root,
--          gi_dep.get_pkgconfig_variable('typelibdir')),
--       'LD_PRELOAD=@0@/gtk/libgtk-4.so'.format(project_build_root),
--     ])
-+     env: env)
-- 
2.34.0


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #4: 0003-gnu-Add-fcitx5-gtk4.patch --]
[-- Type: text/x-patch, Size: 2592 bytes --]

From b4318c10146a72d33dab4d6f9f49846a371a1745 Mon Sep 17 00:00:00 2001
From: Zhu Zihao <all_but_last@163.com>
Date: Mon, 21 Mar 2022 09:16:38 +0800
Subject: [PATCH 3/4] gnu: Add fcitx5-gtk4.

* gnu/packages/fcitx5.scm (fcitx5-gtk4): New variable.
---
 gnu/packages/fcitx5.scm | 44 +++++++++++++++++++++++++++++++++++++++++
 1 file changed, 44 insertions(+)

diff --git a/gnu/packages/fcitx5.scm b/gnu/packages/fcitx5.scm
index 2d5917f3c0..46b9936e67 100644
--- a/gnu/packages/fcitx5.scm
+++ b/gnu/packages/fcitx5.scm
@@ -250,6 +250,50 @@ (define (split-immodule gtk-version output)
 @end table")
     (license license:lgpl2.1+)))
 
+;; XXX: This package is separated from fcitx5-gtk for following reasons.
+;; 1. GTK4 has a lot more dependencies, some of which maybe unavailable on
+;;    platforms other than x86_64. See <https://issues.guix.gnu.org/53648>.
+;; 2. GTK4 now propagates pango@1.50, it will conflict with GTK3 and GTK2
+;;    (propagates pango@1.48) if they're all in the inputs of same package.
+;;    See <https://issues.guix.gnu.org/54261>.
+(define-public fcitx5-gtk4
+  (package
+    (inherit fcitx5-gtk)
+    (name "fcitx5-gtk4")
+    (arguments
+     (list
+      #:tests? #f                       ;No test
+      #:configure-flags
+      #~(list (string-append "-DCMAKE_CXX_FLAGS=-I"
+                             #$(this-package-input "fcitx5-gtk")
+                             "/include/Fcitx5/GClient")
+              "-DENABLE_GTK2_IM_MODULE=OFF"
+              "-DENABLE_GTK3_IM_MODULE=OFF")
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-before 'configure 'fix-gclient
+            (lambda* (#:key inputs #:allow-other-keys)
+              (define gclient
+                (search-input-file inputs "lib/libFcitx5GClient.so"))
+              ;; Force cmake search libFcitx5GClient.so in library search
+              ;; path instead of compiling again.
+              (substitute* "gtk4/CMakeLists.txt"
+                (("Fcitx5::GClient")
+                 gclient))))
+          (add-before 'build 'enter-gtk4-subdirectory
+            (lambda _
+              (chdir "gtk4")))
+          (add-after 'install 'leave-gtk4-subdirectory
+            (lambda _
+              (chdir ".."))))))
+    (inputs
+     (modify-inputs (package-inputs fcitx5-gtk)
+       (delete "gtk+")
+       (prepend fcitx5-gtk gtk)))
+    (outputs '("out"))
+    (synopsis "GTK4 IM module for Fcitx 5")
+    (description "Fcitx5-gtk4 provides IM module for GTK4 applications.")))
+
 (define-public fcitx5-qt
   (package
     (name "fcitx5-qt")
-- 
2.34.0


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #5: 0004-gnu-gtkmm-Update-to-4.6.1.patch --]
[-- Type: text/x-patch, Size: 2744 bytes --]

From 81ae5b2620d56d24ad1f38bd96d34b22407eb994 Mon Sep 17 00:00:00 2001
From: Zhu Zihao <all_but_last@163.com>
Date: Tue, 15 Mar 2022 22:40:27 +0800
Subject: [PATCH 4/4] gnu: gtkmm: Update to 4.6.1.

* gnu/packages/gtk.scm (gtkmm): Update to 4.6.1.
[propagated-inputs]: Remove atkmm because it's no longer needed.
* gnu/packages/gtk.scm (pangomm): Update to 2.50.0.
[propagated-inputs]: Replace 'pango' with 'pango-next'.
---
 gnu/packages/gtk.scm | 12 ++++++------
 1 file changed, 6 insertions(+), 6 deletions(-)

diff --git a/gnu/packages/gtk.scm b/gnu/packages/gtk.scm
index 3d7706b9ee..8ec14e7bff 100644
--- a/gnu/packages/gtk.scm
+++ b/gnu/packages/gtk.scm
@@ -1627,7 +1627,7 @@ (define-public cairomm-1.14
 (define-public pangomm
   (package
     (name "pangomm")
-    (version "2.48.0")
+    (version "2.50.0")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnome/sources/" name "/"
@@ -1635,7 +1635,7 @@ (define-public pangomm
                                   name "-" version ".tar.xz"))
               (sha256
                (base32
-                "0y2vyp6azvhrii6rzs89kr08wg8z1p562awyr812131zqdsd83ly"))))
+                "0nrvvf1fyzlimh7rvxcblnrvn2l9rz8mpn2iwzlzr6kv05zafym2"))))
     (build-system meson-build-system)
     (outputs '("out" "doc"))
     (arguments
@@ -1664,7 +1664,7 @@ (define-public pangomm
        ("python" ,python)
        ("xsltproc" ,libxslt)))
     (propagated-inputs
-     (list cairo cairomm glibmm pango))
+     (list cairo cairomm glibmm pango-next))
     (home-page "https://pango.gnome.org//")
     (synopsis "C++ interface to the Pango text rendering library")
     (description
@@ -1760,7 +1760,7 @@ (define-public atkmm-2.28
 (define-public gtkmm
   (package
     (name "gtkmm")
-    (version "4.4.0")
+    (version "4.6.1")
     (source
      (origin
        (method url-fetch)
@@ -1769,7 +1769,7 @@ (define-public gtkmm
                        (version-major+minor version)  "/"
                        name "-" version ".tar.xz"))
        (sha256
-        (base32 "1nhdf1s437k41af6frbqw2sky46qci0hgkg9h86a9rlnc0r69d1f"))))
+        (base32 "1q6iycd7jfbn6rp4sq6r7ndm96dc21inq8mq1d9xsky6kv5gwphd"))))
     (build-system meson-build-system)
     (outputs '("out" "doc"))
     (arguments
@@ -1809,7 +1809,7 @@ (define-public gtkmm
        ("xsltproc" ,libxslt)
        ("xorg-server" ,xorg-server-for-tests)))
     (propagated-inputs
-     (list atkmm cairomm glibmm gtk pangomm))
+     (list cairomm glibmm gtk pangomm))
     (synopsis "C++ Interfaces for GTK+ and GNOME")
     (description "GTKmm is the official C++ interface for the popular GUI
 library GTK+.  Highlights include typesafe callbacks, and a comprehensive set
-- 
2.34.0


[-- Attachment #6: Type: text/plain, Size: 100 bytes --]


-- 
Retrieve my PGP public key:

  gpg --recv-keys D47A9C8B2AE3905B563D9135BE42B352A9F6821F

Zihao

^ permalink raw reply related	[flat|nested] 27+ messages in thread

* bug#54261: [PATCH]: Update GTK to 4.6.1.
  2022-04-02  3:41                   ` Zhu Zihao
@ 2022-04-04 20:12                     ` Ludovic Courtès
  0 siblings, 0 replies; 27+ messages in thread
From: Ludovic Courtès @ 2022-04-04 20:12 UTC (permalink / raw)
  To: Zhu Zihao; +Cc: Maxime Devos, 54261-done, Liliana Marie Prikler

Hi,

Zhu Zihao <all_but_last@163.com> skribis:

[...]

>> Also, I find it surprising that ‘fcitx5-gtk4’ depends on ‘fcitx5-gtk’;
>> is it avoidable?
>
> Because fcitx5-gtk4 use the Glib based D-Bus client. I'd prefer to reuse
> existing one instead of build it again for fcitx5-gtk4.

OK.

>
> BTW, How to remove gtk+ and gtk+-2 in same inputs via modify-inputs?

The (delete "gtk+") clause removes all the inputs whose label is
“gtk+”—both GTK+ 3.x and 2.x in this case.

> Do we need repeat (delete "gtk+") clause in the modify-inputs?

No.

> If we can't handle it without trick, IMO this is a fail of label-less
> style input.

I must say I hadn’t thought about this situation, which is hopefully
quite rare (and questionable, even), but we can deal with it.

> From a9be73a1723810dbcec0c4caa3a9d6669494f6d9 Mon Sep 17 00:00:00 2001
> From: Zhu Zihao <all_but_last@163.com>
> Date: Sat, 5 Mar 2022 21:36:25 +0800
> Subject: [PATCH 1/4] gnu: pango 1.50: Add version 1.50.4.
>
> * gnu/packages/gtk.scm(pango-next): New variable.

[...]

> From 823fb5ae1d0cff0247baf6c4847555648c710e55 Mon Sep 17 00:00:00 2001
> From: Zhu Zihao <all_but_last@163.com>
> Date: Sat, 5 Mar 2022 22:40:46 +0800
> Subject: [PATCH 2/4] gnu: gtk: Update to 4.6.1.
>
> * gnu/local.mk (dist_patch_DATA): Remove gtk-introspection-test.patch.
> * gnu/packages/patches/gtk-introspection-test.patch: Remove.
> * gnu/packages/gtk.scm (gtk): Update to 4.6.1.
> [source]: Remove stale patch.
> [arguments]<phases>: Add 'patch-rst2man' phase, correct the binary name of
> rst2man to 'rst2man.py'
> [inputs]: Add libjpeg-turbo, libpng, libtiff.
> [native-inputs]: Add python-docutils.
> [propagated-inputs]: Use pango-next.
> * gnu/packages/fcitx5.scm (fcitx5-gtk)[arguments]: Disable GTK4 build.
> <configure-flags>: Add "-DENABLE_GTK_IM_MODULE=OFF".
> <phases>: In phase "patch-install-prefix", Remove GTK4 code.
> [inputs]: Remove package gtk.
> [outputs]: Remove output "gtk4".

[...]

> From b4318c10146a72d33dab4d6f9f49846a371a1745 Mon Sep 17 00:00:00 2001
> From: Zhu Zihao <all_but_last@163.com>
> Date: Mon, 21 Mar 2022 09:16:38 +0800
> Subject: [PATCH 3/4] gnu: Add fcitx5-gtk4.
>
> * gnu/packages/fcitx5.scm (fcitx5-gtk4): New variable.

[...]

> From 81ae5b2620d56d24ad1f38bd96d34b22407eb994 Mon Sep 17 00:00:00 2001
> From: Zhu Zihao <all_but_last@163.com>
> Date: Tue, 15 Mar 2022 22:40:27 +0800
> Subject: [PATCH 4/4] gnu: gtkmm: Update to 4.6.1.
>
> * gnu/packages/gtk.scm (gtkmm): Update to 4.6.1.
> [propagated-inputs]: Remove atkmm because it's no longer needed.
> * gnu/packages/gtk.scm (pangomm): Update to 2.50.0.
> [propagated-inputs]: Replace 'pango' with 'pango-next'.

Finally applied, thank you!

Ludo’.




^ permalink raw reply	[flat|nested] 27+ messages in thread

end of thread, other threads:[~2022-04-04 20:13 UTC | newest]

Thread overview: 27+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-03-05 15:00 [bug#54261] [PATCH]: Update GTK to 4.6.1 Zhu Zihao
     [not found] ` <handler.54261.B.164649346324787.ack@debbugs.gnu.org>
2022-03-05 15:55   ` [bug#54261] Acknowledgement ([PATCH]: Update GTK to 4.6.1.) Zhu Zihao
2022-03-11 15:15     ` Zhu Zihao
2022-03-11 15:59       ` Maxime Devos
2022-03-11 16:01       ` Maxime Devos
2022-03-12  2:38         ` Zhu Zihao
2022-03-12  9:17           ` Maxime Devos
2022-03-12  9:32           ` Maxime Devos
2022-03-12  9:40             ` Maxime Devos
2022-03-11 16:03       ` Maxime Devos
2022-03-15 15:42       ` Zhu Zihao
2022-03-18 22:48         ` [bug#54261] [PATCH]: Update GTK to 4.6.1 Ludovic Courtès
2022-03-19  3:00           ` Zhu Zihao
2022-03-21  1:17           ` Zhu Zihao
2022-03-27  3:04             ` Zhu Zihao
2022-03-27  7:38               ` Liliana Marie Prikler
2022-03-28 15:37                 ` Zhu Zihao
2022-03-28 18:19                   ` Liliana Marie Prikler
2022-03-29  5:56                     ` Zhu Zihao
2022-03-29  6:01                     ` Zhu Zihao
2022-03-30 19:56                       ` Ludovic Courtès
2022-03-31  5:13                         ` Zhu Zihao
2022-03-29 13:34             ` Ludovic Courtès
2022-03-30  3:45               ` Zhu Zihao
2022-04-01 15:54                 ` Ludovic Courtès
2022-04-02  3:41                   ` Zhu Zihao
2022-04-04 20:12                     ` bug#54261: " Ludovic Courtès

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/guix.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).