Accepting request 903162 from home:hillwood:branches:M17N
- Rollback ibus-socket-name-compatibility.patch for Leap 15. Qt5 does not be updated to the new version or patch for ibus on Leap 15. It still needs this patch on leap 15 (boo#1187202). OBS-URL: https://build.opensuse.org/request/show/903162 OBS-URL: https://build.opensuse.org/package/show/M17N/ibus?expand=0&rev=253
This commit is contained in:
parent
e02aab6ed9
commit
0b520a1c5f
244
ibus-socket-name-compatibility.patch
Normal file
244
ibus-socket-name-compatibility.patch
Normal file
@ -0,0 +1,244 @@
|
|||||||
|
This writes ~/.config/ibus/bus/SOCKETPATH with the old name.
|
||||||
|
Author: Changwoo Ryu
|
||||||
|
Last-Update: 2020-05-01
|
||||||
|
Bug: https://bugreports.qt.io/browse/QTBUG-82910
|
||||||
|
Forwarded: not-needed, workaround
|
||||||
|
|
||||||
|
--- a/src/ibusshare.c
|
||||||
|
+++ b/src/ibusshare.c
|
||||||
|
@@ -90,79 +90,132 @@
|
||||||
|
return g_getenv("IBUS_SESSION_ID");
|
||||||
|
}
|
||||||
|
|
||||||
|
+static const gchar *ibus_get_socket_path_internal (gboolean compat, gchar *client_display);
|
||||||
|
+
|
||||||
|
const gchar *
|
||||||
|
ibus_get_socket_path (void)
|
||||||
|
{
|
||||||
|
static gchar *path = NULL;
|
||||||
|
|
||||||
|
if (path == NULL) {
|
||||||
|
- gchar *hostname = "unix";
|
||||||
|
- gchar *display;
|
||||||
|
- gchar *displaynumber = "0";
|
||||||
|
- /* gchar *screennumber = "0"; */
|
||||||
|
- gboolean is_wayland = FALSE;
|
||||||
|
- gchar *p;
|
||||||
|
-
|
||||||
|
- path = g_strdup (g_getenv ("IBUS_ADDRESS_FILE"));
|
||||||
|
- if (path != NULL) {
|
||||||
|
- return path;
|
||||||
|
+ path = ibus_get_socket_path_internal (FALSE, NULL);
|
||||||
|
+ }
|
||||||
|
+ return path;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+static const gchar *
|
||||||
|
+ibus_get_socket_path_x11_compat (void)
|
||||||
|
+{
|
||||||
|
+ static gchar *path = NULL;
|
||||||
|
+ if (path == NULL)
|
||||||
|
+ path = ibus_get_socket_path_internal (TRUE, NULL);
|
||||||
|
+ return path;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+static const gchar *
|
||||||
|
+ibus_get_socket_path_gnome_xwayland_compat (void)
|
||||||
|
+{
|
||||||
|
+ static gchar *path = NULL;
|
||||||
|
+ if (path == NULL) {
|
||||||
|
+ gint setup_display_number;
|
||||||
|
+ gchar *client_display;
|
||||||
|
+ gchar **tokens;
|
||||||
|
+
|
||||||
|
+ tokens = g_strsplit (ibus_get_socket_path_x11_compat (), "-", 3);
|
||||||
|
+ if (tokens[0] != NULL && tokens[1] != NULL && tokens[2] != NULL) {
|
||||||
|
+ setup_display_number = g_strtod(tokens[2], NULL);
|
||||||
|
+ if (setup_display_number > 0) {
|
||||||
|
+ client_display = g_strdup_printf (":%d", setup_display_number - 1);
|
||||||
|
+ path = ibus_get_socket_path_internal (TRUE, client_display);
|
||||||
|
+ }
|
||||||
|
}
|
||||||
|
|
||||||
|
- if (_display == NULL) {
|
||||||
|
+ g_strfreev (tokens);
|
||||||
|
+ }
|
||||||
|
+ return path;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+static const gchar *
|
||||||
|
+ibus_get_socket_path_internal (gboolean compat, gchar *client_display)
|
||||||
|
+{
|
||||||
|
+ gchar *path = NULL;
|
||||||
|
+
|
||||||
|
+ gchar *hostname = "unix";
|
||||||
|
+ gchar *display;
|
||||||
|
+ gchar *displaynumber = "0";
|
||||||
|
+ /* gchar *screennumber = "0"; */
|
||||||
|
+ gboolean is_wayland = FALSE;
|
||||||
|
+ gchar *p;
|
||||||
|
+
|
||||||
|
+ path = g_strdup (g_getenv ("IBUS_ADDRESS_FILE"));
|
||||||
|
+ if (path != NULL) {
|
||||||
|
+ return path;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ if (_display == NULL) {
|
||||||
|
+ if (compat) {
|
||||||
|
+ if (client_display == NULL)
|
||||||
|
+ display = g_strdup (g_getenv ("DISPLAY"));
|
||||||
|
+ else
|
||||||
|
+ display = client_display;
|
||||||
|
+ } else {
|
||||||
|
display = g_strdup (g_getenv ("WAYLAND_DISPLAY"));
|
||||||
|
if (display)
|
||||||
|
is_wayland = TRUE;
|
||||||
|
- else
|
||||||
|
+ else if (client_display == NULL)
|
||||||
|
display = g_strdup (g_getenv ("DISPLAY"));
|
||||||
|
+ else
|
||||||
|
+ display = client_display;
|
||||||
|
}
|
||||||
|
- else {
|
||||||
|
- display = g_strdup (_display);
|
||||||
|
- }
|
||||||
|
-
|
||||||
|
- if (is_wayland) {
|
||||||
|
- displaynumber = display;
|
||||||
|
- } else if (display) {
|
||||||
|
- p = display;
|
||||||
|
- hostname = display;
|
||||||
|
- for (; *p != ':' && *p != '\0'; p++);
|
||||||
|
+ }
|
||||||
|
+ else {
|
||||||
|
+ display = g_strdup (_display);
|
||||||
|
+ }
|
||||||
|
|
||||||
|
- if (*p == ':') {
|
||||||
|
- *p = '\0';
|
||||||
|
- p++;
|
||||||
|
- displaynumber = p;
|
||||||
|
- }
|
||||||
|
+ if (is_wayland) {
|
||||||
|
+ displaynumber = display;
|
||||||
|
+ } else if (display) {
|
||||||
|
+ p = display;
|
||||||
|
+ hostname = display;
|
||||||
|
+ for (; *p != ':' && *p != '\0'; p++);
|
||||||
|
+
|
||||||
|
+ if (*p == ':') {
|
||||||
|
+ *p = '\0';
|
||||||
|
+ p++;
|
||||||
|
+ displaynumber = p;
|
||||||
|
+ }
|
||||||
|
|
||||||
|
- for (; *p != '.' && *p != '\0'; p++);
|
||||||
|
+ for (; *p != '.' && *p != '\0'; p++);
|
||||||
|
|
||||||
|
- if (*p == '.') {
|
||||||
|
- *p = '\0';
|
||||||
|
- p++;
|
||||||
|
- /* Do not use screennumber
|
||||||
|
- screennumber = p; */
|
||||||
|
- }
|
||||||
|
+ if (*p == '.') {
|
||||||
|
+ *p = '\0';
|
||||||
|
+ p++;
|
||||||
|
+ /* Do not use screennumber
|
||||||
|
+ screennumber = p; */
|
||||||
|
}
|
||||||
|
+ }
|
||||||
|
|
||||||
|
- if (hostname[0] == '\0')
|
||||||
|
- hostname = "unix";
|
||||||
|
+ if (hostname[0] == '\0')
|
||||||
|
+ hostname = "unix";
|
||||||
|
+
|
||||||
|
+ p = g_strdup_printf ("%s-%s-%s",
|
||||||
|
+ ibus_get_local_machine_id (),
|
||||||
|
+ hostname,
|
||||||
|
+ displaynumber);
|
||||||
|
+ /* Qt5 IBus module has a hard-coded path and we cannot change this
|
||||||
|
+ * for the back compatibility.
|
||||||
|
+ * XDG_RUNTIME_DIR is not useful because it's generated by
|
||||||
|
+ * login but not `su` command and ibus-daemon can be run with `su`
|
||||||
|
+ * and we may change the path to XDG_CACHE_HOME in the future.
|
||||||
|
+ */
|
||||||
|
+ path = g_build_filename (g_get_user_config_dir (),
|
||||||
|
+ "ibus",
|
||||||
|
+ "bus",
|
||||||
|
+ p,
|
||||||
|
+ NULL);
|
||||||
|
+ g_free (p);
|
||||||
|
+ g_free (display);
|
||||||
|
|
||||||
|
- p = g_strdup_printf ("%s-%s-%s",
|
||||||
|
- ibus_get_local_machine_id (),
|
||||||
|
- hostname,
|
||||||
|
- displaynumber);
|
||||||
|
- /* Qt5 IBus module has a hard-coded path and we cannot change this
|
||||||
|
- * for the back compatibility.
|
||||||
|
- * XDG_RUNTIME_DIR is not useful because it's generated by
|
||||||
|
- * login but not `su` command and ibus-daemon can be run with `su`
|
||||||
|
- * and we may change the path to XDG_CACHE_HOME in the future.
|
||||||
|
- */
|
||||||
|
- path = g_build_filename (g_get_user_config_dir (),
|
||||||
|
- "ibus",
|
||||||
|
- "bus",
|
||||||
|
- p,
|
||||||
|
- NULL);
|
||||||
|
- g_free (p);
|
||||||
|
- g_free (display);
|
||||||
|
- }
|
||||||
|
return path;
|
||||||
|
}
|
||||||
|
|
||||||
|
@@ -248,19 +301,45 @@
|
||||||
|
return address;
|
||||||
|
}
|
||||||
|
|
||||||
|
+static void ibus_write_address_internal (const gchar *address, const gchar *socket_path);
|
||||||
|
+
|
||||||
|
void
|
||||||
|
ibus_write_address (const gchar *address)
|
||||||
|
{
|
||||||
|
+ const gchar *socket_path;
|
||||||
|
+ const gchar *socket_path_compat;
|
||||||
|
+
|
||||||
|
+ socket_path = ibus_get_socket_path ();
|
||||||
|
+ ibus_write_address_internal (address, socket_path);
|
||||||
|
+
|
||||||
|
+ if (g_getenv ("WAYLAND_DISPLAY") != NULL) {
|
||||||
|
+ socket_path_compat = ibus_get_socket_path_x11_compat ();
|
||||||
|
+ ibus_write_address_internal (address, socket_path_compat);
|
||||||
|
+
|
||||||
|
+ if (g_getenv ("GNOME_SETUP_DISPLAY") != NULL &&
|
||||||
|
+ strcmp (g_getenv ("GNOME_SETUP_DISPLAY"), g_getenv ("DISPLAY")) == 0) {
|
||||||
|
+ /* Running from gnome-shell with the setup display; write the socket
|
||||||
|
+ * address to an additional path for X11 clients */
|
||||||
|
+ socket_path_compat = ibus_get_socket_path_gnome_xwayland_compat ();
|
||||||
|
+ if (socket_path_compat != NULL)
|
||||||
|
+ ibus_write_address_internal (address, socket_path_compat);
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+static void
|
||||||
|
+ibus_write_address_internal (const gchar *address, const gchar *socket_path)
|
||||||
|
+{
|
||||||
|
FILE *pf;
|
||||||
|
gchar *path;
|
||||||
|
g_return_if_fail (address != NULL);
|
||||||
|
|
||||||
|
- path = g_path_get_dirname (ibus_get_socket_path ());
|
||||||
|
+ path = g_path_get_dirname (socket_path);
|
||||||
|
g_mkdir_with_parents (path, 0700);
|
||||||
|
g_free (path);
|
||||||
|
|
||||||
|
- g_unlink (ibus_get_socket_path ());
|
||||||
|
- pf = fopen (ibus_get_socket_path (), "w");
|
||||||
|
+ g_unlink (socket_path);
|
||||||
|
+ pf = fopen (socket_path, "w");
|
||||||
|
g_return_if_fail (pf != NULL);
|
||||||
|
|
||||||
|
fprintf (pf,
|
@ -1,3 +1,10 @@
|
|||||||
|
-------------------------------------------------------------------
|
||||||
|
Wed Jun 30 05:36:01 UTC 2021 - Hillwood Yang <hillwood@opensuse.org>
|
||||||
|
|
||||||
|
- Rollback ibus-socket-name-compatibility.patch for Leap 15. Qt5 does
|
||||||
|
not be updated to the new version or patch for ibus on Leap 15.
|
||||||
|
It still needs this patch on leap 15 (boo#1187202).
|
||||||
|
|
||||||
-------------------------------------------------------------------
|
-------------------------------------------------------------------
|
||||||
Mon Feb 22 01:50:38 UTC 2021 - Fuminobu Takeyama <ftake@geeko.jp> - 1.5.24
|
Mon Feb 22 01:50:38 UTC 2021 - Fuminobu Takeyama <ftake@geeko.jp> - 1.5.24
|
||||||
|
|
||||||
|
@ -59,6 +59,11 @@ Patch11: setup-switch-im.patch
|
|||||||
# PATCH-FIX-SLE ibus-disable-engines-preload-in-GNOME.patch bnc#1036729 qzhao@suse.com
|
# PATCH-FIX-SLE ibus-disable-engines-preload-in-GNOME.patch bnc#1036729 qzhao@suse.com
|
||||||
# Disable ibus engines preload in GNOME for These works are handled by gnome-shell.
|
# Disable ibus engines preload in GNOME for These works are handled by gnome-shell.
|
||||||
Patch12: ibus-disable-engines-preload-in-GNOME.patch
|
Patch12: ibus-disable-engines-preload-in-GNOME.patch
|
||||||
|
# PATCH-FIX-UPSTREAM ibus-socket-name-compatibility.patch bsc#1171442, gh#ibus/ibus#2195 qkzhu@suse
|
||||||
|
# Compatibility workaround for ibus-use-wayland-display-for-socket-name.patch
|
||||||
|
# Qt5 does not be update to the new version and patch for ibus on Leap 15,
|
||||||
|
# it still needs this patch on leap 15. (boo#1187202)
|
||||||
|
Patch15: ibus-socket-name-compatibility.patch
|
||||||
BuildRequires: fdupes
|
BuildRequires: fdupes
|
||||||
BuildRequires: gettext-devel
|
BuildRequires: gettext-devel
|
||||||
BuildRequires: gobject-introspection-devel >= 0.9.6
|
BuildRequires: gobject-introspection-devel >= 0.9.6
|
||||||
@ -193,6 +198,9 @@ cp -r %{SOURCE11} .
|
|||||||
%patch10 -p1
|
%patch10 -p1
|
||||||
%patch11 -p1
|
%patch11 -p1
|
||||||
%patch12 -p1
|
%patch12 -p1
|
||||||
|
%if 0%{?suse_version} <= 1500
|
||||||
|
%patch15 -p1
|
||||||
|
%endif
|
||||||
|
|
||||||
%build
|
%build
|
||||||
autoreconf -fi
|
autoreconf -fi
|
||||||
|
Loading…
Reference in New Issue
Block a user