Package: guix-patches;
Reported by: Zhu Zihao <all_but_last <at> 163.com>
Date: Mon, 31 Jan 2022 06:55:02 UTC
Severity: normal
Tags: patch
Done: Ludovic Courtès <ludo <at> gnu.org>
Bug is archived. No further changes may be made.
Message #50 received at 53648 <at> debbugs.gnu.org (full text, mbox):
From: Zhu Zihao <all_but_last <at> 163.com> To: Maxime Devos <maximedevos <at> telenet.be> Cc: 53648 <at> debbugs.gnu.org Subject: Re: [bug#53648] [PATCH] gnu: fcitx5-gtk: Add GTK 4 support. Date: Sat, 12 Feb 2022 01:42:39 +0800
[Message part 1 (text/plain, inline)]
You can test it with # No immodule cache needed for GTK4 ./pre-inst-env guix shell fcitx5-gtk:gtk4 celluloid GUIX_GTK4_PATH=$GUIX_ENVIRONMENT/lib/gtk-4.0 celluloid
[signature.asc (application/pgp-signature, inline)]
[0001-gnu-fcitx5-gtk-Add-GTK-4-support.patch (text/x-patch, inline)]
From 0c23e8cbbfe8f0548b29176831a4358d41820159 Mon Sep 17 00:00:00 2001 From: Zhu Zihao <all_but_last <at> 163.com> Date: Mon, 31 Jan 2022 14:51:30 +0800 Subject: [PATCH 1/2] gnu: fcitx5-gtk: Add GTK 4 support. * gnu/packages/fcitx5.scm (fcitx5-gtk)[arguments]: <configure-flags>: Enable GTK 4 IM module. <phases>: In 'patch-install-prefix', patch the install prefix of GTK 4 IM module. [inputs]: Add GTK 4. [outputs]: Add 'gtk4'. --- gnu/packages/fcitx5.scm | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/gnu/packages/fcitx5.scm b/gnu/packages/fcitx5.scm index 92fc0ea171..123418cd4f 100644 --- a/gnu/packages/fcitx5.scm +++ b/gnu/packages/fcitx5.scm @@ -201,19 +201,23 @@ (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") - ;; TODO: Enable it when Guix has GTK4. - "-DENABLE_GTK4_IM_MODULE=Off") + %output "/lib/girepository-1.0")) #:phases (modify-phases %standard-phases (add-before 'configure 'patch-install-prefix (lambda* (#:key outputs #:allow-other-keys) (let ((out (assoc-ref outputs "out")) - (gtk2 (assoc-ref outputs "gtk2"))) + (gtk2 (assoc-ref outputs "gtk2")) + (gtk4 (assoc-ref outputs "gtk4"))) ;; Install GTK+ 2 input method module to its own output. (substitute* "gtk2/CMakeLists.txt" (("\\$\\{CMAKE_INSTALL_LIBDIR\\}") - (string-append gtk2 "/lib"))))))))) + (string-append gtk2 "/lib"))) + + ;; Install for GTK 4. + (substitute* "gtk4/CMakeLists.txt" + (("\\$\\{CMAKE_INSTALL_LIBDIR\\}") + (string-append gtk4 "/lib"))))))))) (inputs `(("fcitx5" ,fcitx5) ("fmt" ,fmt) @@ -221,6 +225,7 @@ (define-public fcitx5-gtk ("gobject-introspection" ,gobject-introspection) ("gtk2" ,gtk+-2) ("gtk3" ,gtk+) + ("gtk4" ,gtk) ("glib" ,glib) ("libx11" ,libx11) ("gettext" ,gettext-minimal))) @@ -228,7 +233,7 @@ (define-public fcitx5-gtk (list extra-cmake-modules pkg-config `(,glib "bin"))) ;for glib-genmarshal ;; TODO: Add "lib" output to reduce the closure size of "gtk2". - (outputs '("out" "gtk2")) + (outputs '("out" "gtk2" "gtk4")) (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 a Glib based D-Bus client and IM module -- 2.34.0
[0002-gnu-fcitx5-gtk-Split-IM-module-output-for-different-.patch (text/x-patch, inline)]
From 429e4569a03af76a7fbd2b56726f35a1b38bc0b9 Mon Sep 17 00:00:00 2001 From: Zhu Zihao <all_but_last <at> 163.com> Date: Mon, 7 Feb 2022 13:55:26 +0800 Subject: [PATCH 2/2] gnu: fcitx5-gtk: Split IM module output for different version of GTK. * gnu/packages/fcitx5.scm (fcitx5-gtk)[arguments]: Use G-Expression. <phases>: Split input method module into different outputs for GTK2, GTK3 and GTK4. Now default output only provides GLib client of Fcitx5. [inputs]: Use label-less style inputs. [outputs]: Add new "gtk3" output. [synopsis]: Fix typo. [description]: Describe the functionality of each output. --- gnu/packages/fcitx5.scm | 87 +++++++++++++++++++++++------------------ 1 file changed, 50 insertions(+), 37 deletions(-) diff --git a/gnu/packages/fcitx5.scm b/gnu/packages/fcitx5.scm index 123418cd4f..9e1ccdd3eb 100644 --- a/gnu/packages/fcitx5.scm +++ b/gnu/packages/fcitx5.scm @@ -1,5 +1,5 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2020 Zhu Zihao <all_but_last <at> 163.com> +;;; Copyright © 2020, 2022 Zhu Zihao <all_but_last <at> 163.com> ;;; Copyright © 2021 Tobias Geerinckx-Rice <me <at> tobias.gr> ;;; ;;; This file is part of GNU Guix. @@ -20,6 +20,7 @@ (define-module (gnu packages fcitx5) #:use-module (guix packages) #:use-module (guix download) + #:use-module (guix gexp) #:use-module (guix git-download) #:use-module (guix build-system cmake) #:use-module (guix build-system copy) @@ -196,48 +197,60 @@ (define-public fcitx5-gtk (base32 "07ip4sxf3q895pp7mivv2bdwcmqjnwrmv9pg99jk73cw9bgyq00n")))) (build-system cmake-build-system) (arguments - `(#:tests? #f ;No test - #:configure-flags - (list (string-append "-DGOBJECT_INTROSPECTION_GIRDIR=" - %output "/share/gir-1.0") - (string-append "-DGOBJECT_INTROSPECTION_TYPELIBDIR=" - %output "/lib/girepository-1.0")) - #:phases - (modify-phases %standard-phases - (add-before 'configure 'patch-install-prefix - (lambda* (#:key outputs #:allow-other-keys) - (let ((out (assoc-ref outputs "out")) - (gtk2 (assoc-ref outputs "gtk2")) - (gtk4 (assoc-ref outputs "gtk4"))) - ;; Install GTK+ 2 input method module to its own output. - (substitute* "gtk2/CMakeLists.txt" - (("\\$\\{CMAKE_INSTALL_LIBDIR\\}") - (string-append gtk2 "/lib"))) + (list + #:tests? #f ;No test + #:configure-flags + #~(list (string-append "-DGOBJECT_INTROSPECTION_GIRDIR=" + #$output "/share/gir-1.0") + (string-append "-DGOBJECT_INTROSPECTION_TYPELIBDIR=" + #$output "/lib/girepository-1.0")) + #:phases + #~(modify-phases %standard-phases + (add-before 'configure 'patch-install-prefix + (lambda _ + ;; Take care of different versions of GTK because this package + ;; provides IM module for GTK application to use input method. + (define (split-immodule gtk-version output) + (substitute* (string-append gtk-version "/CMakeLists.txt") + (("\\$\\{CMAKE_INSTALL_LIBDIR\\}") + (string-append output "/lib")))) - ;; Install for GTK 4. - (substitute* "gtk4/CMakeLists.txt" - (("\\$\\{CMAKE_INSTALL_LIBDIR\\}") - (string-append gtk4 "/lib"))))))))) + (let ((gtk2 #$output:gtk2) + (gtk3 #$output:gtk3) + (gtk4 #$output:gtk4)) + (for-each split-immodule + '("gtk2" "gtk3" "gtk4") + (list gtk2 gtk3 gtk4)))))))) (inputs - `(("fcitx5" ,fcitx5) - ("fmt" ,fmt) - ("libxkbcommon" ,libxkbcommon) - ("gobject-introspection" ,gobject-introspection) - ("gtk2" ,gtk+-2) - ("gtk3" ,gtk+) - ("gtk4" ,gtk) - ("glib" ,glib) - ("libx11" ,libx11) - ("gettext" ,gettext-minimal))) + (list fcitx5 + fmt + libx11 + libxkbcommon + gettext-minimal + gobject-introspection + gtk+-2 + gtk+ + gtk + glib)) (native-inputs (list extra-cmake-modules pkg-config `(,glib "bin"))) ;for glib-genmarshal - ;; TODO: Add "lib" output to reduce the closure size of "gtk2". - (outputs '("out" "gtk2" "gtk4")) + (outputs '("out" "gtk2" "gtk3" "gtk4")) (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 a Glib based D-Bus client and IM module -for GTK+2/GTK+3 application.") + (synopsis "GLib-based D-Bus client and GTK IM module for Fcitx 5") + (description "Fcitx5-gtk provides the following functionality in the +corresponding output: + +@table @code +@item out +GLib-based D-Bus client of Fcitx5. +@item gtk2 +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+))) (define-public fcitx5-qt -- 2.34.0
[Message part 5 (text/plain, inline)]
-- Retrieve my PGP public key: gpg --recv-keys D47A9C8B2AE3905B563D9135BE42B352A9F6821F Zihao
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.