diff --git a/02338ce751a1ed5b9b892fba530ec2fe211d314e.patch b/02338ce751a1ed5b9b892fba530ec2fe211d314e.patch deleted file mode 100644 index 84ff968..0000000 --- a/02338ce751a1ed5b9b892fba530ec2fe211d314e.patch +++ /dev/null @@ -1,23 +0,0 @@ -diff --git a/docs/reference/ibus/Makefile.am b/docs/reference/ibus/Makefile.am -index 1ece234c1..0f307bbdc 100644 ---- a/docs/reference/ibus/Makefile.am -+++ b/docs/reference/ibus/Makefile.am -@@ -3,8 +3,8 @@ - # ibus - The Input Bus - # - # Copyright (c) 2007-2015 Peng Huang --# Copyright (c) 2007-2015 Red Hat, Inc. --# Copyright (c) 2015 Takao Fujiwara -+# Copyright (c) 2007-2020 Red Hat, Inc. -+# Copyright (c) 2015-2020 Takao Fujiwara - # - # This library is free software; you can redistribute it and/or - # modify it under the terms of the GNU Lesser General Public -@@ -147,6 +147,6 @@ tmpl-build.stamp: trim-build.stamp $(DOC_MODULE)-decl.txt $(SCANOBJ_FILES) $(DO - # clean-local: - # rm -rf tmpl ${DOC_MODULE) - --CLEANFILES+= *.stamp -+CLEANFILES+= *actions *.stamp - - -include $(top_srcdir)/git.mk diff --git a/30a3641e19c541924959a5770dd784b4424288d4.patch b/30a3641e19c541924959a5770dd784b4424288d4.patch new file mode 100644 index 0000000..676dba7 --- /dev/null +++ b/30a3641e19c541924959a5770dd784b4424288d4.patch @@ -0,0 +1,76 @@ +diff --git a/.travis.yml b/.travis.yml +new file mode 100644 +index 000000000..e90dc230c +--- /dev/null ++++ b/.travis.yml +@@ -0,0 +1,70 @@ ++language: c ++compiler: gcc ++os: linux ++ ++# Require gettext-0.19.8 ++dist: focal ++ ++branches: ++ only: ++ - master ++ ++# FIXME: Run script in every arch ++arch: ++ - amd64 ++ #- ppc64le ++ #- s390x ++ #- arm64 ++ ++addons: ++ apt: ++ packages: ++ # For autogen.sh ++ - gnome-common ++ - gtk-doc-tools ++ # For make from ++ # https://packages.ubuntu.com/search?searchon=sourcenames&keywords=ibus ++ - desktop-file-utils ++ - gobject-introspection ++ - iso-codes ++ - libdconf-dev ++ - libgirepository1.0-dev ++ - libglib2.0-dev ++ - libgtk-3-bin ++ - libgtk-3-dev ++ - libgtk2.0-dev ++ - libtool ++ - libwayland-dev ++ - python-gi-dev ++ - python3-all ++ - unicode-cldr-core ++ - unicode-data ++ - valac ++ ++jobs: ++ include: ++ - name: Build in Ubuntu ++ before_script: ++ - sudo apt-get -qq update ++ script: ++ - set -e ++ - git pull --depth=200 ++ # configure options from ++ # https://salsa.debian.org/debian/ibus/-/blob/master/debian/rules ++ - > ++ ./autogen.sh ++ --with-ucd-dir='/usr/share/unicode' ++ # Set the cutom DESTDIR because the default DESTDIR ++ # /home/travis/bulid/fujiwarat/$PKG/ibus/ibus-$VERSION/_inst seems to be ++ # too long and failed to set DESTDIR to install bindings/pygobject/IBus.py ++ - > ++ make distcheck ++ DISTCHECK_CONFIGURE_FLAGS=" ++ --enable-gtk-doc ++ --disable-schemas-install ++ --enable-memconf ++ --with-ucd-dir='/usr/share/unicode' ++ " ++ DISABLE_GUI_TESTS="ibus-compose ibus-keypress test-stress" ++ VERBOSE=1 ++ DESTDIR="$HOME/build/$USER/dest" diff --git a/aa558de80c224921753990806cf553428fbe7057.patch b/aa558de80c224921753990806cf553428fbe7057.patch deleted file mode 100644 index 2d77cdc..0000000 --- a/aa558de80c224921753990806cf553428fbe7057.patch +++ /dev/null @@ -1,126 +0,0 @@ -diff --git a/src/Makefile.am b/src/Makefile.am -index 99de1ab7c..742ee7d78 100644 ---- a/src/Makefile.am -+++ b/src/Makefile.am -@@ -3,7 +3,7 @@ - # ibus - The Input Bus - # - # Copyright (c) 2007-2015 Peng Huang --# Copyright (c) 2015-2019 Takao Fujiwara -+# Copyright (c) 2015-2020 Takao Fujiwara - # Copyright (c) 2007-2017 Red Hat, Inc. - # - # This library is free software; you can redistribute it and/or -@@ -248,6 +248,7 @@ AM_CPPFLAGS += -DENABLE_EMOJI_DICT - dictdir = $(pkgdatadir)/dicts - LANG_FILES = $(basename $(notdir $(wildcard $(EMOJI_ANNOTATION_DIR)/*.xml))) - EMOJI_DICT_FILES = $(patsubst %,dicts/emoji-%.dict,$(LANG_FILES)) -+# emoji-root.dict, emoji-sr_Cyrl.dict have no contents. - dict_DATA = $(EMOJI_DICT_FILES) - - noinst_PROGRAMS += emoji-parser -@@ -265,6 +266,7 @@ dicts/emoji-%.dict: emoji-parser - xml_derived_option="--xml-derived $(EMOJI_ANNOTATION_DIR)/../annotationsDerived/$*.xml"; \ - plus_comment="derived"; \ - fi; \ -+ is_skip=0; \ - if test x"$*" = xen ; then \ - $(builddir)/emoji-parser \ - --unicode-emoji-dir $(UNICODE_EMOJI_DIR) \ -@@ -279,48 +281,43 @@ dicts/emoji-%.dict: emoji-parser - --xml $(EMOJI_ANNOTATION_DIR)/$*.xml \ - $$xml_derived_option \ - --out $@; \ -+ retval=$$?; \ -+ if test $$retval -eq 99 ; then \ -+ is_skip=1; \ -+ touch $@; \ -+ elif test $$retval -ne 0 ; then \ -+ echo "Fail to generate $@"; \ -+ abrt; \ -+ fi; \ - fi; \ -- echo "Generated $$plus_comment $@" -+ if test $$is_skip -eq 0 ; then \ -+ echo "Generated $$plus_comment $@"; \ -+ else \ -+ echo "Skip $$plus_comment $@"; \ -+ fi; - - ibusemojigen.h: dicts/emoji-en.dict - $(NULL) - --install-data-hook: $(dict_DATA) -- @$(NORMAL_INSTALL) -+# We put dicts/emoji-%.dict as the make target for the parallel build -+# and the make target has to be genarated even if the file size is zero. -+# But we don't want to install the zero size files and delete them -+# in install-data-hook. -+install-data-hook: - $(AM_V_at)list='$(wildcard dicts/*.dict)'; \ - test -n "$(dictdir)" || list=; \ -- if test -n "$$list"; then \ -- echo " $(MKDIR_P) '$(DESTDIR)$(dictdir)'"; \ -- $(MKDIR_P) "$(DESTDIR)$(dictdir)" || exit 1; \ -- fi; \ - for p in $$list; do \ -- if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ -- echo "$$d$$p"; \ -+ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ -+ if test -s "$$d$$p"; then continue; fi; \ -+ basename "$$p"; \ - done | \ -- while read files; do \ -- if [ x$(AM_DEFAULT_VERBOSITY) = x1 ] ; then \ -- echo "$(INSTALL_DATA) $$files '$(DESTDIR)$(dictdir)'"; \ -- else \ -- echo "Installing $$files"; \ -- fi; \ -- $(INSTALL_DATA) $$files "$(DESTDIR)$(dictdir)" || exit $$?; \ -+ while read file; do \ -+ if test -f "$(DESTDIR)$(dictdir)/$$file"; then \ -+ echo "Delete $(DESTDIR)$(dictdir)/$$file"; \ -+ rm "$(DESTDIR)$(dictdir)/$$file" || exit $$?; \ -+ fi; \ - done - --dict__uninstall_files_from_dir = { \ -- test -z "$$files" \ -- || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ -- || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ -- cd "$$dir" && rm -f $$files; }; \ -- } -- --# for make dist --uninstall-hook: -- @$(NORMAL_UNINSTALL) -- $(AM_V_at)list='$(wildcard dicts/*.dict)'; \ -- test -n "$(dictdir)" || list=; \ -- files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ -- dir='$(DESTDIR)$(dictdir)'; $(dict__uninstall_files_from_dir) -- - emoji_parser_SOURCES = \ - emoji-parser.c \ - $(NULL) -diff --git a/src/emoji-parser.c b/src/emoji-parser.c -index 96a779c65..b117b1b41 100644 ---- a/src/emoji-parser.c -+++ b/src/emoji-parser.c -@@ -1,7 +1,7 @@ - /* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */ - /* vim:set et sts=4: */ - /* ibus - The Input Bus -- * Copyright (C) 2016-2018 Takao Fujiwara -+ * Copyright (C) 2016-2020 Takao Fujiwara - * Copyright (C) 2016 Red Hat, Inc. - * - * This library is free software; you can redistribute it and/or -@@ -1294,6 +1294,8 @@ main (int argc, char *argv[]) - category_file_save (output_category, list); - if (list) - g_slist_free (list); -+ else -+ return 99; - - return 0; - } diff --git a/b72efea42d5f72e08e2774ae03027c246d41cab7.patch b/b72efea42d5f72e08e2774ae03027c246d41cab7.patch deleted file mode 100644 index ab3c2f9..0000000 --- a/b72efea42d5f72e08e2774ae03027c246d41cab7.patch +++ /dev/null @@ -1,120 +0,0 @@ -diff --git a/src/ibustypes.h b/src/ibustypes.h -index 06370a277..798ad04d9 100644 ---- a/src/ibustypes.h -+++ b/src/ibustypes.h -@@ -2,7 +2,7 @@ - /* vim:set et sts=4: */ - /* ibus - The Input Bus - * Copyright (C) 2008-2013 Peng Huang -- * Copyright (C) 2008-2015 Red Hat, Inc. -+ * Copyright (C) 2008-2020 Red Hat, Inc. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public -@@ -241,29 +241,46 @@ typedef void (* IBusFreeFunc) (gpointer object); - * @IBUS_INPUT_PURPOSE_EMAIL: Edited field expects email address - * @IBUS_INPUT_PURPOSE_NAME: Edited field expects the name of a person - * @IBUS_INPUT_PURPOSE_PASSWORD: Like @IBUS_INPUT_PURPOSE_FREE_FORM, -- * but characters are hidden -+ * but characters are hidden - * @IBUS_INPUT_PURPOSE_PIN: Like @IBUS_INPUT_PURPOSE_DIGITS, but -- * characters are hidden -+ * characters are hidden -+ * @IBUS_INPUT_PURPOSE_TERMINAL: Allow any character, in addition to control -+ * codes. Since 1.5.24 - * - * Describes primary purpose of the input context. This information - * is particularly useful to implement intelligent behavior in - * engines, such as automatic input-mode switch and text prediction. - * -+ * Note that the purpose is not meant to impose a totally strict rule -+ * about allowed characters, and does not replace input validation. -+ * It is fine for an on-screen keyboard to let the user override the -+ * character set restriction that is expressed by the purpose. The -+ * application is expected to validate the entry contents, even if -+ * it specified a purpose. -+ * -+ * The difference between @IBUS_INPUT_PURPOSE_DIGITS and -+ * @IBUS_INPUT_PURPOSE_NUMBER is that the former accepts only digits -+ * while the latter also some punctuation (like commas or points, plus, -+ * minus) and “e” or “E” as in 3.14E+000. -+ * - * This enumeration may be extended in the future; engines should - * interpret unknown values as 'free form'. -+ * -+ * Since: 1.5.4 - */ - typedef enum - { -- IBUS_INPUT_PURPOSE_FREE_FORM, -- IBUS_INPUT_PURPOSE_ALPHA, -- IBUS_INPUT_PURPOSE_DIGITS, -- IBUS_INPUT_PURPOSE_NUMBER, -- IBUS_INPUT_PURPOSE_PHONE, -- IBUS_INPUT_PURPOSE_URL, -- IBUS_INPUT_PURPOSE_EMAIL, -- IBUS_INPUT_PURPOSE_NAME, -- IBUS_INPUT_PURPOSE_PASSWORD, -- IBUS_INPUT_PURPOSE_PIN -+ IBUS_INPUT_PURPOSE_FREE_FORM, -+ IBUS_INPUT_PURPOSE_ALPHA, -+ IBUS_INPUT_PURPOSE_DIGITS, -+ IBUS_INPUT_PURPOSE_NUMBER, -+ IBUS_INPUT_PURPOSE_PHONE, -+ IBUS_INPUT_PURPOSE_URL, -+ IBUS_INPUT_PURPOSE_EMAIL, -+ IBUS_INPUT_PURPOSE_NAME, -+ IBUS_INPUT_PURPOSE_PASSWORD, -+ IBUS_INPUT_PURPOSE_PIN, -+ IBUS_INPUT_PURPOSE_TERMINAL - } IBusInputPurpose; - - /** -@@ -280,24 +297,36 @@ typedef enum - * first word of each sentence - * @IBUS_INPUT_HINT_INHIBIT_OSK: Suggest to not show an onscreen keyboard - * (e.g for a calculator that already has all the keys). -- * @IBUS_INPUT_HINT_VERTICAL_WRITING: The text is vertical. -+ * @IBUS_INPUT_HINT_VERTICAL_WRITING: The text is vertical. Since 1.5.11 -+ * @IBUS_INPUT_HINT_EMOJI: Suggest offering Emoji support. Since 1.5.24 -+ * @IBUS_INPUT_HINT_NO_EMOJI: Suggest not offering Emoji support. Since 1.5.24 - * - * Describes hints that might be taken into account by engines. Note - * that engines may already tailor their behaviour according to the - * #IBusInputPurpose of the entry. -+ * -+ * Some common sense is expected when using these flags - mixing -+ * @IBUS_INPUT_HINT_LOWERCASE with any of the uppercase hints makes no sense. -+ * -+ * This enumeration may be extended in the future; engines should -+ * ignore unknown values. -+ * -+ * Since: 1.5.4 - */ - typedef enum - { -- IBUS_INPUT_HINT_NONE = 0, -- IBUS_INPUT_HINT_SPELLCHECK = 1 << 0, -- IBUS_INPUT_HINT_NO_SPELLCHECK = 1 << 1, -- IBUS_INPUT_HINT_WORD_COMPLETION = 1 << 2, -- IBUS_INPUT_HINT_LOWERCASE = 1 << 3, -- IBUS_INPUT_HINT_UPPERCASE_CHARS = 1 << 4, -- IBUS_INPUT_HINT_UPPERCASE_WORDS = 1 << 5, -- IBUS_INPUT_HINT_UPPERCASE_SENTENCES = 1 << 6, -- IBUS_INPUT_HINT_INHIBIT_OSK = 1 << 7, -- IBUS_INPUT_HINT_VERTICAL_WRITING = 1 << 8 -+ IBUS_INPUT_HINT_NONE = 0, -+ IBUS_INPUT_HINT_SPELLCHECK = 1 << 0, -+ IBUS_INPUT_HINT_NO_SPELLCHECK = 1 << 1, -+ IBUS_INPUT_HINT_WORD_COMPLETION = 1 << 2, -+ IBUS_INPUT_HINT_LOWERCASE = 1 << 3, -+ IBUS_INPUT_HINT_UPPERCASE_CHARS = 1 << 4, -+ IBUS_INPUT_HINT_UPPERCASE_WORDS = 1 << 5, -+ IBUS_INPUT_HINT_UPPERCASE_SENTENCES = 1 << 6, -+ IBUS_INPUT_HINT_INHIBIT_OSK = 1 << 7, -+ IBUS_INPUT_HINT_VERTICAL_WRITING = 1 << 8, -+ IBUS_INPUT_HINT_EMOJI = 1 << 9, -+ IBUS_INPUT_HINT_NO_EMOJI = 1 << 10 - } IBusInputHints; - - #endif diff --git a/ibus-1.5.22.tar.gz b/ibus-1.5.22.tar.gz deleted file mode 100644 index 3bda9c0..0000000 Binary files a/ibus-1.5.22.tar.gz and /dev/null differ diff --git a/ibus-1.5.23.tar.gz b/ibus-1.5.23.tar.gz new file mode 100644 index 0000000..1425490 Binary files /dev/null and b/ibus-1.5.23.tar.gz differ diff --git a/ibus-1385349-segv-bus-proxy.patch b/ibus-1385349-segv-bus-proxy.patch index 0b8fc9a..91ca4a7 100644 --- a/ibus-1385349-segv-bus-proxy.patch +++ b/ibus-1385349-segv-bus-proxy.patch @@ -1,6 +1,6 @@ -From 023d50db40912e4f7ee333543e05995a9c730bae Mon Sep 17 00:00:00 2001 +From 41c325dfb32269c9aadfeedb4df44656aac4d883 Mon Sep 17 00:00:00 2001 From: fujiwarat -Date: Fri, 15 May 2020 21:44:16 +0900 +Date: Fri, 20 Nov 2020 09:53:54 +0900 Subject: [PATCH] Fix SEGV in bus_panel_proxy_focus_in() rhbz#1350291 SEGV in BUS_IS_CONNECTION(skip_connection) in @@ -280,12 +280,12 @@ index b7ffbb47..668c8a26 100644 bus->priv->monitor = NULL; } diff --git a/ui/gtk3/extension.vala b/ui/gtk3/extension.vala -index ea3cd464..57ed1357 100644 +index a6f2e8e6..b7a04081 100644 --- a/ui/gtk3/extension.vala +++ b/ui/gtk3/extension.vala @@ -73,6 +73,10 @@ class ExtensionGtk : Gtk.Application { - string signal_name, - Variant parameters) { + string signal_name, + Variant parameters) { debug("signal_name = %s", signal_name); + /* rhbz#1797120 Fix assert(bus.is_connected()) in + * panel_binding_construct() diff --git a/ibus-HEAD.patch b/ibus-HEAD.patch index 1ed4aac..0b66c2d 100644 --- a/ibus-HEAD.patch +++ b/ibus-HEAD.patch @@ -1,599 +1,423 @@ -From 7b0d091839a4f1315ba216175fb2787e86f7fa31 Mon Sep 17 00:00:00 2001 +From dd4cc5b028c35f9bb8fa9d3bdc8f26bcdfc43d40 Mon Sep 17 00:00:00 2001 From: fujiwarat -Date: Tue, 3 Mar 2020 17:08:30 +0900 -Subject: [PATCH] src/tests: Delete graves in substitution in - ibus-desktop-testing-runner +Date: Wed, 30 Sep 2020 20:35:23 +0900 +Subject: [PATCH] ui/gtk3: Fix arguments in GLib.DBusSignalCallback for Vala + 0.50 -Delete the single quotations to enclose grave chracters because -DASH saves the single quoted '`id -u`' as the raw string in the command -substitution not to be extracted. - -BUG=https://github.com/ibus/ibus/issues/2189 +BUG=https://github.com/ibus/ibus/issues/2265 --- - src/tests/ibus-desktop-testing-runner.in | 7 ++++--- - 1 file changed, 4 insertions(+), 3 deletions(-) + ui/gtk3/application.vala | 22 +++++++++++----------- + ui/gtk3/extension.vala | 22 +++++++++++----------- + 2 files changed, 22 insertions(+), 22 deletions(-) -diff --git a/src/tests/ibus-desktop-testing-runner.in b/src/tests/ibus-desktop-testing-runner.in -index 0d9a847c..f9238e69 100755 ---- a/src/tests/ibus-desktop-testing-runner.in -+++ b/src/tests/ibus-desktop-testing-runner.in -@@ -4,7 +4,7 @@ - # - # ibus - The Input Bus - # --# Copyright (c) 2018-2019 Takao Fujiwara -+# Copyright (c) 2018-2020 Takao Fujiwara - # Copyright (c) 2018 Red Hat, Inc. - # - # This program is free software; you can redistribute it and/or modify -@@ -31,7 +31,8 @@ - # POSIX sh has no 'echo -e' - : ${ECHO:='/usr/bin/echo'} - # POSIX sh has $UID --: ${UID:='`id -u`'} -+# DASH saves the graves in '``' as characters not to be extracted -+: ${UID:=`id -u`} - - - PROGNAME=`basename $0` -@@ -170,7 +171,7 @@ _EOF - run_dbus_daemon() - { - # Use dbus-launch --exit-with-session later instead of --sh-syntax -- export DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/$UID/bus -+ export DBUS_SESSION_BUS_ADDRESS="unix:path=/run/user/$UID/bus" - } - - run_desktop() --- -2.24.1 - -From 8ce25208c3f4adfd290a032c6aa739d2b7580eb1 Mon Sep 17 00:00:00 2001 -From: Carlos Garnacho -Date: Thu, 12 Mar 2020 16:02:16 +0900 -Subject: [PATCH] src: Use WAYLAND_DISPLAY on Wayland sessions to make up - IBus socket name - -In Wayland sessions, GNOME Shell 3.36 is leveraging 2 X11 Display -connections so one is used to set up all services for a "X11 session" -before user applications connected to the other display might require it. -This allows seamlessly starting Xwayland on demand to X11 user applications. - -IBus here belongs to the first described connection, it is started -explicitly on that display by GNOME Shell as it is necessary to set up -ibus-x11 before any other X11 client might want to use it. - -However the use of this "secondary" display results in IBus daemon left -unable to talk to applications, as the socket name is dependent on the -DISPLAY envvar and ibus/applications don't agree on its content. - -For wayland sessions, make it look for WAYLAND_DISPLAY, as that'll have -the similar "per session bus" behavior that this seems to look after. - -BUG=https://gitlab.gnome.org/GNOME/gnome-shell/issues/2341 ---- - src/ibusshare.c | 11 +++++++++-- - 1 file changed, 9 insertions(+), 2 deletions(-) - -diff --git a/src/ibusshare.c b/src/ibusshare.c -index 0d50d3f5..e0ef2ce0 100644 ---- a/src/ibusshare.c -+++ b/src/ibusshare.c -@@ -100,6 +100,7 @@ ibus_get_socket_path (void) - gchar *display; - gchar *displaynumber = "0"; - /* gchar *screennumber = "0"; */ -+ gboolean is_wayland = FALSE; - gchar *p; - - path = g_strdup (g_getenv ("IBUS_ADDRESS_FILE")); -@@ -108,13 +109,19 @@ ibus_get_socket_path (void) - } - - if (_display == NULL) { -- display = g_strdup (g_getenv ("DISPLAY")); -+ display = g_strdup (g_getenv ("WAYLAND_DISPLAY")); -+ if (display) -+ is_wayland = TRUE; -+ else -+ display = g_strdup (g_getenv ("DISPLAY")); - } - else { - display = g_strdup (_display); - } - -- if (display) { -+ if (is_wayland) { -+ displaynumber = display; -+ } else if (display) { - p = display; - hostname = display; - for (; *p != ':' && *p != '\0'; p++); --- -2.24.1 - -From 5765bfd69fb2ab1174378fbb0d8cac7f2bd2610f Mon Sep 17 00:00:00 2001 -From: Changwoo Ryu -Date: Wed, 15 Apr 2020 17:43:14 +0900 -Subject: [PATCH] client/gtk2: Remove glib_check_version() in gtk immodule - -In the gtk2/gtk3 immodule, glib_check_version() is being used to make sure -that the installed glib version is not older than the glib version which ibus -is built with. - -But there is no reason why glib version is checked in runtime. Library -compatibility is already being checked more precisely by packaging systems and -linkers. - -This version check can break the ibus gtk immodule when used with an older but -compatible version of glib, such as glib 2.62.x which is compatible with -2.64.x. - -BUG=https://github.com/ibus/ibus/issues/2200 ---- - client/gtk2/ibusim.c | 4 +--- - 1 file changed, 1 insertion(+), 3 deletions(-) - -diff --git a/client/gtk2/ibusim.c b/client/gtk2/ibusim.c -index bfacd0f0..d70800d3 100644 ---- a/client/gtk2/ibusim.c -+++ b/client/gtk2/ibusim.c -@@ -41,9 +41,7 @@ static const GtkIMContextInfo *info_list[] = { - G_MODULE_EXPORT const gchar* - g_module_check_init (GModule *module) - { -- return glib_check_version (GLIB_MAJOR_VERSION, -- GLIB_MINOR_VERSION, -- 0); -+ return null; - } - - G_MODULE_EXPORT void --- -2.24.1 - -From 8da016764cee9616cca4658d1fb311d6b3bfc0df Mon Sep 17 00:00:00 2001 -From: fujiwarat -Date: Wed, 15 Apr 2020 17:55:03 +0900 -Subject: [PATCH] src/tests: Fix to get focus events with su in - ibus-desktop-testing-runner - -GtkWindow haven't received focus events in any test cases since Fedora 31 -whenever Ansible runs ibus-desktop-testing-runner after `su root`. -Seems su command does not run systemd automatically and now systemd -requires XDG_RUNTIME_DIR and Ansible requires root access with ssh. -This fix requires to restart sshd with modified /etc/ssh/sshd_config -with "PermitRootLogin yes" in order to run with su command. - -Ansible with ibus-desktop-testin-runner has worked fine if root console -login is used without this patch because PAM runs systemd by login. ---- - src/tests/ibus-desktop-testing-runner.in | 36 ++++++++++++++++++++++-- - 1 file changed, 33 insertions(+), 3 deletions(-) - -diff --git a/src/tests/ibus-desktop-testing-runner.in b/src/tests/ibus-desktop-testing-runner.in -index f9238e69..f760fd5b 100755 ---- a/src/tests/ibus-desktop-testing-runner.in -+++ b/src/tests/ibus-desktop-testing-runner.in -@@ -49,6 +49,7 @@ PID_XORG=0 - PID_GNOME_SESSION=0 - TESTING_RUNNER="default" - TESTS="" -+TIMEOUT=300 - GREEN='\033[0;32m' - RED='\033[0;31m' - NC='\033[0m' -@@ -84,6 +85,7 @@ usage() - "-r, --runner=RUNNER Run TESTS programs with a test RUNNER.\n" \ - " RUNNDER = gnome or default.\n" \ - " default is an embedded runner.\n" \ -+"-T, --timeout=TIMEOUT Set timeout (default TIMEOUT is 300 sec).\n" \ - "-o, --output=OUTPUT_FILE OUtput the log to OUTPUT_FILE\n" \ - "-O, --result=RESULT_FILE OUtput the result to RESULT_FILE\n" \ - "" -@@ -92,8 +94,8 @@ usage() - parse_args() - { - # This is GNU getopt. "sudo port getopt" in BSD? -- ARGS=`getopt -o hvb:s:cd:t:r:o:O: --long \ -- help,version,builddir:,srcdir:,no-graphics,desktop:,tests:,runner:,output:,result:\ -+ ARGS=`getopt -o hvb:s:cd:t:r:T:o:O: --long \ -+ help,version,builddir:,srcdir:,no-graphics,desktop:,tests:,runner:,timeout:,output:,result:\ - -- "$@"`; - eval set -- "$ARGS" - while [ 1 ] ; do -@@ -106,6 +108,7 @@ parse_args() - -d | --desktop ) DESKTOP_COMMAND="$2"; shift 2;; - -t | --tests ) TESTS="$2"; shift 2;; - -r | --runner ) TESTING_RUNNER="$2"; shift 2;; -+ -T | --timeout ) TIMEOUT="$2"; shift 2;; - -o | --output ) TEST_LOG="$2"; shift 2;; - -O | --result ) RESULT_LOG="$2"; shift 2;; - -- ) shift; break;; -@@ -166,11 +169,37 @@ _EOF - fi - # `su` command does not run loginctl - export XDG_SESSION_TYPE='x11' -+ export XDG_SESSION_CLASS=user -+ # `su` command does not get focus in events without this variable. -+ # Need to restart sshd after set "PermitRootLogin yes" in sshd_config -+ if [ "x$XDG_RUNTIME_DIR" = x ] ; then -+ export XDG_RUNTIME_DIR=/run/user/$UID -+ is_root_login=`grep "^PermitRootLogin" /etc/ssh/sshd_config | grep yes` -+ if [ "x$ANSIBLE" != x ] && [ "x$is_root_login" = x ] ; then -+ print_log -e "${RED}FAIL${NC}: No permission to get focus-in events in GtkWindow with ansible" -+ echo "su command does not configure necessary login info " \ -+ "with systemd and GtkWindow cannot receive focus-events " \ -+ "when ibus-desktop-testing-runner is executed by " \ -+ "ansible-playbook." >> $TEST_LOG -+ echo "Enabling root login via sshd, restarting sshd, set " \ -+ "XDG_RUNTIME_DIR can resolve the problem under " \ -+ "ansible-playbook." >> $TEST_LOG -+ exit 255 -+ fi -+ fi -+ # Do we need XDG_SESSION_ID and XDG_SEAT? -+ #export XDG_CONFIG_DIRS=/etc/xdg -+ #export XDG_SESSION_ID=10 -+ #export XDG_SESSION_DESKTOP=gnome -+ #export XDG_SEAT=seat0 - } - - run_dbus_daemon() - { - # Use dbus-launch --exit-with-session later instead of --sh-syntax -+ # GNOME uses a unix:abstract address and it effects gsettings set values -+ # in each test case. -+ # TODO: Should we comment out this line? - export DBUS_SESSION_BUS_ADDRESS="unix:path=/run/user/$UID/bus" - } - -@@ -288,7 +317,8 @@ run_gnome_desktop_testing_runner() - fail=1 - continue - fi -- gnome-desktop-testing-runner $tst 2>>$TEST_LOG 1>>$TEST_LOG -+ gnome-desktop-testing-runner --timeout=$TIMEOUT $tst \ -+ 2>>$TEST_LOG 1>>$TEST_LOG - retval=$? - read pass fail << EOF - `count_case_result $retval $pass $fail` --- -2.24.1 - -From 0b9d9365988a96a2bc31c48624f9c2b8081601b6 Mon Sep 17 00:00:00 2001 -From: fujiwarat -Date: Wed, 22 Apr 2020 20:17:12 +0900 -Subject: [PATCH] client/gtk2: Fix typo - ---- - client/gtk2/ibusim.c | 4 ++-- - src/tests/ibus-desktop-testing-runner.in | 2 +- - 2 files changed, 3 insertions(+), 3 deletions(-) - -diff --git a/client/gtk2/ibusim.c b/client/gtk2/ibusim.c -index d70800d3..55609ce7 100644 ---- a/client/gtk2/ibusim.c -+++ b/client/gtk2/ibusim.c -@@ -2,7 +2,7 @@ - /* vim:set et ts=4: */ - /* ibus - The Input Bus - * Copyright (C) 2008-2010 Peng Huang -- * Copyright (C) 2008-2010 Red Hat, Inc. -+ * Copyright (C) 2008-2020 Red Hat, Inc. +diff --git a/ui/gtk3/application.vala b/ui/gtk3/application.vala +index cc9ee54c..da65301b 100644 +--- a/ui/gtk3/application.vala ++++ b/ui/gtk3/application.vala +@@ -3,7 +3,7 @@ + * ibus - The Input Bus + * + * Copyright(c) 2011 Peng Huang +- * Copyright(c) 2017 Takao Fujiwara ++ * Copyright(c) 2017-2020 Takao Fujiwara * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public -@@ -41,7 +41,7 @@ static const GtkIMContextInfo *info_list[] = { - G_MODULE_EXPORT const gchar* - g_module_check_init (GModule *module) - { -- return null; -+ return NULL; - } +@@ -69,22 +69,22 @@ class Application { + } - G_MODULE_EXPORT void -diff --git a/src/tests/ibus-desktop-testing-runner.in b/src/tests/ibus-desktop-testing-runner.in -index f760fd5b..4232c549 100755 ---- a/src/tests/ibus-desktop-testing-runner.in -+++ b/src/tests/ibus-desktop-testing-runner.in -@@ -173,7 +173,7 @@ _EOF - # `su` command does not get focus in events without this variable. - # Need to restart sshd after set "PermitRootLogin yes" in sshd_config - if [ "x$XDG_RUNTIME_DIR" = x ] ; then -- export XDG_RUNTIME_DIR=/run/user/$UID -+ export XDG_RUNTIME_DIR="/run/user/$UID" - is_root_login=`grep "^PermitRootLogin" /etc/ssh/sshd_config | grep yes` - if [ "x$ANSIBLE" != x ] && [ "x$is_root_login" = x ] ; then - print_log -e "${RED}FAIL${NC}: No permission to get focus-in events in GtkWindow with ansible" + private void bus_name_acquired_cb(DBusConnection connection, +- string sender_name, +- string object_path, +- string interface_name, +- string signal_name, +- Variant parameters) { ++ string? sender_name, ++ string object_path, ++ string interface_name, ++ string signal_name, ++ Variant parameters) { + debug("signal_name = %s", signal_name); + m_panel = new Panel(m_bus); + m_panel.load_settings(); + } + + private void bus_name_lost_cb(DBusConnection connection, +- string sender_name, +- string object_path, +- string interface_name, +- string signal_name, +- Variant parameters) { ++ string? sender_name, ++ string object_path, ++ string interface_name, ++ string signal_name, ++ Variant parameters) { + // "Destroy" dbus method was called before this callback is called. + // "Destroy" dbus method -> ibus_service_destroy() + // -> g_dbus_connection_unregister_object() +diff --git a/ui/gtk3/extension.vala b/ui/gtk3/extension.vala +index ea3cd464..a6f2e8e6 100644 +--- a/ui/gtk3/extension.vala ++++ b/ui/gtk3/extension.vala +@@ -3,7 +3,7 @@ + * ibus - The Input Bus + * + * Copyright(c) 2018 Peng Huang +- * Copyright(c) 2018 Takao Fujiwara ++ * Copyright(c) 2018-2020 Takao Fujiwara + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public +@@ -67,22 +67,22 @@ class ExtensionGtk : Gtk.Application { + + + private void bus_name_acquired_cb(DBusConnection connection, +- string sender_name, +- string object_path, +- string interface_name, +- string signal_name, +- Variant parameters) { ++ string? sender_name, ++ string object_path, ++ string interface_name, ++ string signal_name, ++ Variant parameters) { + debug("signal_name = %s", signal_name); + m_panel = new PanelBinding(m_bus, this); + m_panel.load_settings(); + } + + private void bus_name_lost_cb(DBusConnection connection, +- string sender_name, +- string object_path, +- string interface_name, +- string signal_name, +- Variant parameters) { ++ string? sender_name, ++ string object_path, ++ string interface_name, ++ string signal_name, ++ Variant parameters) { + // "Destroy" dbus method was called before this callback is called. + // "Destroy" dbus method -> ibus_service_destroy() + // -> g_dbus_connection_unregister_object() -- 2.24.1 -From 8c4125bc78ce3502b5aeb053e7029cc2594f83f2 Mon Sep 17 00:00:00 2001 -From: Changwoo Ryu -Date: Sun, 12 Apr 2020 05:28:15 +0900 -Subject: [PATCH] src: Build the Emoji dictionaries in parallel +From 02338ce751a1ed5b9b892fba530ec2fe211d314e Mon Sep 17 00:00:00 2001 +From: fujiwarat +Date: Fri, 20 Nov 2020 08:58:52 +0900 +Subject: [PATCH] docs: Fix make dist -Instead of building Emoji dictionaries src/dicts/emoji-*.dict in sequence, a -pattern rule is specified for them. The make -jN option builds the -dictionaries in parallel. - -The GNU make extensions like pattern rule and patsubst function are used for -it. But src/Makefile.am has had other GNU make extensions for a while, so -using more extensions should not make portability worse. - -BUG=https://github.com/ibus/ibus/pull/2209 --- - src/Makefile.am | 55 ++++++++++++++++++++++++------------------------- - 1 file changed, 27 insertions(+), 28 deletions(-) + docs/reference/ibus/Makefile.am | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +diff --git a/docs/reference/ibus/Makefile.am b/docs/reference/ibus/Makefile.am +index 1ece234c..0f307bbd 100644 +--- a/docs/reference/ibus/Makefile.am ++++ b/docs/reference/ibus/Makefile.am +@@ -3,8 +3,8 @@ + # ibus - The Input Bus + # + # Copyright (c) 2007-2015 Peng Huang +-# Copyright (c) 2007-2015 Red Hat, Inc. +-# Copyright (c) 2015 Takao Fujiwara ++# Copyright (c) 2007-2020 Red Hat, Inc. ++# Copyright (c) 2015-2020 Takao Fujiwara + # + # This library is free software; you can redistribute it and/or + # modify it under the terms of the GNU Lesser General Public +@@ -147,6 +147,6 @@ tmpl-build.stamp: trim-build.stamp $(DOC_MODULE)-decl.txt $(SCANOBJ_FILES) $(DO + # clean-local: + # rm -rf tmpl ${DOC_MODULE) + +-CLEANFILES+= *.stamp ++CLEANFILES+= *actions *.stamp + + -include $(top_srcdir)/git.mk +-- +2.24.1 + +From aa558de80c224921753990806cf553428fbe7057 Mon Sep 17 00:00:00 2001 +From: fujiwarat +Date: Fri, 20 Nov 2020 09:03:32 +0900 +Subject: [PATCH] src: Fix to build emoji-*.dict in CLDR 38 + +root.xml and sr_Cyrl.xml have included no contents since +cldr-emoji-annotation-38 and make install failed because of no +emoji-root.dict and emoji-sr.Cyrl.dict. +Now the build creates the no content files but remove those files +in the install hook. + +BUG=rhbz#1898065 +--- + src/Makefile.am | 61 ++++++++++++++++++++++------------------------ + src/emoji-parser.c | 4 ++- + 2 files changed, 32 insertions(+), 33 deletions(-) diff --git a/src/Makefile.am b/src/Makefile.am -index a8e3d07d..99de1ab7 100644 +index 99de1ab7..742ee7d7 100644 --- a/src/Makefile.am +++ b/src/Makefile.am -@@ -246,42 +246,41 @@ if ENABLE_EMOJI_DICT - AM_CPPFLAGS += -DENABLE_EMOJI_DICT - +@@ -3,7 +3,7 @@ + # ibus - The Input Bus + # + # Copyright (c) 2007-2015 Peng Huang +-# Copyright (c) 2015-2019 Takao Fujiwara ++# Copyright (c) 2015-2020 Takao Fujiwara + # Copyright (c) 2007-2017 Red Hat, Inc. + # + # This library is free software; you can redistribute it and/or +@@ -248,6 +248,7 @@ AM_CPPFLAGS += -DENABLE_EMOJI_DICT dictdir = $(pkgdatadir)/dicts --dict_DATA = dicts/emoji-en.dict LANG_FILES = $(basename $(notdir $(wildcard $(EMOJI_ANNOTATION_DIR)/*.xml))) -+EMOJI_DICT_FILES = $(patsubst %,dicts/emoji-%.dict,$(LANG_FILES)) -+dict_DATA = $(EMOJI_DICT_FILES) + EMOJI_DICT_FILES = $(patsubst %,dicts/emoji-%.dict,$(LANG_FILES)) ++# emoji-root.dict, emoji-sr_Cyrl.dict have no contents. + dict_DATA = $(EMOJI_DICT_FILES) noinst_PROGRAMS += emoji-parser - --dicts/emoji-en.dict: emoji-parser -+dicts/emoji-%.dict: emoji-parser - $(AM_V_at)if test x"$(LANG_FILES)" = x ; then \ - echo "WARNING: Not found $(EMOJI_ANNOTATION_DIR)/en.xml" 1>&2; \ - fi; \ -- for f in $(LANG_FILES) ; do \ -- if test -f dicts/emoji-$$f.dict; then \ -- echo "Already exists dicts/emoji-$$f.dict"; \ -- continue; \ -- fi; \ -- if test -f \ -- "$(EMOJI_ANNOTATION_DIR)/../annotationsDerived/$$f.xml" ; then \ -- xml_derived_option="--xml-derived $(EMOJI_ANNOTATION_DIR)/../annotationsDerived/$$f.xml"; \ -+ if test -f $@; then \ -+ echo "Already exists $@"; \ -+ exit 0; \ -+ fi; \ -+ if test -f \ -+ "$(EMOJI_ANNOTATION_DIR)/../annotationsDerived/$*.xml" ; then \ -+ xml_derived_option="--xml-derived $(EMOJI_ANNOTATION_DIR)/../annotationsDerived/$*.xml"; \ +@@ -265,6 +266,7 @@ dicts/emoji-%.dict: emoji-parser + xml_derived_option="--xml-derived $(EMOJI_ANNOTATION_DIR)/../annotationsDerived/$*.xml"; \ plus_comment="derived"; \ -- fi; \ -- if test x"$$f" = xen ; then \ -- $(builddir)/emoji-parser \ -- --unicode-emoji-dir $(UNICODE_EMOJI_DIR) \ -- --xml $(EMOJI_ANNOTATION_DIR)/$$f.xml \ -- $$xml_derived_option \ -- --xml-ascii $(top_srcdir)/data/annotations/en_ascii.xml \ -- --out-category ibusemojigen.h \ -- --out $@; \ -- else \ -- $(builddir)/emoji-parser \ -- --unicode-emoji-dir $(UNICODE_EMOJI_DIR) \ -- --xml $(EMOJI_ANNOTATION_DIR)/$$f.xml \ -- $$xml_derived_option \ -- --out dicts/emoji-$$f.dict; \ -- fi; \ -- echo "Generated $$plus_comment dicts/emoji-$$f.dict"; \ -- done -+ fi; \ -+ if test x"$*" = xen ; then \ -+ $(builddir)/emoji-parser \ -+ --unicode-emoji-dir $(UNICODE_EMOJI_DIR) \ -+ --xml $(EMOJI_ANNOTATION_DIR)/$*.xml \ -+ $$xml_derived_option \ -+ --xml-ascii $(top_srcdir)/data/annotations/en_ascii.xml \ -+ --out-category ibusemojigen.h \ -+ --out $@; \ + fi; \ ++ is_skip=0; \ + if test x"$*" = xen ; then \ + $(builddir)/emoji-parser \ + --unicode-emoji-dir $(UNICODE_EMOJI_DIR) \ +@@ -279,48 +281,43 @@ dicts/emoji-%.dict: emoji-parser + --xml $(EMOJI_ANNOTATION_DIR)/$*.xml \ + $$xml_derived_option \ + --out $@; \ ++ retval=$$?; \ ++ if test $$retval -eq 99 ; then \ ++ is_skip=1; \ ++ touch $@; \ ++ elif test $$retval -ne 0 ; then \ ++ echo "Fail to generate $@"; \ ++ abrt; \ ++ fi; \ + fi; \ +- echo "Generated $$plus_comment $@" ++ if test $$is_skip -eq 0 ; then \ ++ echo "Generated $$plus_comment $@"; \ + else \ -+ $(builddir)/emoji-parser \ -+ --unicode-emoji-dir $(UNICODE_EMOJI_DIR) \ -+ --xml $(EMOJI_ANNOTATION_DIR)/$*.xml \ -+ $$xml_derived_option \ -+ --out $@; \ -+ fi; \ -+ echo "Generated $$plus_comment $@" ++ echo "Skip $$plus_comment $@"; \ ++ fi; ibusemojigen.h: dicts/emoji-en.dict $(NULL) --- -2.23.0.rc1 - -From 02105c4d486283e6b561181d9c934d4d23f2d65e Mon Sep 17 00:00:00 2001 -From: fujiwarat -Date: Thu, 14 May 2020 15:48:34 +0900 -Subject: [PATCH] bus: Fix SEGV in bus_panel_proxy_focus_in() - -SEGV in BUS_IS_PANEL_PROXY() in bus_panel_proxy_focus_in() -Check if GDBusConnect is closed before bus_panel_proxy_new() is called. - -BUG=rhbz#1349148 -BUG=rhbz#1385349 ---- - bus/ibusimpl.c | 25 ++++++++++++++++++++----- - 1 file changed, 20 insertions(+), 5 deletions(-) - -diff --git a/bus/ibusimpl.c b/bus/ibusimpl.c -index 85761d30..e432e849 100644 ---- a/bus/ibusimpl.c -+++ b/bus/ibusimpl.c -@@ -2,8 +2,8 @@ + +-install-data-hook: $(dict_DATA) +- @$(NORMAL_INSTALL) ++# We put dicts/emoji-%.dict as the make target for the parallel build ++# and the make target has to be genarated even if the file size is zero. ++# But we don't want to install the zero size files and delete them ++# in install-data-hook. ++install-data-hook: + $(AM_V_at)list='$(wildcard dicts/*.dict)'; \ + test -n "$(dictdir)" || list=; \ +- if test -n "$$list"; then \ +- echo " $(MKDIR_P) '$(DESTDIR)$(dictdir)'"; \ +- $(MKDIR_P) "$(DESTDIR)$(dictdir)" || exit 1; \ +- fi; \ + for p in $$list; do \ +- if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ +- echo "$$d$$p"; \ ++ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ ++ if test -s "$$d$$p"; then continue; fi; \ ++ basename "$$p"; \ + done | \ +- while read files; do \ +- if [ x$(AM_DEFAULT_VERBOSITY) = x1 ] ; then \ +- echo "$(INSTALL_DATA) $$files '$(DESTDIR)$(dictdir)'"; \ +- else \ +- echo "Installing $$files"; \ +- fi; \ +- $(INSTALL_DATA) $$files "$(DESTDIR)$(dictdir)" || exit $$?; \ ++ while read file; do \ ++ if test -f "$(DESTDIR)$(dictdir)/$$file"; then \ ++ echo "Delete $(DESTDIR)$(dictdir)/$$file"; \ ++ rm "$(DESTDIR)$(dictdir)/$$file" || exit $$?; \ ++ fi; \ + done + +-dict__uninstall_files_from_dir = { \ +- test -z "$$files" \ +- || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ +- || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ +- cd "$$dir" && rm -f $$files; }; \ +- } +- +-# for make dist +-uninstall-hook: +- @$(NORMAL_UNINSTALL) +- $(AM_V_at)list='$(wildcard dicts/*.dict)'; \ +- test -n "$(dictdir)" || list=; \ +- files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ +- dir='$(DESTDIR)$(dictdir)'; $(dict__uninstall_files_from_dir) +- + emoji_parser_SOURCES = \ + emoji-parser.c \ + $(NULL) +diff --git a/src/emoji-parser.c b/src/emoji-parser.c +index 96a779c6..b117b1b4 100644 +--- a/src/emoji-parser.c ++++ b/src/emoji-parser.c +@@ -1,7 +1,7 @@ + /* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */ /* vim:set et sts=4: */ /* ibus - The Input Bus - * Copyright (C) 2008-2013 Peng Huang -- * Copyright (C) 2011-2019 Takao Fujiwara -- * Copyright (C) 2008-2019 Red Hat, Inc. -+ * Copyright (C) 2011-2020 Takao Fujiwara -+ * Copyright (C) 2008-2020 Red Hat, Inc. +- * Copyright (C) 2016-2018 Takao Fujiwara ++ * Copyright (C) 2016-2020 Takao Fujiwara + * Copyright (C) 2016 Red Hat, Inc. * * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public -@@ -464,13 +464,16 @@ _dbus_name_owner_changed_cb (BusDBusImpl *dbus, - else if (!g_strcmp0 (name, IBUS_SERVICE_PANEL_EXTENSION_EMOJI)) - panel_type = PANEL_TYPE_EXTENSION_EMOJI; +@@ -1294,6 +1294,8 @@ main (int argc, char *argv[]) + category_file_save (output_category, list); + if (list) + g_slist_free (list); ++ else ++ return 99; -- if (panel_type != PANEL_TYPE_NONE) { -+ do { -+ if (panel_type == PANEL_TYPE_NONE) -+ break; - if (g_strcmp0 (new_name, "") != 0) { - /* a Panel process is started. */ - BusConnection *connection; - BusInputContext *context = NULL; - BusPanelProxy **panel = (panel_type == PANEL_TYPE_PANEL) ? - &ibus->panel : &ibus->emoji_extension; -+ GDBusConnection *dbus_connection = NULL; - - if (*panel != NULL) { - ibus_proxy_destroy ((IBusProxy *)(*panel)); -@@ -479,9 +482,21 @@ _dbus_name_owner_changed_cb (BusDBusImpl *dbus, - g_assert (*panel == NULL); - } - -- connection = bus_dbus_impl_get_connection_by_name (BUS_DEFAULT_DBUS, new_name); -+ connection = bus_dbus_impl_get_connection_by_name (BUS_DEFAULT_DBUS, -+ new_name); - g_return_if_fail (connection != NULL); - -+ dbus_connection = bus_connection_get_dbus_connection (connection); -+ /* rhbz#1349148 rhbz#1385349 -+ * Avoid SEGV of BUS_IS_PANEL_PROXY (ibus->panel) -+ * This function is called during destroying the connection -+ * in this case? */ -+ if (dbus_connection == NULL || -+ g_dbus_connection_is_closed (dbus_connection)) { -+ new_name = ""; -+ break; -+ } -+ - *panel = bus_panel_proxy_new (connection, panel_type); - if (panel_type == PANEL_TYPE_EXTENSION_EMOJI) - ibus->enable_emoji_extension = FALSE; -@@ -535,7 +550,7 @@ _dbus_name_owner_changed_cb (BusDBusImpl *dbus, - } - } - } -- } -+ } while (0); - - bus_ibus_impl_component_name_owner_changed (ibus, name, old_name, new_name); + return 0; } -- 2.24.1 -From f591381e3c892947ecaffe9131b9039ab9014498 Mon Sep 17 00:00:00 2001 +From b72efea42d5f72e08e2774ae03027c246d41cab7 Mon Sep 17 00:00:00 2001 From: fujiwarat -Date: Thu, 14 May 2020 16:02:00 +0900 -Subject: [PATCH] bus: Fix SEGV in bus_dbus_impl_name_owner_changed() +Date: Fri, 20 Nov 2020 10:56:11 +0900 +Subject: [PATCH] src: Update IBusInputPurpose and IBusInputHints in + ibustypes.h -rhbz#1406699 SEGV in new_owner!=NULL in bus_dbus_impl_name_owner_changed() -which is called by bus_name_service_remove_owner() -If bus_connection_get_unique_name()==NULL, set new_owner="" in -bus_name_service_remove_owner() - -rhbz#1432252 SEGV in old_owner!=NULL in bus_dbus_impl_name_owner_changed() -which is called by bus_name_service_set_primary_owner() -If bus_connection_get_unique_name()==NULL, set old_owner="" in -bus_name_service_set_primary_owner() - -BUG=rhbz#1406699 -BUG=rhbz#1432252 +Copy IBUS_INPUT_PURPOSE_TERMINAL, IBUS_INPUT_PURPOSE_PIN, +IBUS_INPUT_PURPOSE_TERMINAL from GTK 3.24.14 --- - bus/dbusimpl.c | 27 +++++++++++++++++++++++---- - 1 file changed, 23 insertions(+), 4 deletions(-) + src/ibustypes.h | 77 ++++++++++++++++++++++++++++++++++--------------- + 1 file changed, 53 insertions(+), 24 deletions(-) -diff --git a/bus/dbusimpl.c b/bus/dbusimpl.c -index b54ef817..59787a80 100644 ---- a/bus/dbusimpl.c -+++ b/bus/dbusimpl.c -@@ -2,7 +2,8 @@ +diff --git a/src/ibustypes.h b/src/ibustypes.h +index 06370a27..798ad04d 100644 +--- a/src/ibustypes.h ++++ b/src/ibustypes.h +@@ -2,7 +2,7 @@ /* vim:set et sts=4: */ /* ibus - The Input Bus * Copyright (C) 2008-2013 Peng Huang -- * Copyright (C) 2008-2013 Red Hat, Inc. -+ * Copyright (C) 2015-2020 Takao Fujiwara +- * Copyright (C) 2008-2015 Red Hat, Inc. + * Copyright (C) 2008-2020 Red Hat, Inc. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public -@@ -344,6 +345,8 @@ bus_name_service_set_primary_owner (BusNameService *service, - BusConnectionOwner *owner, - BusDBusImpl *dbus) +@@ -241,29 +241,46 @@ typedef void (* IBusFreeFunc) (gpointer object); + * @IBUS_INPUT_PURPOSE_EMAIL: Edited field expects email address + * @IBUS_INPUT_PURPOSE_NAME: Edited field expects the name of a person + * @IBUS_INPUT_PURPOSE_PASSWORD: Like @IBUS_INPUT_PURPOSE_FREE_FORM, +- * but characters are hidden ++ * but characters are hidden + * @IBUS_INPUT_PURPOSE_PIN: Like @IBUS_INPUT_PURPOSE_DIGITS, but +- * characters are hidden ++ * characters are hidden ++ * @IBUS_INPUT_PURPOSE_TERMINAL: Allow any character, in addition to control ++ * codes. Since 1.5.24 + * + * Describes primary purpose of the input context. This information + * is particularly useful to implement intelligent behavior in + * engines, such as automatic input-mode switch and text prediction. + * ++ * Note that the purpose is not meant to impose a totally strict rule ++ * about allowed characters, and does not replace input validation. ++ * It is fine for an on-screen keyboard to let the user override the ++ * character set restriction that is expressed by the purpose. The ++ * application is expected to validate the entry contents, even if ++ * it specified a purpose. ++ * ++ * The difference between @IBUS_INPUT_PURPOSE_DIGITS and ++ * @IBUS_INPUT_PURPOSE_NUMBER is that the former accepts only digits ++ * while the latter also some punctuation (like commas or points, plus, ++ * minus) and “e” or “E” as in 3.14E+000. ++ * + * This enumeration may be extended in the future; engines should + * interpret unknown values as 'free form'. ++ * ++ * Since: 1.5.4 + */ + typedef enum { -+ gboolean has_old_owner = FALSE; -+ - g_assert (service != NULL); - g_assert (owner != NULL); - g_assert (dbus != NULL); -@@ -351,6 +354,13 @@ bus_name_service_set_primary_owner (BusNameService *service, - BusConnectionOwner *old = service->owners != NULL ? - (BusConnectionOwner *)service->owners->data : NULL; +- IBUS_INPUT_PURPOSE_FREE_FORM, +- IBUS_INPUT_PURPOSE_ALPHA, +- IBUS_INPUT_PURPOSE_DIGITS, +- IBUS_INPUT_PURPOSE_NUMBER, +- IBUS_INPUT_PURPOSE_PHONE, +- IBUS_INPUT_PURPOSE_URL, +- IBUS_INPUT_PURPOSE_EMAIL, +- IBUS_INPUT_PURPOSE_NAME, +- IBUS_INPUT_PURPOSE_PASSWORD, +- IBUS_INPUT_PURPOSE_PIN ++ IBUS_INPUT_PURPOSE_FREE_FORM, ++ IBUS_INPUT_PURPOSE_ALPHA, ++ IBUS_INPUT_PURPOSE_DIGITS, ++ IBUS_INPUT_PURPOSE_NUMBER, ++ IBUS_INPUT_PURPOSE_PHONE, ++ IBUS_INPUT_PURPOSE_URL, ++ IBUS_INPUT_PURPOSE_EMAIL, ++ IBUS_INPUT_PURPOSE_NAME, ++ IBUS_INPUT_PURPOSE_PASSWORD, ++ IBUS_INPUT_PURPOSE_PIN, ++ IBUS_INPUT_PURPOSE_TERMINAL + } IBusInputPurpose; -+ /* rhbz#1432252 If bus_connection_get_unique_name() == NULL, -+ * "Hello" method is not received yet. -+ */ -+ if (old != NULL && bus_connection_get_unique_name (old->conn) != NULL) { -+ has_old_owner = TRUE; -+ } -+ - if (old != NULL) { - g_signal_emit (dbus, - dbus_signals[NAME_LOST], -@@ -370,7 +380,8 @@ bus_name_service_set_primary_owner (BusNameService *service, - 0, - owner->conn, - service->name, -- old != NULL ? bus_connection_get_unique_name (old->conn) : "", -+ has_old_owner ? bus_connection_get_unique_name (old->conn) : -+ "", - bus_connection_get_unique_name (owner->conn)); - - if (old != NULL && old->do_not_queue != 0) { -@@ -427,6 +438,7 @@ bus_name_service_remove_owner (BusNameService *service, - BusDBusImpl *dbus) + /** +@@ -280,24 +297,36 @@ typedef enum + * first word of each sentence + * @IBUS_INPUT_HINT_INHIBIT_OSK: Suggest to not show an onscreen keyboard + * (e.g for a calculator that already has all the keys). +- * @IBUS_INPUT_HINT_VERTICAL_WRITING: The text is vertical. ++ * @IBUS_INPUT_HINT_VERTICAL_WRITING: The text is vertical. Since 1.5.11 ++ * @IBUS_INPUT_HINT_EMOJI: Suggest offering Emoji support. Since 1.5.24 ++ * @IBUS_INPUT_HINT_NO_EMOJI: Suggest not offering Emoji support. Since 1.5.24 + * + * Describes hints that might be taken into account by engines. Note + * that engines may already tailor their behaviour according to the + * #IBusInputPurpose of the entry. ++ * ++ * Some common sense is expected when using these flags - mixing ++ * @IBUS_INPUT_HINT_LOWERCASE with any of the uppercase hints makes no sense. ++ * ++ * This enumeration may be extended in the future; engines should ++ * ignore unknown values. ++ * ++ * Since: 1.5.4 + */ + typedef enum { - GSList *owners; -+ gboolean has_new_owner = FALSE; +- IBUS_INPUT_HINT_NONE = 0, +- IBUS_INPUT_HINT_SPELLCHECK = 1 << 0, +- IBUS_INPUT_HINT_NO_SPELLCHECK = 1 << 1, +- IBUS_INPUT_HINT_WORD_COMPLETION = 1 << 2, +- IBUS_INPUT_HINT_LOWERCASE = 1 << 3, +- IBUS_INPUT_HINT_UPPERCASE_CHARS = 1 << 4, +- IBUS_INPUT_HINT_UPPERCASE_WORDS = 1 << 5, +- IBUS_INPUT_HINT_UPPERCASE_SENTENCES = 1 << 6, +- IBUS_INPUT_HINT_INHIBIT_OSK = 1 << 7, +- IBUS_INPUT_HINT_VERTICAL_WRITING = 1 << 8 ++ IBUS_INPUT_HINT_NONE = 0, ++ IBUS_INPUT_HINT_SPELLCHECK = 1 << 0, ++ IBUS_INPUT_HINT_NO_SPELLCHECK = 1 << 1, ++ IBUS_INPUT_HINT_WORD_COMPLETION = 1 << 2, ++ IBUS_INPUT_HINT_LOWERCASE = 1 << 3, ++ IBUS_INPUT_HINT_UPPERCASE_CHARS = 1 << 4, ++ IBUS_INPUT_HINT_UPPERCASE_WORDS = 1 << 5, ++ IBUS_INPUT_HINT_UPPERCASE_SENTENCES = 1 << 6, ++ IBUS_INPUT_HINT_INHIBIT_OSK = 1 << 7, ++ IBUS_INPUT_HINT_VERTICAL_WRITING = 1 << 8, ++ IBUS_INPUT_HINT_EMOJI = 1 << 9, ++ IBUS_INPUT_HINT_NO_EMOJI = 1 << 10 + } IBusInputHints; - g_assert (service != NULL); - g_assert (owner != NULL); -@@ -439,6 +451,13 @@ bus_name_service_remove_owner (BusNameService *service, - BusConnectionOwner *_new = NULL; - if (owners->next != NULL) { - _new = (BusConnectionOwner *)owners->next->data; -+ /* rhbz#1406699 If bus_connection_get_unique_name() == NULL, -+ * "Hello" method is not received yet. -+ */ -+ if (_new != NULL && -+ bus_connection_get_unique_name (_new->conn) != NULL) { -+ has_new_owner = TRUE; -+ } - } - - if (dbus != NULL) { -@@ -447,7 +466,7 @@ bus_name_service_remove_owner (BusNameService *service, - 0, - owner->conn, - service->name); -- if (_new != NULL) { -+ if (has_new_owner) { - g_signal_emit (dbus, - dbus_signals[NAME_ACQUIRED], - 0, -@@ -460,7 +479,7 @@ bus_name_service_remove_owner (BusNameService *service, - _new != NULL ? _new->conn : NULL, - service->name, - bus_connection_get_unique_name (owner->conn), -- _new != NULL ? bus_connection_get_unique_name (_new->conn) : ""); -+ has_new_owner ? bus_connection_get_unique_name (_new->conn) : ""); - - } - } + #endif -- 2.24.1 diff --git a/ibus.spec b/ibus.spec index 6f74cf7..2cdcefd 100644 --- a/ibus.spec +++ b/ibus.spec @@ -5,8 +5,8 @@ %global dbus_python_version 0.83.0 Name: ibus -Version: 1.5.22 -Release: 3 +Version: 1.5.23 +Release: 1 Summary: Intelligent Input Bus for Linux OS License: LGPLv2+ URL: https://github.com/ibus/%name/wiki @@ -16,9 +16,7 @@ Source1: %{name}-xinput Source2: %{name}.conf.5 Patch0: %{name}-HEAD.patch Patch1: %{name}-1385349-segv-bus-proxy.patch -Patch6000: 02338ce751a1ed5b9b892fba530ec2fe211d314e.patch -Patch6001: aa558de80c224921753990806cf553428fbe7057.patch -Patch6002: b72efea42d5f72e08e2774ae03027c246d41cab7.patch +Patch2: 30a3641e19c541924959a5770dd784b4424288d4.patch BuildRequires: gettext-devel libtool glib2-doc gtk2-devel gtk3-devel dbus-glib-devel gtk-doc dconf-devel dbus-x11 python3-devel BuildRequires: dbus-python-devel >= %{dbus_python_version} desktop-file-utils python3-gobject vala vala-devel vala-tools @@ -42,8 +40,8 @@ Requires(postun): %{_sbindir}/alternatives Provides: ibus-gtk = %{version}-%{release} Obsoletes: ibus-gtk < %{version}-%{release} -Provides: ibus-gtk2 ibus-gtk3 ibus-setup ibus-wayland -Obsoletes: ibus-gtk2 ibus-gtk3 ibus-setup ibus-wayland +Provides: ibus-gtk2 = %{version}-%{release} ibus-gtk3 = %{version}-%{release} ibus-setup = %{version}-%{release} ibus-wayland = %{version}-%{release} +Obsoletes: ibus-gtk2 < %{version}-%{release} ibus-gtk3 < %{version}-%{release} ibus-setup < %{version}-%{release} ibus-wayland < %{version}-%{release} %global _xinputconf %{_sysconfdir}/X11/xinit/xinput.d/ibus.conf @@ -62,8 +60,8 @@ This package contains the libraries for IBus Summary: Development tools for ibus Requires: %{name} = %{version}-%{release} Requires: dbus-devel glib2-devel gobject-introspection-devel vala -Provides: ibus-devel-docs -Obsoletes: ibus-devel-docs +Provides: ibus-devel-docs = %{version}-%{release} +Obsoletes: ibus-devel-docs < %{version}-%{release} %package_help @@ -183,6 +181,9 @@ dconf update || : %{_datadir}/gtk-doc/html/* %changelog +* Fri Jan 29 2021 zhanzhimin - 1.5.23-1 +- update to 1.5.23 + * 20201121063007667187 patch-tracking 1.5.22-3 - append patch file of upstream repository from <02338ce751a1ed5b9b892fba530ec2fe211d314e> to