diff mbox series

[bug#54261] : Update GTK to 4.6.1.

Message ID 864k3syudv.fsf@163.com
State Accepted
Headers show
Series [bug#54261] : Update GTK to 4.6.1. | expand

Checks

Context Check Description
cbaines/comparison success View comparision
cbaines/git branch success View Git branch
cbaines/applying patch fail View Laminar job
cbaines/issue success View issue

Commit Message

Zhu Zihao March 21, 2022, 1:17 a.m. UTC
Here is a draft patch, it now works. But some part may need polish.
Can you give me some suggestions? Thanks.

Comments

Zhu Zihao March 27, 2022, 3:04 a.m. UTC | #1
ping. Any thoughts?
Liliana Marie Prikler March 27, 2022, 7:38 a.m. UTC | #2
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?
Zhu Zihao March 28, 2022, 3:37 p.m. UTC | #3
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)
Liliana Marie Prikler March 28, 2022, 6:19 p.m. UTC | #4
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).
Zhu Zihao March 29, 2022, 5:56 a.m. UTC | #5
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).
Zhu Zihao March 29, 2022, 6:01 a.m. UTC | #6
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!
Ludovic Courtès March 29, 2022, 1:34 p.m. UTC | #7
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’.
Ludovic Courtès March 30, 2022, 7:56 p.m. UTC | #8
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’.
Zhu Zihao March 31, 2022, 5:13 a.m. UTC | #9
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’.
diff mbox series

Patch

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