diff --git a/ibus-2178178-launch-emojier.patch b/ibus-2178178-launch-emojier.patch deleted file mode 100644 index 77e5f1c..0000000 --- a/ibus-2178178-launch-emojier.patch +++ /dev/null @@ -1,57 +0,0 @@ -From 7dbfdfa03d173d2e969880db4271d624992c2d75 Mon Sep 17 00:00:00 2001 -From: fujiwarat -Date: Fri, 17 Mar 2023 22:29:56 +0900 -Subject: [PATCH] ui/gtk3: Add workaround Emojier can be launched - -gnome-shell 44 prevents ibus from launching Emojier GUI. -This workaround can launch the Emojier but still cannot output -the selected emoji character to the focused application. - -So another workaround is needed with this patch. -I.e. Type Ctrl-Shift-c keys to copy the seleted emoji instead of -Enter key. - -BUG=https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/6518 ---- - ui/gtk3/emojier.vala | 7 +++---- - 1 file changed, 3 insertions(+), 4 deletions(-) - -diff --git a/ui/gtk3/emojier.vala b/ui/gtk3/emojier.vala -index 69fb8abe..c9cf4469 100644 ---- a/ui/gtk3/emojier.vala -+++ b/ui/gtk3/emojier.vala -@@ -2,7 +2,7 @@ - * - * ibus - The Input Bus - * -- * Copyright (c) 2017-2021 Takao Fujiwara -+ * Copyright (c) 2017-2023 Takao Fujiwara - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public -@@ -1799,12 +1799,12 @@ public class IBusEmojier : Gtk.ApplicationWindow { - - m_rebuilding_gui = true; - m_rebuilding_gui_timeout_id = -- GLib.Timeout.add_seconds(10, () => { -+ GLib.Timeout.add_seconds(5, () => { - if (!m_rebuilding_gui) { - m_rebuilding_gui_timeout_id = 0; - return false; - } -- warning("Rebuilding GUI is time out."); -+ debug("Rebuilding GUI is time out."); - m_rebuilding_gui = false; - m_rebuilding_gui_timeout_id = 0; - return false; -@@ -2459,7 +2459,6 @@ public class IBusEmojier : Gtk.ApplicationWindow { - - - public override bool focus_in_event(Gdk.EventFocus event) { -- m_rebuilding_gui = false; - return base.focus_in_event(event); - } - --- -2.39.2 - diff --git a/ibus-HEAD.patch b/ibus-HEAD.patch index 8e2e62f..b0a769c 100644 --- a/ibus-HEAD.patch +++ b/ibus-HEAD.patch @@ -859,3 +859,61 @@ index c2e8daa6..adc7f04a 100644 -- 2.39.2 +From 310c442b62b569255ffc39bca557920d06881ade Mon Sep 17 00:00:00 2001 +From: fujiwarat +Date: Tue, 2 May 2023 10:00:03 +0900 +Subject: [PATCH] ui/gtk3: Add workaround Emojier can be launched + +gnome-shell 44 prevents ibus from launching Emojier GUI. +This workaround can launch the Emojier but still cannot output +the selected emoji character to the focused application. + +So another workaround is needed with this patch. +I.e. Type Ctrl-Shift-c keys to copy the seleted emoji instead of +Enter key. + +BUG=https://github.com/ibus/ibus/issues/2509 +BUG=https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/6518 +--- + ui/gtk3/emojier.vala | 7 +++---- + 1 file changed, 3 insertions(+), 4 deletions(-) + +diff --git a/ui/gtk3/emojier.vala b/ui/gtk3/emojier.vala +index 69fb8abe..c9cf4469 100644 +--- a/ui/gtk3/emojier.vala ++++ b/ui/gtk3/emojier.vala +@@ -2,7 +2,7 @@ + * + * ibus - The Input Bus + * +- * Copyright (c) 2017-2021 Takao Fujiwara ++ * Copyright (c) 2017-2023 Takao Fujiwara + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public +@@ -1799,12 +1799,12 @@ public class IBusEmojier : Gtk.ApplicationWindow { + + m_rebuilding_gui = true; + m_rebuilding_gui_timeout_id = +- GLib.Timeout.add_seconds(10, () => { ++ GLib.Timeout.add_seconds(5, () => { + if (!m_rebuilding_gui) { + m_rebuilding_gui_timeout_id = 0; + return false; + } +- warning("Rebuilding GUI is time out."); ++ debug("Rebuilding GUI is time out."); + m_rebuilding_gui = false; + m_rebuilding_gui_timeout_id = 0; + return false; +@@ -2459,7 +2459,6 @@ public class IBusEmojier : Gtk.ApplicationWindow { + + + public override bool focus_in_event(Gdk.EventFocus event) { +- m_rebuilding_gui = false; + return base.focus_in_event(event); + } + +-- +2.40.0 + diff --git a/ibus-xx-cross-compile.patch b/ibus-xx-cross-compile.patch new file mode 100644 index 0000000..5ea1a53 --- /dev/null +++ b/ibus-xx-cross-compile.patch @@ -0,0 +1,398 @@ +From 3d69b8f402f954c5c832a564f9bcfba44d071a58 Mon Sep 17 00:00:00 2001 +From: oreo639 +Date: Fri, 12 May 2023 08:18:10 +0900 +Subject: [PATCH] configure: Fix cross compiling + +Use AX_PROG_CC_FOR_BUILD to get build CC/CFLAGS/LDFLAGS/etc. +Use PKG_PROG_PKG_CONFIG_FOR_BUILD to find build pkg-config binary. + +https://sourceware.org/autobook/autobook/autobook_143.html#Supporting-Cross-Compiler-in-Make + +BUG=https://github.com/ibus/ibus/issues/2479 +--- + configure.ac | 12 +++ + m4/Makefile.am | 2 + + m4/ax_prog_cc_for_build.m4 | 155 +++++++++++++++++++++++++++++++++++++ + m4/pkg_config_for_build.m4 | 20 +++++ + src/Makefile.am | 67 ++++++++++++---- + 5 files changed, 240 insertions(+), 16 deletions(-) + create mode 100644 m4/ax_prog_cc_for_build.m4 + create mode 100644 m4/pkg_config_for_build.m4 + +diff --git a/configure.ac b/configure.ac +index b3eacbcb..b286c62f 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -130,6 +130,7 @@ AC_PROG_CC_STDC + AM_PROG_VALAC([0.20]) + AC_PROG_INSTALL + AC_PROG_MAKE_SET ++AX_PROG_CC_FOR_BUILD + + # i18n stuff + AM_GNU_GETTEXT_VERSION([0.19.8]) +@@ -151,6 +152,9 @@ AC_CHECK_FUNCS(daemon) + AC_CHECK_LIB(c, dlclose, LIBDL="", [AC_CHECK_LIB(dl, dlclose, LIBDL="-ldl")]) + AC_SUBST(LIBDL) + ++# Check if cross compiling. ++AM_CONDITIONAL(CROSS_COMPILING, test "x$cross_compiling" = xyes) ++ + # Check endianness. + AC_C_BIGENDIAN([ENDIAN=big], [ENDIAN=little], [ENDIAN=unknown], [ENDIAN=big]) + if test x"$ENDIAN" != xlittle -a x"$ENDIAN" != xbig; then +@@ -184,6 +188,14 @@ AH_BOTTOM([ + #endif + ]) + ++if test "x$cross_compiling" = "xyes"; then ++PKG_PROG_PKG_CONFIG_FOR_BUILD ++GLIB_CFLAGS_FOR_BUILD=`$PKG_CONFIG_FOR_BUILD --cflags glib-2.0 gobject-2.0 gio-2.0 gio-unix-2.0 gthread-2.0` ++GLIB_LIBS_FOR_BUILD=`$PKG_CONFIG_FOR_BUILD --libs glib-2.0 gobject-2.0 gio-2.0 gio-unix-2.0 gthread-2.0` ++AC_SUBST(GLIB_CFLAGS_FOR_BUILD) ++AC_SUBST(GLIB_LIBS_FOR_BUILD) ++fi ++ + # --disable-tests option. + AC_ARG_ENABLE(tests, + AS_HELP_STRING([--disable-tests], +diff --git a/m4/Makefile.am b/m4/Makefile.am +index dcf84ac3..dcaaa350 100644 +--- a/m4/Makefile.am ++++ b/m4/Makefile.am +@@ -22,7 +22,9 @@ + + EXTRA_DIST = \ + as-version.m4 \ ++ ax_prog_cc_for_build.m4 \ + ibuslocale.m4 \ ++ pkg_config_for_build.m4 \ + vapigen.m4 \ + $(NULL) + +diff --git a/m4/ax_prog_cc_for_build.m4 b/m4/ax_prog_cc_for_build.m4 +new file mode 100644 +index 00000000..1db8d73f +--- /dev/null ++++ b/m4/ax_prog_cc_for_build.m4 +@@ -0,0 +1,155 @@ ++# =========================================================================== ++# https://www.gnu.org/software/autoconf-archive/ax_prog_cc_for_build.html ++# =========================================================================== ++# ++# SYNOPSIS ++# ++# AX_PROG_CC_FOR_BUILD ++# ++# DESCRIPTION ++# ++# This macro searches for a C compiler that generates native executables, ++# that is a C compiler that surely is not a cross-compiler. This can be ++# useful if you have to generate source code at compile-time like for ++# example GCC does. ++# ++# The macro sets the CC_FOR_BUILD and CPP_FOR_BUILD macros to anything ++# needed to compile or link (CC_FOR_BUILD) and preprocess (CPP_FOR_BUILD). ++# The value of these variables can be overridden by the user by specifying ++# a compiler with an environment variable (like you do for standard CC). ++# ++# It also sets BUILD_EXEEXT and BUILD_OBJEXT to the executable and object ++# file extensions for the build platform, and GCC_FOR_BUILD to `yes' if ++# the compiler we found is GCC. All these variables but GCC_FOR_BUILD are ++# substituted in the Makefile. ++# ++# LICENSE ++# ++# Copyright (c) 2008 Paolo Bonzini ++# ++# Copying and distribution of this file, with or without modification, are ++# permitted in any medium without royalty provided the copyright notice ++# and this notice are preserved. This file is offered as-is, without any ++# warranty. ++ ++#serial 21 ++ ++AU_ALIAS([AC_PROG_CC_FOR_BUILD], [AX_PROG_CC_FOR_BUILD]) ++AC_DEFUN([AX_PROG_CC_FOR_BUILD], [dnl ++AC_REQUIRE([AC_PROG_CC])dnl ++AC_REQUIRE([AC_PROG_CPP])dnl ++AC_REQUIRE([AC_CANONICAL_BUILD])dnl ++ ++dnl Use the standard macros, but make them use other variable names ++dnl ++pushdef([ac_cv_prog_CPP], ac_cv_build_prog_CPP)dnl ++pushdef([ac_cv_prog_cc_c89], ac_cv_build_prog_cc_c89)dnl ++pushdef([ac_cv_prog_cc_c99], ac_cv_build_prog_cc_c99)dnl ++pushdef([ac_cv_prog_cc_c11], ac_cv_build_prog_cc_c11)dnl ++pushdef([ac_cv_prog_gcc], ac_cv_build_prog_gcc)dnl ++pushdef([ac_cv_prog_cc_works], ac_cv_build_prog_cc_works)dnl ++pushdef([ac_cv_prog_cc_cross], ac_cv_build_prog_cc_cross)dnl ++pushdef([ac_cv_prog_cc_g], ac_cv_build_prog_cc_g)dnl ++pushdef([ac_cv_c_compiler_gnu], ac_cv_build_c_compiler_gnu)dnl ++pushdef([ac_cv_exeext], ac_cv_build_exeext)dnl ++pushdef([ac_cv_objext], ac_cv_build_objext)dnl ++pushdef([ac_exeext], ac_build_exeext)dnl ++pushdef([ac_objext], ac_build_objext)dnl ++pushdef([CC], CC_FOR_BUILD)dnl ++pushdef([CPP], CPP_FOR_BUILD)dnl ++pushdef([GCC], GCC_FOR_BUILD)dnl ++pushdef([CFLAGS], CFLAGS_FOR_BUILD)dnl ++pushdef([CPPFLAGS], CPPFLAGS_FOR_BUILD)dnl ++pushdef([EXEEXT], BUILD_EXEEXT)dnl ++pushdef([LDFLAGS], LDFLAGS_FOR_BUILD)dnl ++pushdef([OBJEXT], BUILD_OBJEXT)dnl ++pushdef([host], build)dnl ++pushdef([host_alias], build_alias)dnl ++pushdef([host_cpu], build_cpu)dnl ++pushdef([host_vendor], build_vendor)dnl ++pushdef([host_os], build_os)dnl ++pushdef([ac_cv_host], ac_cv_build)dnl ++pushdef([ac_cv_host_alias], ac_cv_build_alias)dnl ++pushdef([ac_cv_host_cpu], ac_cv_build_cpu)dnl ++pushdef([ac_cv_host_vendor], ac_cv_build_vendor)dnl ++pushdef([ac_cv_host_os], ac_cv_build_os)dnl ++pushdef([ac_tool_prefix], ac_build_tool_prefix)dnl ++pushdef([am_cv_CC_dependencies_compiler_type], am_cv_build_CC_dependencies_compiler_type)dnl ++pushdef([am_cv_prog_cc_c_o], am_cv_build_prog_cc_c_o)dnl ++pushdef([cross_compiling], cross_compiling_build)dnl ++ ++cross_compiling_build=no ++ ++ac_build_tool_prefix= ++AS_IF([test -n "$build"], [ac_build_tool_prefix="$build-"], ++ [test -n "$build_alias"],[ac_build_tool_prefix="$build_alias-"]) ++ ++AC_LANG_PUSH([C]) ++ ++dnl The pushdef([ac_cv_c_compiler_gnu], ...) currently does not cover ++dnl the use of this variable in _AC_LANG_COMPILER_GNU called by ++dnl AC_PROG_CC. Unset this cache variable temporarily as a workaround. ++was_set_c_compiler_gnu=${[ac_cv_c_compiler_gnu]+y} ++AS_IF([test ${was_set_c_compiler_gnu}], ++ [saved_c_compiler_gnu=$[ac_cv_c_compiler_gnu] ++ AS_UNSET([[ac_cv_c_compiler_gnu]])]) ++ ++AC_PROG_CC ++ ++dnl Restore ac_cv_c_compiler_gnu ++AS_IF([test ${was_set_c_compiler_gnu}], ++ [[ac_cv_c_compiler_gnu]=$[saved_c_compiler_gnu]]) ++ ++_AC_COMPILER_EXEEXT ++_AC_COMPILER_OBJEXT ++AC_PROG_CPP ++ ++dnl Restore the old definitions ++dnl ++popdef([cross_compiling])dnl ++popdef([am_cv_prog_cc_c_o])dnl ++popdef([am_cv_CC_dependencies_compiler_type])dnl ++popdef([ac_tool_prefix])dnl ++popdef([ac_cv_host_os])dnl ++popdef([ac_cv_host_vendor])dnl ++popdef([ac_cv_host_cpu])dnl ++popdef([ac_cv_host_alias])dnl ++popdef([ac_cv_host])dnl ++popdef([host_os])dnl ++popdef([host_vendor])dnl ++popdef([host_cpu])dnl ++popdef([host_alias])dnl ++popdef([host])dnl ++popdef([OBJEXT])dnl ++popdef([LDFLAGS])dnl ++popdef([EXEEXT])dnl ++popdef([CPPFLAGS])dnl ++popdef([CFLAGS])dnl ++popdef([GCC])dnl ++popdef([CPP])dnl ++popdef([CC])dnl ++popdef([ac_objext])dnl ++popdef([ac_exeext])dnl ++popdef([ac_cv_objext])dnl ++popdef([ac_cv_exeext])dnl ++popdef([ac_cv_c_compiler_gnu])dnl ++popdef([ac_cv_prog_cc_g])dnl ++popdef([ac_cv_prog_cc_cross])dnl ++popdef([ac_cv_prog_cc_works])dnl ++popdef([ac_cv_prog_cc_c89])dnl ++popdef([ac_cv_prog_gcc])dnl ++popdef([ac_cv_prog_CPP])dnl ++ ++dnl restore global variables ac_ext, ac_cpp, ac_compile, ++dnl ac_link, ac_compiler_gnu (dependant on the current ++dnl language after popping): ++AC_LANG_POP([C]) ++ ++dnl Finally, set Makefile variables ++dnl ++AC_SUBST(BUILD_EXEEXT)dnl ++AC_SUBST(BUILD_OBJEXT)dnl ++AC_SUBST([CFLAGS_FOR_BUILD])dnl ++AC_SUBST([CPPFLAGS_FOR_BUILD])dnl ++AC_SUBST([LDFLAGS_FOR_BUILD])dnl ++]) +diff --git a/m4/pkg_config_for_build.m4 b/m4/pkg_config_for_build.m4 +new file mode 100644 +index 00000000..0422f482 +--- /dev/null ++++ b/m4/pkg_config_for_build.m4 +@@ -0,0 +1,20 @@ ++# PKG_PROG_PKG_CONFIG_FOR_BUILD([MIN-VERSION]) ++# ---------------------------------- ++AC_DEFUN([PKG_PROG_PKG_CONFIG_FOR_BUILD], ++[m4_pattern_allow([^PKG_CONFIG_FOR_BUILD$]) ++AC_ARG_VAR([PKG_CONFIG_FOR_BUILD], [path to build system's pkg-config utility]) ++ ++if test "x$ac_cv_env_PKG_CONFIG_FOR_BUILD_set" != "xset"; then ++ AC_PATH_PROG([PKG_CONFIG_FOR_BUILD], [pkg-config]) ++fi ++if test -n "$PKG_CONFIG_FOR_BUILD"; then ++ _pkg_for_build_min_version=m4_default([$1], [0.9.0]) ++ AC_MSG_CHECKING([build system's pkg-config is at least version $_pkg_min_version]) ++ if $PKG_CONFIG_FOR_BUILD --atleast-pkgconfig-version $_pkg_min_version; then ++ AC_MSG_RESULT([yes]) ++ else ++ AC_MSG_RESULT([no]) ++ PKG_CONFIG_FOR_BUILD="" ++ fi ++fi[]dnl ++])# PKG_PROG_PKG_CONFIG_FOR_BUILD +diff --git a/src/Makefile.am b/src/Makefile.am +index adc7f04a..68dde2f3 100644 +--- a/src/Makefile.am ++++ b/src/Makefile.am +@@ -46,9 +46,6 @@ noinst_PROGRAMS = gen-internal-compose-table + # C preprocessor flags + AM_CPPFLAGS = \ + -DG_LOG_DOMAIN=\"IBUS\" \ +- @GLIB2_CFLAGS@ \ +- @GOBJECT2_CFLAGS@ \ +- @GIO2_CFLAGS@ \ + -DIBUS_CACHE_DIR=\""$(localstatedir)/cache/ibus"\" \ + -DIBUS_DATA_DIR=\"$(pkgdatadir)\" \ + -DIBUS_DISABLE_DEPRECATION_WARNINGS \ +@@ -65,6 +62,11 @@ libibus_1_0_la_LIBADD = \ + @GOBJECT2_LIBS@ \ + @GIO2_LIBS@ \ + $(NULL) ++libibus_1_0_la_CFLAGS = \ ++ @GLIB2_CFLAGS@ \ ++ @GOBJECT2_CFLAGS@ \ ++ @GIO2_CFLAGS@ \ ++ $(NULL) + libibus_1_0_la_LDFLAGS = \ + -no-undefined \ + -export-symbols-regex "ibus_.*" \ +@@ -107,7 +109,7 @@ ibus_sources = \ + ibusxevent.c \ + ibusxml.c \ + $(NULL) +-libibus_1_0_la_SOURCES = \ ++libibus_sources = \ + ibuscomposetable.c \ + ibusenumtypes.c \ + ibusmarshalers.c \ +@@ -166,6 +168,7 @@ ibus_headers = \ + ibusxevent.h \ + ibusxml.h \ + $(NULL) ++libibus_1_0_la_SOURCES = $(libibus_sources) + ibusincludedir = $(includedir)/ibus-@IBUS_API_VERSION@ + ibus_public_headers = \ + $(ibus_headers) \ +@@ -188,6 +191,35 @@ noinst_HEADERS = \ + $(ibus_private_headers) \ + $(NULL) + ++if CROSS_COMPILING ++# Avoid libtool when building native libraries ++libnativeibus = ++parser_extra_sources = $(libibus_sources) ++ ++glib_cflags = @GLIB_CFLAGS_FOR_BUILD@ ++glib_libs = @GLIB_LIBS_FOR_BUILD@ ++ ++$(noinst_PROGRAMS): CC=$(CC_FOR_BUILD) ++$(noinst_PROGRAMS): CCLD=$(CC_FOR_BUILD) ++$(noinst_PROGRAMS): CFLAGS=$(CFLAGS_FOR_BUILD) ++$(noinst_PROGRAMS): CPPFLAGS=$(CPPFLAGS_FOR_BUILD) ++$(noinst_PROGRAMS): LDFLAGS=$(LDFLAGS_FOR_BUILD) ++else ++libnativeibus = $(libibus) ++parser_extra_sources = ++ ++glib_libs = \ ++ @GLIB2_LIBS@ \ ++ @GOBJECT2_LIBS@ \ ++ @GIO2_LIBS@ \ ++ $(NULL) ++glib_cflags = \ ++ @GLIB2_CFLAGS@ \ ++ @GOBJECT2_CFLAGS@ \ ++ @GIO2_CFLAGS@ \ ++ $(NULL) ++endif ++ + gen_internal_compose_table_SOURCES = \ + gencomposetable.c \ + ibuscomposetable.c \ +@@ -196,11 +228,12 @@ gen_internal_compose_table_SOURCES = \ + ibuskeyuni.c \ + ibusenumtypes.h \ + $(NULL) +-gen_internal_compose_table_CFLAGS = $(AM_CFLAGS) ++gen_internal_compose_table_CFLAGS = \ ++ $(AM_CFLAGS) \ ++ $(glib_cflags) \ ++ $(NULL) + gen_internal_compose_table_LDADD = \ +- @GLIB2_LIBS@ \ +- @GOBJECT2_LIBS@ \ +- @GIO2_LIBS@ \ ++ $(glib_libs) \ + $(NULL) + + BUILT_SOURCES = \ +@@ -363,15 +396,15 @@ install-data-hook: + + emoji_parser_SOURCES = \ + emoji-parser.c \ ++ $(parser_extra_sources) \ + $(NULL) + emoji_parser_CFLAGS = \ +- $(GLIB2_CFLAGS) \ +- $(GOBJECT2_CFLAGS) \ ++ $(AM_CFLAGS) \ ++ $(glib_cflags) \ + $(NULL) + emoji_parser_LDADD = \ +- $(libibus) \ +- $(GLIB2_LIBS) \ +- $(GOBJECT2_LIBS) \ ++ $(libnativeibus) \ ++ $(glib_libs) \ + $(NULL) + endif + +@@ -408,13 +441,15 @@ ibusunicodegen.h: + + unicode_parser_SOURCES = \ + unicode-parser.c \ ++ $(parser_extra_sources) \ + $(NULL) + unicode_parser_CFLAGS = \ +- $(GLIB2_CFLAGS) \ ++ $(AM_CFLAGS) \ ++ $(glib_cflags) \ + $(NULL) + unicode_parser_LDADD = \ +- $(GLIB2_LIBS) \ +- $(libibus) \ ++ $(glib_libs) \ ++ $(libnativeibus) \ + $(NULL) + endif + +-- +2.40.0 + diff --git a/ibus.spec b/ibus.spec index c533316..44b9841 100644 --- a/ibus.spec +++ b/ibus.spec @@ -65,8 +65,8 @@ Patch1: %{name}-1385349-segv-bus-proxy.patch # Use mutter window manager in RHEL CI Patch2: %{name}-xx-desktop-testing-mutter.patch %endif -# Half fix of #2178178 -Patch3: %{name}-2178178-launch-emojier.patch +# https://github.com/ibus/ibus/issues/2479 +Patch3: %{name}-xx-cross-compile.patch # autoreconf requires autopoint but not po.m4 BuildRequires: gettext-devel @@ -559,6 +559,9 @@ dconf update || : %{_datadir}/installed-tests/ibus %changelog +* Fri May 12 2023 Takao Fujiwara - 1.5.28-5 +- Fix cross compiling with gen-internal-compose-table + * Wed May 10 2023 Tomas Popela - 1.5.28-5 - Drop BR on dbus-glib as the project is using already GDBus