Package: guix-patches;
Reported by: Zhu Zihao <all_but_last <at> 163.com>
Date: Sat, 28 Nov 2020 05:46:01 UTC
Severity: normal
Tags: patch
Done: 宋文武 <iyzsong <at> outlook.com>
Bug is archived. No further changes may be made.
View this message in rfc822 format
From: Peng Mei Yu <pengmeiyu <at> riseup.net> To: Zhu Zihao <all_but_last <at> 163.com> Cc: 44920 <at> debbugs.gnu.org Subject: [bug#44920] [PATCH]: Add fcitx5. Date: Thu, 03 Dec 2020 12:09:51 +0800
Hi Zhu Zihao, Great work. This patch series provides a long waited alternative to ibus. I prefer to use ibus as my input method editor, but still thank you for this work. Please see comments bellow. Zhu Zihao writes: > This is a series of patches, add fcitx5 and its build dependecies. > a qt5 and gtk2/3 plugin, chinese inputmethod addon and a material theme > > From cbe128e488078b3af8f7d1bdb4bf9dc9f12a2f0b Mon Sep 17 00:00:00 2001 > From: Zhu Zihao <all_but_last <at> 163.com> > Date: Sat, 28 Nov 2020 13:16:50 +0800 > Subject: [PATCH 1/9] gnu: Add xcb-imdkit. > > * gnu/packages/fcitx5.scm: New file. > (xcb-imdkit): New variable. These packages should be put into gnu/packages/fcitx.scm. > --- > gnu/packages/fcitx5.scm | 84 +++++++++++++++++++++++++++++++++++++++++ > 1 file changed, 84 insertions(+) > create mode 100644 gnu/packages/fcitx5.scm > > diff --git a/gnu/packages/fcitx5.scm b/gnu/packages/fcitx5.scm > new file mode 100644 > index 0000000000..171d545ed8 > --- /dev/null > +++ b/gnu/packages/fcitx5.scm > @@ -0,0 +1,84 @@ > +;;; GNU Guix --- Functional package management for GNU > +;;; Copyright © 2020 Zhu Zihao <all_but_last <at> 163.com> > +;;; > +;;; 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 (gnu packages fcitx5) > + #:use-module (guix packages) > + #:use-module (guix download) > + #:use-module (guix git-download) > + #:use-module (guix build-system cmake) > + #:use-module (guix build-system copy) > + #:use-module ((guix licenses) #:prefix license:) > + #:use-module (gnu packages) > + #:use-module (gnu packages boost) > + #:use-module (gnu packages curl) > + #:use-module (gnu packages datastructures) > + #:use-module (gnu packages enchant) > + #:use-module (gnu packages freedesktop) > + #:use-module (gnu packages gettext) > + #:use-module (gnu packages gcc) > + #:use-module (gnu packages glib) > + #:use-module (gnu packages gtk) > + #:use-module (gnu packages iso-codes) > + #:use-module (gnu packages kde-frameworks) > + #:use-module (gnu packages libevent) > + #:use-module (gnu packages linux) > + #:use-module (gnu packages lua) > + #:use-module (gnu packages pkg-config) > + #:use-module (gnu packages pretty-print) > + #:use-module (gnu packages python) > + #:use-module (gnu packages qt) > + #:use-module (gnu packages textutils) > + #:use-module (gnu packages unicode) > + #:use-module (gnu packages web) > + #:use-module (gnu packages xdisorg) > + #:use-module (gnu packages xml) > + #:use-module (gnu packages xorg)) > + > +(define-public xcb-imdkit > + (package > + (name "xcb-imdkit") > + (version "1.0.0") > + (source > + (origin > + (method url-fetch) > + (uri (string-append "https://download.fcitx-im.org/fcitx5/xcb-imdkit/xcb-imdkit-" > + version ".tar.xz")) > + (sha256 > + (base32 "0qgbklk5a809asyaxi6v9iasxc19g16fc5rphnamhwrliczlycas")) > + (modules '((guix build utils))) > + (snippet > + '(begin > + ;; Remove bundled uthash. > + (delete-file-recursively "uthash") > + #t)))) > + (build-system cmake-build-system) > + (inputs > + `(("uthash" ,uthash) > + ("libxcb" ,libxcb) > + ("xcb-util" ,xcb-util) > + ("xcb-util-keysyms" ,xcb-util-keysyms))) > + (native-inputs > + `(("extra-cmake-modules" ,extra-cmake-modules) > + ("pkg-config" ,pkg-config))) > + (home-page "https://github.com/fcitx/xcb-imdkit") > + (synopsis "Input method development support for XCB.") > + (description "Xcb-imdkit is an implementation of xim protocol in XCB, > +comparing with the implementation of IMDkit with Xlib, and xim inside Xlib, > +it has less memory foot print, better performance, and safer on malformed > +client.") > + (license license:lgpl2.1))) > -- > 2.29.2 > > From 3870f53451deea014e9d28ce7df418bc9793d3e1 Mon Sep 17 00:00:00 2001 > From: Zhu Zihao <all_but_last <at> 163.com> > Date: Sat, 28 Nov 2020 13:19:26 +0800 > Subject: [PATCH 2/9] gnu: Add fcitx5. > > * gnu/packages/patches/fcitx5-allow-set-cldr-dir.patch: New file. > * gnu/local.mk (dist_patch_DATA): Reference new patch. > * gnu/packages/fcitx5.scm(fcitx5): New variable. > --- > gnu/local.mk | 1 + > gnu/packages/fcitx5.scm | 63 ++++++++++ > .../patches/fcitx5-allow-set-cldr-dir.patch | 114 ++++++++++++++++++ > 3 files changed, 178 insertions(+) > create mode 100644 gnu/packages/patches/fcitx5-allow-set-cldr-dir.patch > > diff --git a/gnu/local.mk b/gnu/local.mk > index 5277403196..00ba3ee818 100644 > --- a/gnu/local.mk > +++ b/gnu/local.mk > @@ -977,6 +977,7 @@ dist_patch_DATA = \ > %D%/packages/patches/fasthenry-spSolve.patch \ > %D%/packages/patches/fasthenry-spFactor.patch \ > %D%/packages/patches/fbreader-curl-7.62.patch \ > + %D%/packages/patches/fcitx5-allow-set-cldr-dir.patch \ > %D%/packages/patches/fifengine-swig-compat.patch \ > %D%/packages/patches/fifo-map-fix-flags-for-gcc.patch \ > %D%/packages/patches/fifo-map-remove-catch.hpp.patch \ > diff --git a/gnu/packages/fcitx5.scm b/gnu/packages/fcitx5.scm > index 171d545ed8..c4ee0c6e3c 100644 > --- a/gnu/packages/fcitx5.scm > +++ b/gnu/packages/fcitx5.scm > @@ -82,3 +82,66 @@ comparing with the implementation of IMDkit with Xlib, and xim inside Xlib, > it has less memory foot print, better performance, and safer on malformed > client.") > (license license:lgpl2.1))) > + > +(define-public fcitx5 > + (package > + (name "fcitx5") > + (version "5.0.1") > + (source > + (origin > + (method url-fetch) > + (uri (string-append "https://download.fcitx-im.org/fcitx5/fcitx5/fcitx5-" > + version "_dict.tar.xz")) > + (sha256 > + (base32 "0ai7qkxvkdl5qmrvkjp53w1809hhla9csf04qsnf8k33pqbzdgw8")) > + ;; This backport patch allow us to use CLDR data in unicode-cldr-common. ^^^^^^^^ ^^^^^ backported allows > + ;; it should be removed after upstream make a newer release. ^^ ^^^^ It > + (patches (search-patches "fcitx5-allow-set-cldr-dir.patch")))) > + (build-system cmake-build-system) > + (arguments > + `(#:configure-flags > + (list (string-append "-DCLDR_DIR=" > + (assoc-ref %build-inputs "unicode-cldr-common") > + "/share/unicode/cldr")))) > + (inputs > + `(("cairo" ,cairo) > + ("cairo-xcb" ,cairo-xcb) > + ("dbus" ,dbus) > + ("enchant" ,enchant) > + ("expat" ,expat) > + ("fmt" ,fmt) > + ("gdk-pixbuf" ,gdk-pixbuf) > + ("gettext" ,gettext-minimal) > + ("glib" ,glib) > + ("iso-codes" ,iso-codes) > + ("json-c" ,json-c) > + ("libevent" ,libevent) > + ("libpthread-stubs" ,libpthread-stubs) > + ("libuuid" ,util-linux "lib") > + ("libx11" ,libx11) > + ("libxcb" ,libxcb) > + ("libxfixes" ,libxfixes) > + ("libxinerama" ,libxinerama) > + ("libxkbcommon" ,libxkbcommon) > + ("libxkbfile" ,libxkbfile) > + ("pango" ,pango) > + ("unicode-cldr-common" ,unicode-cldr-common) > + ("wayland" ,wayland) > + ("wayland-protocols" ,wayland-protocols) > + ("xcb-imdkit" ,xcb-imdkit) > + ("xcb-util" ,xcb-util) > + ("xcb-util-keysyms" ,xcb-util-keysyms) > + ("xcb-util-wm" ,xcb-util-wm) > + ("xkeyboard-config" ,xkeyboard-config))) > + (native-inputs > + `(("extra-cmake-modules" ,extra-cmake-modules) > + ("pkg-config" ,pkg-config))) > + (native-search-paths > + (list (search-path-specification > + (variable "FCITX_ADDON_DIRS") > + (files '("lib/fcitx5"))))) > + (home-page "https://github.com/fcitx/fcitx5") > + (synopsis "Next generation of Fcitx") "Input method framework" is better. > + (description "Fcitx 5 is a generic input method framework, the successor > +of Fcitx.") I don't think we should emphasize that Fcitx 5 is the successor to Fcitx. It's obvious. The old Fcitx 4 has already been deprecated by the author. Do you think there is a good reason to keep the current Fcitx package while adding a Fcitx 5 package? Why not replace the old one? > + (license license:lgpl2.1+))) > diff --git a/gnu/packages/patches/fcitx5-allow-set-cldr-dir.patch b/gnu/packages/patches/fcitx5-allow-set-cldr-dir.patch > new file mode 100644 > index 0000000000..a0c3b9b60f > --- /dev/null > +++ b/gnu/packages/patches/fcitx5-allow-set-cldr-dir.patch > @@ -0,0 +1,114 @@ > +https://github.com/fcitx/fcitx5/commit/a2b09de92a73dfa4ae43d3ac8a4ffa1aa791f6c5.patch > +https://github.com/fcitx/fcitx5/issues/154 > + > +From a2b09de92a73dfa4ae43d3ac8a4ffa1aa791f6c5 Mon Sep 17 00:00:00 2001 > +From: Weng Xuetian <wengxt <at> gmail.com> > +Date: Sun, 22 Nov 2020 23:42:44 -0800 > +Subject: [PATCH] Allow set CLDR dir > + > +Fix #154 > +--- > + CMakeLists.txt | 22 +++++++++++++++++++--- > + config.h.in | 2 +- > + src/modules/emoji/CMakeLists.txt | 2 +- > + src/modules/emoji/emoji.cpp | 8 +++----- > + 4 files changed, 24 insertions(+), 10 deletions(-) > + > +diff --git a/CMakeLists.txt b/CMakeLists.txt > +index e6763dd..fc84b4b 100644 > +--- a/CMakeLists.txt > ++++ b/CMakeLists.txt > +@@ -29,6 +29,19 @@ option(ENABLE_WAYLAND "Enable wayland support" On) > + option(ENABLE_DOC "Build doxygen" Off) > + option(USE_SYSTEMD "Use systemd for event loop and dbus, will fallback to libevent/libdbus if not found." On) > + option(ENABLE_XDGAUTOSTART "Enable xdg autostart desktop file installation" On) > ++set(CLDR_DIR "" CACHE STRING "Unicode CLDR (Common Locale Data Repository) directory") > ++ > ++if (CLDR_DIR STREQUAL "") > ++ if (IS_DIRECTORY "${CMAKE_INSTALL_FULL_DATADIR}/unicode/cldr") > ++ set(CLDR_DIR "${CMAKE_INSTALL_FULL_DATADIR}/unicode/cldr") > ++ else(IS_DIRECTORY "/usr/share/unicode/cldr") > ++ set(CLDR_DIR "/usr/share/unicode/cldr") > ++ endif() > ++endif() > ++ > ++if (NOT IS_DIRECTORY "${CLDR_DIR}") > ++ message(FATAL_ERROR "Could not find Unicode CLDR directory") > ++endif() > + > + ####################################################################### > + # Find packages > +@@ -73,7 +86,6 @@ pkg_check_modules(CairoXCB IMPORTED_TARGET cairo-xcb) > + pkg_check_modules(Pango IMPORTED_TARGET pango pangocairo) > + pkg_check_modules(GdkPixbuf IMPORTED_TARGET gdk-pixbuf-2.0) > + pkg_check_modules(GioUnix IMPORTED_TARGET gio-unix-2.0) > +-pkg_check_modules(CldrEmojiAnnotation REQUIRED IMPORTED_TARGET cldr-emoji-annotation) > + > + if (ENABLE_WAYLAND) > + find_package(Wayland REQUIRED COMPONENTS Client Egl) > +@@ -106,10 +118,14 @@ else() > + set(WAYLAND_FOUND FALSE) > + endif() > + > ++if (NOT EXISTS "${CLDR_DIR}") > ++ message(FATAL_ERROR "Could not find Unicode CLDR directory: ${CLDR_DIR}") > ++endif() > ++ > + set(DEFAULT_XKB_RULES_FILES "${XKEYBOARDCONFIG_XKBBASE}/rules/${DEFAULT_XKB_RULES}.xml") > + if (NOT EXISTS "${DEFAULT_XKB_RULES_FILES}") > +-message(FATAL_ERROR "Could not find default xkb rules file: ${DEFAULT_XKB_RULES_FILES}") > +-endif () > ++ message(FATAL_ERROR "Could not find default xkb rules file: ${DEFAULT_XKB_RULES_FILES}") > ++endif() > + > + # directory needed by bsd > + if(NOT CMAKE_INSTALL_LIBDATADIR) > +diff --git a/config.h.in b/config.h.in > +index 09bf002..4291152 100644 > +--- a/config.h.in > ++++ b/config.h.in > +@@ -33,7 +33,7 @@ > + #cmakedefine HAS_DLMOPEN > + #define XKEYBOARDCONFIG_DATADIR "@XKEYBOARDCONFIG_DATADIR@" > + #define DBUS_SYSTEM_BUS_DEFAULT_ADDRESS "@DBUS_SYSTEM_BUS_DEFAULT_ADDRESS@" > +-#define CLDR_EMOJI_ANNOTATION_PREFIX "@CldrEmojiAnnotation_PREFIX@" > ++#define CLDR_DIR "@CLDR_DIR@" > + > + #ifndef _GNU_SOURCE > + #define _GNU_SOURCE > +diff --git a/src/modules/emoji/CMakeLists.txt b/src/modules/emoji/CMakeLists.txt > +index 9fa84bb..57ae48b 100644 > +--- a/src/modules/emoji/CMakeLists.txt > ++++ b/src/modules/emoji/CMakeLists.txt > +@@ -1,4 +1,4 @@ > +-if (NOT IS_DIRECTORY ${CldrEmojiAnnotation_PREFIX}/share/unicode/cldr/common/annotations) > ++if ("${CLDR_DIR}" STREQUAL "" OR NOT IS_DIRECTORY "${CLDR_DIR}/common/annotations") > + return() > + endif() > + > +diff --git a/src/modules/emoji/emoji.cpp b/src/modules/emoji/emoji.cpp > +index 5606a37..805aef7 100644 > +--- a/src/modules/emoji/emoji.cpp > ++++ b/src/modules/emoji/emoji.cpp > +@@ -126,7 +126,7 @@ bool noSpace(const std::string &str) { > + > + const EmojiMap *Emoji::loadEmoji(const std::string &language, > + bool fallbackToEn) { > +- // This is to match the file in cldr-emoji-annotation. > ++ // This is to match the file in CLDR. > + static const std::unordered_map<std::string, std::string> languageMap = { > + {"zh_TW", "zh_Hant"}, {"zh_CN", "zh"}, {"zh_HK", "zh_Hant_HK"}}; > + > +@@ -172,10 +172,8 @@ const EmojiMap *Emoji::loadEmoji(const std::string &language, > + return utf8::lengthValidated(str) > 2; > + }}}; > + const auto *filter = findValue(filterMap, lang); > +- const auto file = > +- stringutils::joinPath(CLDR_EMOJI_ANNOTATION_PREFIX, > +- "/share/unicode/cldr/common/annotations", > +- stringutils::concat(lang, ".xml")); > ++ const auto file = stringutils::joinPath( > ++ CLDR_DIR, "/common/annotations", stringutils::concat(lang, ".xml")); > + EmojiParser parser(filter ? *filter : nullptr); > + if (parser.parse(file)) { > + emojiMap = &(langToEmojiMap_[lang] = std::move(parser.emojiMap_)); > -- > 2.29.2 > > From d1e53ec2239077da96d871900fbb4c6d2d274cc5 Mon Sep 17 00:00:00 2001 > From: Zhu Zihao <all_but_last <at> 163.com> > Date: Sat, 28 Nov 2020 13:20:51 +0800 > Subject: [PATCH 3/9] gnu: Add fcitx5-lua. > > * gnu/packages/fcitx5.scm(fcitx5-lua): 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 c4ee0c6e3c..c48eafbad5 100644 > --- a/gnu/packages/fcitx5.scm > +++ b/gnu/packages/fcitx5.scm > @@ -145,3 +145,47 @@ client.") > (description "Fcitx 5 is a generic input method framework, the successor > of Fcitx.") > (license license:lgpl2.1+))) > + > +(define-public fcitx5-lua > + (package > + (name "fcitx5-lua") > + (version "5.0.0") > + (source > + (origin > + (method url-fetch) > + (uri (string-append "https://download.fcitx-im.org/fcitx5/fcitx5-lua/fcitx5-lua-" > + version ".tar.xz")) Please follow 80-column rule. > + (sha256 > + (base32 "0v4kjx5bargmzfm3v2kys1kzfbpkbd8inzw23y9hslc8h5zazj33")))) > + (build-system cmake-build-system) > + (arguments > + `(#:configure-flags > + (list > + (string-append "-DFEM_INCLUDE_INSTALL_DIR=" %output "/include") > + (string-append "-DFEM_LIB_INSTALL_DIR=" %output "/lib")) > + #:phases > + (modify-phases %standard-phases > + (add-before 'configure 'patch-install-prefix > + (lambda* (#:key outputs #:allow-other-keys) > + (for-each > + (lambda (x) > + (format #t "patch-install-prefix: Fixing install prefix in ~a~%" > + x) > + (substitute* x > + (("\\$\\{FCITX_INSTALL_PKGDATADIR\\}") > + (string-append (assoc-ref outputs "out") > + "/share/fcitx5")))) > + '("src/addonloader/CMakeLists.txt" > + "src/imeapi/CMakeLists.txt")) > + #t))))) > + (inputs > + `(("fcitx5" ,fcitx5) > + ("lua" ,lua) > + ("gettext" ,gettext-minimal) > + ("libpthread-stubs" ,libpthread-stubs))) > + (native-inputs > + `(("extra-cmake-modules" ,extra-cmake-modules))) > + (home-page "https://github.com/fcitx/fcitx5-lua") > + (synopsis "Lua support for Fcitx 5") "Lua support for Fcitx" > + (description "Fcitx5-lua allow user to write Fcitx5 extension in Lua.") "Fcitx5-lua allows writing Fcitx extentions in Lua." I think we can drop all the emphases on "5". > + (license license:lgpl2.1+))) > -- > 2.29.2 > > From 69b4cfc316e81e9c0ebdb307af033bf2e0a5faca Mon Sep 17 00:00:00 2001 > From: Zhu Zihao <all_but_last <at> 163.com> > Date: Sat, 28 Nov 2020 13:21:38 +0800 > Subject: [PATCH 4/9] gnu: Add libime. > > * gnu/packages/fcitx5.scm(libime): New variable. > --- > gnu/packages/fcitx5.scm | 25 +++++++++++++++++++++++++ > 1 file changed, 25 insertions(+) > > diff --git a/gnu/packages/fcitx5.scm b/gnu/packages/fcitx5.scm > index c48eafbad5..9f031a1289 100644 > --- a/gnu/packages/fcitx5.scm > +++ b/gnu/packages/fcitx5.scm > @@ -189,3 +189,28 @@ of Fcitx.") > (synopsis "Lua support for Fcitx 5") > (description "Fcitx5-lua allow user to write Fcitx5 extension in Lua.") > (license license:lgpl2.1+))) > + > +(define-public libime > + (package > + (name "libime") > + (version "1.0.1") > + (source > + (origin > + (method url-fetch) > + (uri (string-append "https://download.fcitx-im.org/fcitx5/libime/libime-" > + version "_dict.tar.xz")) > + (sha256 > + (base32 "0kymzn0srdmpbn43rg4zpz09baz3bcw18v648jsqsb2j488s2paq")))) > + (build-system cmake-build-system) > + (inputs > + `(("fcitx5" ,fcitx5) > + ("boost" ,boost))) > + (native-inputs > + `(("gcc" ,gcc-9) ;for #include <filesystem> and ld support > + ("extra-cmake-modules" ,extra-cmake-modules) > + ("python" ,python))) ;needed to run test > + (home-page "https://github.com/fcitx/libime") > + (synopsis "Library supports generic input method implmentation") "Library for implementing generic input method editors" > + (description "Libime is a library, being used to implment various input > +methods for Fcitx 5.") "Libime is a library for implementing generic input method editors." > + (license license:lgpl2.1+))) > -- > 2.29.2 > > From 8af5ff96d20a5fd2b3faa43b05935f9755880959 Mon Sep 17 00:00:00 2001 > From: Zhu Zihao <all_but_last <at> 163.com> > Date: Sat, 28 Nov 2020 13:24:20 +0800 > Subject: [PATCH 5/9] gnu: Add fcitx5-qt. > > * gnu/packages/fcitx5.scm(fcitx5-qt): New variable. > --- > gnu/packages/fcitx5.scm | 36 ++++++++++++++++++++++++++++++++++++ > 1 file changed, 36 insertions(+) > > diff --git a/gnu/packages/fcitx5.scm b/gnu/packages/fcitx5.scm > index 9f031a1289..4e3ba010ef 100644 > --- a/gnu/packages/fcitx5.scm > +++ b/gnu/packages/fcitx5.scm > @@ -214,3 +214,39 @@ of Fcitx.") > (description "Libime is a library, being used to implment various input > methods for Fcitx 5.") > (license license:lgpl2.1+))) > + > +(define-public fcitx5-qt > + (package > + (name "fcitx5-qt") > + (version "5.0.0") > + (source > + (origin > + (method url-fetch) > + (uri (string-append "https://download.fcitx-im.org/fcitx5" > + "/fcitx5-qt/fcitx5-qt-" > + version ".tar.xz")) > + (sha256 > + (base32 "0s0spjr8m7dw2f18xxqg6lwn3y575g411j9j9w8xv1cqsm9fm49f")))) > + (build-system cmake-build-system) > + (arguments > + `(#:configure-flags > + (list (string-append "-DCMAKE_INSTALL_QT5PLUGINDIR=" > + %output "/lib/qt5/plugins") > + "-DENABLE_QT4=Off"))) > + (inputs > + `(("fcitx5" ,fcitx5) > + ("libxcb" ,libxcb) > + ("libxkbcommon" ,libxkbcommon) > + ("qtbase" ,qtbase) > + ("gettext" ,gettext-minimal))) > + (native-inputs > + `(("extra-cmake-modules" ,extra-cmake-modules))) > + (home-page "https://github.com/fcitx/fcitx5-qt") > + (synopsis "Qt library and IM module for Fcitx 5") > + (description "Fcitx5-qt provides Qt library for development and IM module > +for Qt5 based application.") "Fcitx5-qt provides a Qt library and an IM module for Qt based applications." According to CMakeLists.txt: option(ENABLE_QT4 "Enable Qt 4" On) option(ENABLE_QT5 "Enable Qt 5" On) option(ENABLE_QT6 "Enable Qt 6" Off) The support is not limited to qt5. > + (license (list license:lgpl2.1+ > + ;; Files under qt4/ which include Fcitx5Qt4DBusAddons Library > + ;; and input context plugin and files under qt5/dbusaddons > + ;; and qt5/platforminputcontext This is more clear: "Files under qt4, qt5/dbusaddons, and qt5/platforminputcontext." > + license:bsd-3)))) > -- > 2.29.2 > > From 9a4111139bc059fbacc2f6aa8a3d5922d4f837fd Mon Sep 17 00:00:00 2001 > From: Zhu Zihao <all_but_last <at> 163.com> > Date: Sat, 28 Nov 2020 13:25:19 +0800 > Subject: [PATCH 6/9] gnu: Add fcitx5-gtk. > > * gnu/packages/fcitx5.scm(fcitx5-gtk): New variable. > --- > gnu/packages/fcitx5.scm | 50 +++++++++++++++++++++++++++++++++++++++++ > 1 file changed, 50 insertions(+) > > diff --git a/gnu/packages/fcitx5.scm b/gnu/packages/fcitx5.scm > index 4e3ba010ef..9673ff2c47 100644 > --- a/gnu/packages/fcitx5.scm > +++ b/gnu/packages/fcitx5.scm > @@ -215,6 +215,56 @@ of Fcitx.") > methods for Fcitx 5.") > (license license:lgpl2.1+))) > > +(define-public fcitx5-gtk > + (package > + (name "fcitx5-gtk") > + (version "5.0.0") > + (source > + (origin > + (method url-fetch) > + (uri (string-append "https://download.fcitx-im.org/fcitx5" > + "/fcitx5-gtk/fcitx5-gtk-" > + version ".tar.xz")) > + (sha256 > + (base32 "0k09f3ca4jm4y33xr642wrbf2zfjqr7gjx1i28z0vwb1rmjn026y")))) > + (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")) > + (gtk3 (assoc-ref outputs "gtk3"))) > + > + (substitute* "gtk3/CMakeLists.txt" > + (("\\$\\{CMAKE_INSTALL_LIBDIR\\}") > + (string-append gtk3 "/lib"))))))))) > + (inputs > + `(("fcitx5" ,fcitx5) > + ("libxkbcommon" ,libxkbcommon) > + ("gobject-introspection" ,gobject-introspection) > + ("gtk2" ,gtk+-2) > + ("gtk3" ,gtk+) > + ("glib" ,glib) > + ("libx11" ,libx11) > + ("gettext" ,gettext-minimal))) > + (native-inputs > + `(("extra-cmake-modules" ,extra-cmake-modules) > + ("pkg-config" ,pkg-config) > + ("glib" ,glib "bin"))) ;for glib-genmarshal > + (outputs '("out" "gtk3")) > + (home-page "https://github.com/fcitx/fcitx5-gtk") > + (synopsis "Glib based D-Bus client and GTK IM module for Fcitx 5") "Glib based D-Bus client library and GTK IM module for Fcitx" > + (description "Fcitx5-qt provides a Glib based D-Bus client for development > +and IM module for GTK+2/GTK+3 application.") "Fcitx5-qt provides a Glib based D-Bus client library and an IM module for GTK+2/GTK+3 applications." > + (license license:lgpl2.1+))) > + > (define-public fcitx5-qt > (package > (name "fcitx5-qt") > -- > 2.29.2 > > From f0905307b179d478475a0433cbebf1532ecf6a95 Mon Sep 17 00:00:00 2001 > From: Zhu Zihao <all_but_last <at> 163.com> > Date: Sat, 28 Nov 2020 13:25:37 +0800 > Subject: [PATCH 7/9] gnu: Add fcitx5-chinese-addons. > > * gnu/packages/fcitx5.scm(fcitx5-chinese-addons): New variable. > --- > gnu/packages/fcitx5.scm | 79 +++++++++++++++++++++++++++++++++++++++++ > 1 file changed, 79 insertions(+) > > diff --git a/gnu/packages/fcitx5.scm b/gnu/packages/fcitx5.scm > index 9673ff2c47..076a96992d 100644 > --- a/gnu/packages/fcitx5.scm > +++ b/gnu/packages/fcitx5.scm > @@ -300,3 +300,82 @@ for Qt5 based application.") > ;; and input context plugin and files under qt5/dbusaddons > ;; and qt5/platforminputcontext > license:bsd-3)))) > + > +(define-public fcitx5-chinese-addons > + (package > + (name "fcitx5-chinese-addons") > + (version "5.0.1") > + (source > + (origin > + (method url-fetch) > + (uri (string-append "https://download.fcitx-im.org/fcitx5" > + "/fcitx5-chinese-addons/fcitx5-chinese-addons-" > + version "_dict.tar.xz")) > + (sha256 > + (base32 "015yx7wwhyjnhbrx2akc90nnzvmyhv1jv2n0mv7x7hsj05m62q8l")))) > + (build-system cmake-build-system) > + (arguments > + `(#:configure-flags > + (list > + (string-append "-DFEM_INCLUDE_INSTALL_DIR=" %output "/include") > + (string-append "-DFEM_LIB_INSTALL_DIR=" %output "/lib") > + ;; "-DENABLE_GUI=Off" Remove this redundant line. > + ) > + #:phases > + (modify-phases %standard-phases > + (add-before 'configure 'patch-install-prefix > + (lambda* (#:key outputs #:allow-other-keys) > + (for-each > + (lambda (x) > + (format #t "patch-install-prefix: Fixing install prefix in ~a~%" > + x) > + (substitute* x > + (("\\$\\{FCITX_INSTALL_PKGDATADIR\\}") > + (string-append (assoc-ref outputs "out") > + "/share/fcitx5")))) > + (find-files "." "CMakeLists\\.txt$")) > + #t)) > + (add-before 'configure 'split-outputs > + ;; Build with GUI supports requires Qt and increase package closure > + ;; by 800M on x86_64, so place it under another output. > + (lambda* (#:key outputs #:allow-other-keys) > + (substitute* "gui/pinyindictmanager/CMakeLists.txt" > + (("\\$\\{CMAKE_INSTALL_LIBDIR\\}" _) > + (string-append (assoc-ref outputs "gui") "/lib")))))))) > + (inputs > + `(("fcitx5" ,fcitx5) > + ("fcitx5-lua" ,fcitx5-lua) > + ("boost" ,boost) > + ("libime",libime) > + ("curl" ,curl) > + ("gettext" ,gettext-minimal) > + ("fmt" ,fmt) > + ("libpthread-stubs" ,libpthread-stubs) > + ("opencc" ,opencc) > + ("qtbase" ,qtbase) > + ("fcitx5-qt" ,fcitx5-qt) > + ("qtwebkit" ,qtwebkit))) > + (native-inputs > + `(("extra-cmake-modules" ,extra-cmake-modules) > + ("pkg-config" ,pkg-config))) > + (outputs '("out" "gui")) > + (home-page "https://github.com/fcitx/fcitx5-chinese-addons") > + (synopsis "Chinese related addons for Fcitx 5") > + (description "Fcitx5-chinese-addons provides Chinese related addons, > +including input methods previous bundled inside Fcitx 4: I think the refer to Fcitx 4 is unnecessary. > + > +@itemize > +@item Bingchan > +@item Cangjie > +@item Erbi > +@item Pinyin > +@item Shuangpin > +@item Wanfeng > +@item Wubi > +@item Wubi Pinyin > +@item Ziranma > +@end itemize\n") > + (license (list license:lgpl2.1+ > + license:gpl2+ > + ;; im/pinyin/emoji.txt > + license:unicode)))) > -- > 2.29.2 > > From 95c20d878565cb3ff7870187e1806743d7e526f3 Mon Sep 17 00:00:00 2001 > From: Zhu Zihao <all_but_last <at> 163.com> > Date: Sat, 28 Nov 2020 13:25:55 +0800 > Subject: [PATCH 8/9] gnu: Add fcitx5-configtool. > > * gnu/packages/fcitx5.scm(fcitx5-configtool): 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 076a96992d..bc8fa5d7dc 100644 > --- a/gnu/packages/fcitx5.scm > +++ b/gnu/packages/fcitx5.scm > @@ -379,3 +379,45 @@ including input methods previous bundled inside Fcitx 4: > license:gpl2+ > ;; im/pinyin/emoji.txt > license:unicode)))) > + > +(define-public fcitx5-configtool > + (let ((revision "0") > + (commit "9c01bfc7477c203443ed073397670df52d1a6fc0")) > + (package > + (name "fcitx5-configtool") > + (version (git-version "5.0.0" revision commit)) > + (source > + (origin > + (method git-fetch) > + (uri (git-reference > + (url "https://github.com/fcitx/fcitx5-configtool") > + (commit commit))) > + (sha256 > + (base32 "03hfbr97953alxax3db1x16h17cgqx30xvqs070iz8rj232iiaia")))) > + (build-system cmake-build-system) > + (arguments > + `(#:configure-flags > + ;; KDE is currently not working on Guix, KCM supports doesn't make sense. > + '("-DENABLE_KCM=Off"))) > + (inputs > + `(("fcitx5" ,fcitx5) > + ("fcitx5-qt" ,fcitx5-qt) > + ("qtbase" ,qtbase) > + ("qtx11extras" ,qtx11extras) > + ("kitemviews" ,kitemviews) > + ("kwidgetsaddons" ,kwidgetsaddons) > + ("libx11" ,libx11) > + ("xkeyboard-config" ,xkeyboard-config) > + ("libxkbfile" ,libxkbfile) > + ("gettext" ,gettext-minimal) > + ("iso-codes" ,iso-codes))) > + (native-inputs > + `(("gcc" ,gcc-9) > + ("extra-cmake-modules" ,extra-cmake-modules) > + ("pkg-config" ,pkg-config))) > + (home-page "https://github.com/fcitx/fcitx5-configtool") > + (synopsis "Graphical configuration tool for Fcitx 5") > + (description "Fcitx5-configtool is a graphical configuration tool > +written in Qt, design for managing different input methods running under > +Fcitx 5.") "Fcitx5-configtool is a graphical configuration tool for managing different input methods in Fcitx." A user does not care about what programming language it's written in. > + (license license:gpl2+)))) > -- > 2.29.2 > > From 32f4fef151807a0620fec7654094ed3945a02bcf Mon Sep 17 00:00:00 2001 > From: Zhu Zihao <all_but_last <at> 163.com> > Date: Sat, 28 Nov 2020 13:27:08 +0800 > Subject: [PATCH 9/9] gnu: Add fcitx5-material-color-theme. > > * gnu/packages/fcitx5.scm(fcitx5-material-color-theme): New variable. > --- > gnu/packages/fcitx5.scm | 70 +++++++++++++++++++++++++++++++++++++++++ > 1 file changed, 70 insertions(+) > > diff --git a/gnu/packages/fcitx5.scm b/gnu/packages/fcitx5.scm > index bc8fa5d7dc..80fb989408 100644 > --- a/gnu/packages/fcitx5.scm > +++ b/gnu/packages/fcitx5.scm > @@ -421,3 +421,73 @@ including input methods previous bundled inside Fcitx 4: > written in Qt, design for managing different input methods running under > Fcitx 5.") > (license license:gpl2+)))) > + > +(define-public fcitx5-material-color-theme > + (package > + (name "fcitx5-material-color-theme") > + (version "0.1") > + (source > + (origin > + (method git-fetch) > + (uri (git-reference > + (url "https://github.com/hosxy/Fcitx5-Material-Color") > + (commit version))) > + (sha256 > + (base32 "1mgc722521jmfx0xc3ibmiycd3q2w7xg2956xcpc07kz90gcdjaa")))) > + (build-system copy-build-system) > + (arguments > + `(#:phases > + (modify-phases %standard-phases > + (replace 'install > + (lambda* (#:key outputs #:allow-other-keys) > + (use-modules (srfi srfi-26)) > + > + (let* ((out (assoc-ref outputs "out")) > + (assets-dir (string-append > + out "/share/fcitx5-material-color-theme")) > + (themes-prefix (string-append out "/share/fcitx5/themes"))) > + > + (define (install-theme-variant variant target) > + (let ((dir (string-append themes-prefix "/" target)) > + (png (string-append "panel-" variant ".png")) > + (conf (string-append "theme-" variant ".conf"))) > + (format #t "install: Installing color variant \"~a\" to ~a~%" > + variant dir) > + (substitute* conf > + (("^Name=.*") > + (string-append "Name=" target "\n"))) > + (mkdir-p dir) > + (install-file png dir) > + (copy-file conf (string-append dir "/theme.conf")) > + (symlink (string-append assets-dir "/arrow.png") > + (string-append dir "/arrow.png")))) > + > + (mkdir-p assets-dir) > + (install-file "arrow.png" assets-dir) > + (for-each > + (lambda (x) > + (install-theme-variant > + x (string-append "Material-Color-" (string-capitalize x)))) > + '("black" "blue" "brown" "indigo" > + "orange" "pink" "red" "teal")) > + > + (install-theme-variant > + "deepPurple" "Material-Color-DeepPurple") > + #t)))))) > + (home-page "https://github.com/hosxy/Fcitx5-Material-Color") > + (synopsis "Fcitx 5 theme use Material Design") "Material Design theme for Fcitx" > + (description "Fcitx5-material-color-theme contains Material Design theme > +with following color variants: "Fcitx5-material-color-theme is a Material Design theme for Fcitx with the following color variants:" > + > +@itemize > +@item Black > +@item Blue > +@item Brown > +@item Indigo > +@item Orange > +@item Pink > +@item Red > +@item teal > +@item DeepPurple > +@end itemize\n") > + (license license:asl2.0))) > -- > 2.29.2 -- Peng Mei Yu
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.