From 84d8da54281c5e9ac1c9f8165a6bf854d471b580 Mon Sep 17 00:00:00 2001 From: Takao Fujiwara Date: Thu, 2 Jun 2011 03:07:41 +0900 Subject: [PATCH] Updated to 1.3.99.20110419 - Updated ibus-541492-xkb.patch Updated ibus-1.0.pc for ibus-xkb --- .gitignore | 2 + ibus-541492-xkb.patch | 37 +++++-- ibus-HEAD.patch | 229 +++++++++++++++++++++++++++++++++++++++--- ibus.spec | 14 ++- sources | 4 +- 5 files changed, 257 insertions(+), 29 deletions(-) diff --git a/.gitignore b/.gitignore index fa5a886..58ef980 100644 --- a/.gitignore +++ b/.gitignore @@ -12,3 +12,5 @@ ibus-1.3.6.tar.gz /ibus-1.3.99.20110408.tar.gz /gnome-shell-ibus-plugins-20110317.tar.bz2 /ibus_master_da.po +/ibus-1.3.99.20110419.tar.gz +/gnome-shell-ibus-plugins-20110601.tar.bz2 diff --git a/ibus-541492-xkb.patch b/ibus-541492-xkb.patch index 6c61c81..9100d48 100644 --- a/ibus-541492-xkb.patch +++ b/ibus-541492-xkb.patch @@ -1,12 +1,13 @@ -From 63051a74572fcd4caf496c87a3eebb058ba93bc0 Mon Sep 17 00:00:00 2001 +From b6b83e9484abad910271b15222d3f76f206a1ff6 Mon Sep 17 00:00:00 2001 From: fujiwarat -Date: Thu, 26 May 2011 14:55:31 +0900 +Date: Wed, 1 Jun 2011 18:24:10 +0900 Subject: [PATCH] Add XKB layouts --- Makefile.am | 7 + - configure.ac | 53 ++++ + configure.ac | 56 ++++ data/ibus.schemas.in | 36 +++ + ibus-1.0.pc.in | 2 + ibus/Makefile.am | 26 ++ ibus/__init__.py | 2 + ibus/bus.py | 3 + @@ -31,7 +32,7 @@ Subject: [PATCH] Add XKB layouts xkb/xkblib.h | 40 +++ xkb/xkbxml.c | 696 ++++++++++++++++++++++++++++++++++++++++++++ xkb/xkbxml.h | 189 ++++++++++++ - 27 files changed, 3803 insertions(+), 6 deletions(-) + 28 files changed, 3808 insertions(+), 6 deletions(-) create mode 100644 ibus/xkblayout.py.in create mode 100644 ibus/xkbxml.py.in create mode 100644 setup/xkbsetup.py @@ -72,10 +73,10 @@ index 29c57e1..dbe0b6b 100644 $(NULL) diff --git a/configure.ac b/configure.ac -index 8da8c6e..b3cdb0b 100644 +index 8da8c6e..ce1526c 100644 --- a/configure.ac +++ b/configure.ac -@@ -185,6 +185,57 @@ else +@@ -185,6 +185,60 @@ else enable_xim="no (disabled, use --enable-xim to enable)" fi @@ -96,9 +97,12 @@ index 8da8c6e..b3cdb0b 100644 + [XKB_LIBS="-lxkbfile"] + ) + AC_DEFINE(HAVE_XKB, 1, [define to 1 if you have xkbfile]) ++ HAVE_IBUS_XKB=true +else + enable_xkb="no (disabled, use --enable-xkb to enable)" ++ HAVE_IBUS_XKB=false +fi ++AC_SUBST(HAVE_IBUS_XKB) + +# define XKB rules file +AC_ARG_WITH(xkb-rules-xml, @@ -133,7 +137,7 @@ index 8da8c6e..b3cdb0b 100644 # GObject introspection GOBJECT_INTROSPECTION_CHECK([0.6.8]) -@@ -430,6 +481,7 @@ gconf/Makefile +@@ -430,6 +484,7 @@ gconf/Makefile gconf/gconf.xml.in bindings/Makefile bindings/vala/Makefile @@ -141,7 +145,7 @@ index 8da8c6e..b3cdb0b 100644 ]) AC_OUTPUT -@@ -445,6 +497,7 @@ Build options: +@@ -445,6 +500,7 @@ Build options: Build gtk2 immodule $enable_gtk2 Build gtk3 immodule $enable_gtk3 Build XIM agent server $enable_xim @@ -196,6 +200,19 @@ index b75295e..7ca4899 100644 /schemas/desktop/ibus/panel/use_custom_font /desktop/ibus/panel/use_custom_font ibus +diff --git a/ibus-1.0.pc.in b/ibus-1.0.pc.in +index 9f593ab..51eb67a 100644 +--- a/ibus-1.0.pc.in ++++ b/ibus-1.0.pc.in +@@ -4,6 +4,8 @@ libdir=@libdir@ + includedir=@includedir@ + datadir=@datadir@ + pkgdatadir=@datadir@/ibus ++have_ibus_xkb=@HAVE_IBUS_XKB@ ++ibus_xkb=@libexecdir@/ibus-xkb + + Name: IBus + Description: IBus Library diff --git a/ibus/Makefile.am b/ibus/Makefile.am index c71df1b..508c98f 100644 --- a/ibus/Makefile.am @@ -280,7 +297,7 @@ index 678d517..7de56fc 100644 diff --git a/ibus/xkblayout.py.in b/ibus/xkblayout.py.in new file mode 100644 -index 0000000..7685776 +index 0000000..6097ed1 --- /dev/null +++ b/ibus/xkblayout.py.in @@ -0,0 +1,225 @@ @@ -416,7 +433,7 @@ index 0000000..7685776 + self.__default_option = self.get_option() + if (self.__time_lag_session_xkb_layout == True or \ + self.__time_lag_session_xkb_option == True ) and \ -+ (self.__time_lag_session_xkb_timer - time.time() \ ++ (time.time() - self.__time_lag_session_xkb_timer \ + > XKB_SESSION_TIME_OUT): + self.__time_lag_session_xkb_layout = False + self.__time_lag_session_xkb_option = False diff --git a/ibus-HEAD.patch b/ibus-HEAD.patch index d5e797d..c6a8da5 100644 --- a/ibus-HEAD.patch +++ b/ibus-HEAD.patch @@ -1,25 +1,228 @@ -From 92246e8ffd4d1f4534ac7b487d599e3b2fa30fc0 Mon Sep 17 00:00:00 2001 -From: fujiwarat -Date: Tue, 19 Apr 2011 14:22:04 +0900 -Subject: [PATCH] Call waitpid when ibus-daemon restarts. +From 80e5bd0785ca91a70f0b5fe511a3bd8e143d8d05 Mon Sep 17 00:00:00 2001 +From: Takao Fujiwara +Date: Wed, 27 Apr 2011 07:48:50 -0400 +Subject: [PATCH] Fix the zombie process of ibus-gconf when ibus-daemon + restarts. +- Fix the typo in bus_dbus_impl_destroy() (dbusimpl.c) +- Modify bus_server_run() and _ibus_exit() (ibusimpl.c, server.c) + bus_ibus_impl_destroy() needs to be called so that waitpid() + prevents processes from becoming zombie. +- Change the declaration of bus_server_quit(). (server.h) + +BUG=redhat#697471 +TEST=Linux desktop + +Review URL: http://codereview.appspot.com/4440059 +Patch from Takao Fujiwara . --- - bus/ibusimpl.c | 2 ++ - 1 files changed, 2 insertions(+), 0 deletions(-) + bus/dbusimpl.c | 5 ++--- + bus/ibusimpl.c | 40 +--------------------------------------- + bus/server.c | 50 +++++++++++++++++++++++++++++++++++++++++++++++++- + bus/server.h | 3 ++- + src/ibusbus.c | 8 +++++++- + 5 files changed, 61 insertions(+), 45 deletions(-) +diff --git a/bus/dbusimpl.c b/bus/dbusimpl.c +index d67a3ce..5616222 100644 +--- a/bus/dbusimpl.c ++++ b/bus/dbusimpl.c +@@ -577,11 +577,10 @@ bus_dbus_impl_destroy (BusDBusImpl *dbus) + dbus->rules = NULL; + + for (p = dbus->connections; p != NULL; p = p->next) { +- GDBusConnection *connection = G_DBUS_CONNECTION (p->data); ++ BusConnection *connection = BUS_CONNECTION (p->data); + g_signal_handlers_disconnect_by_func (connection, + bus_dbus_impl_connection_destroy_cb, dbus); +- /* FIXME should handle result? */ +- g_dbus_connection_close (connection, NULL, NULL, NULL); ++ ibus_object_destroy (IBUS_OBJECT (connection)); + g_object_unref (connection); + } + g_list_free (dbus->connections); diff --git a/bus/ibusimpl.c b/bus/ibusimpl.c -index a7ae52b..0b3e90e 100644 +index a7ae52b..b356b2c 100644 --- a/bus/ibusimpl.c +++ b/bus/ibusimpl.c -@@ -1678,6 +1678,8 @@ _ibus_exit (BusIBusImpl *ibus, +@@ -24,9 +24,7 @@ + #include + #include + #include +-#include + #include +-#include + #include + #include "types.h" + #include "ibusimpl.h" +@@ -937,7 +935,6 @@ bus_ibus_impl_destroy (BusIBusImpl *ibus) + ibus->fake_context = NULL; + } - g_dbus_method_invocation_return_value (invocation, NULL); +- bus_server_quit (); + IBUS_OBJECT_CLASS (bus_ibus_impl_parent_class)->destroy (IBUS_OBJECT (ibus)); + } -+ bus_ibus_impl_destroy (ibus); -+ - /* Make sure the reply has been sent out before exit */ +@@ -1682,43 +1679,8 @@ _ibus_exit (BusIBusImpl *ibus, g_dbus_connection_flush_sync (g_dbus_method_invocation_get_connection (invocation), NULL, + NULL); +- bus_server_quit (); + +- if (!restart) { +- exit (0); +- } +- else { +- extern gchar **g_argv; +- gchar *exe; +- gint fd; +- +- exe = g_strdup_printf ("/proc/%d/exe", getpid ()); +- exe = g_file_read_link (exe, NULL); +- +- if (exe == NULL) +- exe = BINDIR "/ibus-daemon"; +- +- /* close all fds except stdin, stdout, stderr */ +- for (fd = 3; fd <= sysconf (_SC_OPEN_MAX); fd ++) { +- close (fd); +- } +- +- execv (exe, g_argv); +- +- /* If the server binary is replaced while the server is running, +- * "readlink /proc/[pid]/exe" might return a path with " (deleted)" +- * suffix. */ +- const gchar suffix[] = " (deleted)"; +- if (g_str_has_suffix (exe, suffix)) { +- exe [strlen (exe) - sizeof (suffix) + 1] = '\0'; +- execv (exe, g_argv); +- } +- g_warning ("execv %s failed!", g_argv[0]); +- exit (-1); +- } +- +- /* should not reach here */ +- g_assert_not_reached (); ++ bus_server_quit (restart); + } + + /** +diff --git a/bus/server.c b/bus/server.c +index d180513..c2ab9a4 100644 +--- a/bus/server.c ++++ b/bus/server.c +@@ -21,6 +21,8 @@ + */ + #include "server.h" + #include ++#include ++#include + #include "dbusimpl.h" + #include "ibusimpl.h" + #include "option.h" +@@ -30,6 +32,40 @@ static GMainLoop *mainloop = NULL; + static BusDBusImpl *dbus = NULL; + static BusIBusImpl *ibus = NULL; + static gchar *address = NULL; ++static gboolean _restart = FALSE; ++ ++static void ++_restart_server (void) ++{ ++ extern gchar **g_argv; ++ gchar *exe; ++ gint fd; ++ ++ exe = g_strdup_printf ("/proc/%d/exe", getpid ()); ++ exe = g_file_read_link (exe, NULL); ++ ++ if (exe == NULL) ++ exe = BINDIR "/ibus-daemon"; ++ ++ /* close all fds except stdin, stdout, stderr */ ++ for (fd = 3; fd <= sysconf (_SC_OPEN_MAX); fd ++) { ++ close (fd); ++ } ++ ++ _restart = FALSE; ++ execv (exe, g_argv); ++ ++ /* If the server binary is replaced while the server is running, ++ * "readlink /proc/[pid]/exe" might return a path with " (deleted)" ++ * suffix. */ ++ const gchar suffix[] = " (deleted)"; ++ if (g_str_has_suffix (exe, suffix)) { ++ exe [strlen (exe) - sizeof (suffix) + 1] = '\0'; ++ execv (exe, g_argv); ++ } ++ g_warning ("execv %s failed!", g_argv[0]); ++ exit (-1); ++} + + /** + * bus_new_connection_cb: +@@ -112,11 +148,23 @@ bus_server_run (void) + mainloop = NULL; + g_free (address); + address = NULL; ++ ++ /* When _ibus_exit() is called, bus_ibus_impl_destroy() needs ++ * to be called so that waitpid() prevents the processes from ++ * becoming the daemons. So we run execv() after ++ * ibus_object_destroy(ibus) is called here. */ ++ if (_restart) { ++ _restart_server (); ++ ++ /* should not reach here */ ++ g_assert_not_reached (); ++ } + } + + void +-bus_server_quit (void) ++bus_server_quit (gboolean restart) + { ++ _restart = restart; + if (mainloop) + g_main_loop_quit (mainloop); + } +diff --git a/bus/server.h b/bus/server.h +index 6dfd79a..e1cb3ec 100644 +--- a/bus/server.h ++++ b/bus/server.h +@@ -43,10 +43,11 @@ void bus_server_run (void); + + /** + * bus_server_quit: ++ * @restart: TRUE if ibus-daemon restarts. + * + * Quit the glib main loop. + */ +-void bus_server_quit (void); ++void bus_server_quit (gboolean restart); + + /** + * bus_server_get_address: +diff --git a/src/ibusbus.c b/src/ibusbus.c +index 0e9418e..39ad784 100644 +--- a/src/ibusbus.c ++++ b/src/ibusbus.c +@@ -236,7 +236,13 @@ _connection_closed_cb (GDBusConnection *connection, + IBusBus *bus) + { + if (error) { +- g_warning ("_connection_closed_cb: %s", error->message); ++ /* We replaced g_warning with g_debug here because ++ * currently when ibus-daemon restarts, GTK client calls this and ++ * _g_dbus_worker_do_read_cb() sets the error message: ++ * "Underlying GIOStream returned 0 bytes on an async read" ++ * http://git.gnome.org/browse/glib/tree/gio/gdbusprivate.c#n693 ++ * However we think the error message is almost harmless. */ ++ g_debug ("_connection_closed_cb: %s", error->message); + } + + g_assert (bus->priv->connection == connection); -- -1.7.4.2 +1.7.4.4 diff --git a/ibus.spec b/ibus.spec index 9c35bf2..6e3049e 100644 --- a/ibus.spec +++ b/ibus.spec @@ -12,8 +12,8 @@ %define gnome_icon_theme_legacy_version 2.91.6 Name: ibus -Version: 1.3.99.20110408 -Release: 5%{?dist} +Version: 1.3.99.20110419 +Release: 1%{?dist} Summary: Intelligent Input Bus for Linux OS License: LGPLv2+ Group: System Environment/Libraries @@ -21,7 +21,7 @@ URL: http://code.google.com/p/ibus/ Source0: http://ibus.googlecode.com/files/%{name}-%{version}.tar.gz Source1: xinput-ibus %if %have_gjsfile -Source2: http://fujiwara.fedorapeople.org/ibus/gnome-shell/gnome-shell-ibus-plugins-20110317.tar.bz2 +Source2: http://fujiwara.fedorapeople.org/ibus/gnome-shell/gnome-shell-ibus-plugins-20110601.tar.bz2 %endif Source3: https://www.transifex.net/projects/p/ibus/resource/master/l/da/download/ibus_master_da.po Patch0: ibus-HEAD.patch @@ -143,6 +143,10 @@ The ibus-devel-docs package contains developer documentation for ibus %setup -q %if %have_gjsfile bzcat %SOURCE2 | tar xf - +sed -i \ + -e "s|Config.IBUS_XKB|'/usr/libexec/ibus-xkb'|" \ + -e "s|Config.HAVE_IBUS_XKB|true|" \ + js/ui/status/ibus/xkbLayout.js %endif cp %SOURCE3 po/da.po %patch0 -p1 @@ -328,11 +332,13 @@ fi %{_datadir}/gtk-doc/html/* %changelog -* Thu May 26 2011 Takao Fujiwara - 1.3.99.20110408-5 +* Thu May 26 2011 Takao Fujiwara - 1.3.99.20110419-1 +- Updated to 1.3.99.20110419 - Added ibus-HEAD.patch Fixed Bug 697471 - ibus-gconf zombie when restart ibus from ibus panel. - Updated ibus-541492-xkb.patch Fixed Bug 701202 - us(dvorak) does not show up in list + Updated ibus-1.0.pc for ibus-xkb Showed XKB variant descriptions only without layout descriptions. - Updated ibus-xx-setup-frequent-lang.patch Updated UI strings diff --git a/sources b/sources index afe4d57..a92cbb8 100644 --- a/sources +++ b/sources @@ -1,3 +1,3 @@ -6ce34da8e9283d6df076bf6af9bbf815 ibus-1.3.99.20110408.tar.gz -2d6991ca7d3147aa486b6297872bed5f gnome-shell-ibus-plugins-20110317.tar.bz2 +d4f2729fecb92ae6b41f26c770b1a772 ibus-1.3.99.20110419.tar.gz +64e556364ee619d51e80397086b1d244 gnome-shell-ibus-plugins-20110601.tar.bz2 698c90edf0f037488e1aa969804e891f ibus_master_da.po