Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package gcin for openSUSE:Factory checked in at 2026-10-20 12:37:16 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/gcin (Old) and /work/SRC/openSUSE:Factory/.gcin.new.3698736 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "gcin" Tue Oct 20 12:37:16 2026 rev:45 rq:1386103 version:2.9.4 Changes: -------- --- /work/SRC/openSUSE:Factory/gcin/gcin.changes 2025-06-24 20:48:43.863264914 +0200 +++ /work/SRC/openSUSE:Factory/.gcin.new.3698736/gcin.changes 2026-10-20 12:37:55.920545297 +0200 @@ -1,0 +2,18 @@ +Sat Oct 17 15:55:11 UTC 2026 - Martin Pluskal <[email protected]> + +- Update to version 2.9.4: + * Improved automatic word selection in phonetic input and cursor + placement after phrase selection + * Ubuntu 24.04 and desktop indicator support + * Fix a crash from garbled text when mistyping English input +- Fix row-width mismatch with get_en_miss_cand() (fatal with gcc14 + and later): gcin-en-miss-cand-fix.patch +- Drop the new Wayland custom-surface block in win0.cpp, it uses + GDK APIs no longer present and its substance is commented out: + gcin-drop-wayland-block.patch +- Fix heap overflow building the en-american table on aarch64 + (length bytes must be read as signed char): tsa2d32-sign-fix.patch +- Drop Group tags; fetch the tarball over https and use + pkgconfig-style BuildRequires with canonical build macros + +------------------------------------------------------------------- Old: ---- gcin-2.9.0.tar.xz New: ---- gcin-2.9.4.tar.xz gcin-drop-wayland-block.patch gcin-en-miss-cand-fix.patch tsa2d32-sign-fix.patch ----------(New B)---------- New: GDK APIs no longer present and its substance is commented out: gcin-drop-wayland-block.patch - Fix heap overflow building the en-american table on aarch64 New:- Fix row-width mismatch with get_en_miss_cand() (fatal with gcc14 and later): gcin-en-miss-cand-fix.patch - Drop the new Wayland custom-surface block in win0.cpp, it uses New:- Fix heap overflow building the en-american table on aarch64 (length bytes must be read as signed char): tsa2d32-sign-fix.patch - Drop Group tags; fetch the tarball over https and use ----------(New E)---------- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ gcin.spec ++++++ --- /var/tmp/diff_new_pack.Uh1Gh6/_old 2026-10-20 12:37:57.447609311 +0200 +++ /var/tmp/diff_new_pack.Uh1Gh6/_new 2026-10-20 12:37:57.450609437 +0200 @@ -1,7 +1,7 @@ # # spec file for package gcin # -# Copyright (c) 2025 SUSE LLC +# Copyright (c) 2026 SUSE LLC and contributors # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -19,17 +19,14 @@ %if ! %{defined _distconfdir} %define _distconfdir %{_sysconfdir} %endif - %define build_qt4 0%{?is_opensuse} && 0%{?suse_version} < 1550 && 0%{?sle_version} < 150300 - Name: gcin -Version: 2.9.0 +Version: 2.9.4 Release: 0 Summary: Chinese input method server License: LGPL-2.1-only -Group: System/I18n/Chinese -URL: http://hyperrate.com/dir.php?eid=67 -Source: http://hyperrate.com/gcin-source/%{name}-%{version}.tar.xz +URL: https://hyperrate.com/dir.php?eid=67 +Source: https://hyperrate.com/gcin-source/%{name}-%{version}.tar.xz Source1: xim.d-gcin Source2: gcin-README.suse Source3: xim.gcin.suse.template @@ -58,33 +55,38 @@ Patch12: gcin-gcc14-fix.patch # PATCH-FIX-UPSTREAM fix the build errors with gcc15 Patch13: gcin-2.9.0-gcc15.patch -BuildRequires: anthy-devel +# PATCH-FIX-UPSTREAM fix row-width mismatch with get_en_miss_cand() (gcc14+ fatal) +Patch14: gcin-en-miss-cand-fix.patch +# PATCH-FIX-UPSTREAM drop unbuildable Wayland custom-surface block (removed GDK APIs) +Patch15: gcin-drop-wayland-block.patch +# PATCH-FIX-UPSTREAM read table length bytes as signed char (ARM char is unsigned) +Patch16: tsa2d32-sign-fix.patch BuildRequires: fdupes -BuildRequires: gtk2-devel -BuildRequires: gtk3-devel BuildRequires: libQt5Gui-private-headers-devel BuildRequires: libQt5PlatformSupport-devel-static -BuildRequires: libXtst-devel -BuildRequires: libcurl-devel BuildRequires: libjpeg-devel -%if %{build_qt4} -BuildRequires: libqt4-devel -%endif BuildRequires: libqt5-qtbase-devel -BuildRequires: pkg-config +BuildRequires: pkgconfig BuildRequires: update-desktop-files BuildRequires: xz +BuildRequires: pkgconfig(anthy) +BuildRequires: pkgconfig(gtk+-2.0) +BuildRequires: pkgconfig(gtk+-3.0) +BuildRequires: pkgconfig(libcurl) +BuildRequires: pkgconfig(xtst) Requires: %{name}-branding Requires: %{name}-gtk2 = %{version} Requires: %{name}-gtk3 = %{version} -%if %{build_qt4} -Requires: %{name}-qt4 = %{version} -%endif Requires: %{name}-qt5 = %{version} Requires: libgcin-im-client1 = %{version} Recommends: libreoffice-gnome Provides: locale(zh_TW;zh_HK;zh_MO) -BuildRoot: %{_tmppath}/%{name}-%{version}-build +%if %{build_qt4} +BuildRequires: libqt4-devel +%endif +%if %{build_qt4} +Requires: %{name}-qt4 = %{version} +%endif %description gcin is a Chinese input method server for traditional Chinese. @@ -93,9 +95,10 @@ %package branding-upstream Summary: Upstream branding of gcin License: LGPL-2.1-only -Group: System/I18n/Chinese Requires: gcin = %{version} -Supplements: packageand(%{name}:branding-upstream) +Supplements: (%{name} and branding-upstream) +# Keep the otherproviders form: a plain package-name Conflicts would also +# match this subpackage's own provide of the branding symbol above. Conflicts: otherproviders(%{name}-branding) Provides: %{name}-branding = %{version} @@ -105,7 +108,6 @@ %package -n libgcin-im-client1 Summary: Share libraries of gcin License: LGPL-2.1-only -Group: System/Libraries %description -n libgcin-im-client1 This package provides runtime libraries for gcin. @@ -113,7 +115,6 @@ %package gtk2 Summary: Gcin gtk2 immodule License: LGPL-2.1-only -Group: System/I18n/Chinese Requires: %{name} = %{version} Provides: %{name}-gtk2-immodule = %{version} Obsoletes: %{name}-gtk2-immodule <= 2.8.4-77.16 @@ -126,7 +127,6 @@ %package qt4 Summary: Gcin qt4 immodule License: GPL-2.0-only -Group: System/I18n/Chinese Requires: %{name} = %{version} Provides: %{name}-qt4-immodule = %{version} Obsoletes: %{name}-qt4-immodule <= 2.8.4-77.16 @@ -138,7 +138,6 @@ %package qt5 Summary: Gcin qt5 immodule License: GPL-2.0-only -Group: System/I18n/Chinese Requires: %{name} = %{version} Provides: %{name}-qt5-immodule = %{version} Obsoletes: %{name}-qt5-immodule <= 2.8.4-77.16 @@ -149,7 +148,6 @@ %package anthy Summary: Gcin anthy module License: LGPL-2.1-only -Group: System/I18n/Japanese Requires: %{name} = %{version} Provides: %{name}-anthy-module = %{version} Obsoletes: %{name}-anthy-module <= 2.8.4-77.16 @@ -160,7 +158,6 @@ %package gtk3 Summary: Gcin gtk3 immodule License: LGPL-2.1-only -Group: System/I18n/Chinese Requires: %{name} = %{version} Provides: %{name}-gtk3-immodule = %{version} Obsoletes: %{name}-gtk3-immodule <= 2.8.4-77.16 @@ -183,13 +180,13 @@ %if "%{_lib}" == "lib64" sed -e "s,^LIB='lib',LIB=lib64," -i configure %endif -CFLAGS="%{optflags}" %configure --prefix=/usr --use_i18n=Y \ +CFLAGS="%{optflags}" %configure --prefix=%{_prefix} --use_i18n=Y \ --use_anthy=Y --doc_version_dir=N -make %{?_smp_mflags} +%make_build %install -make DESTDIR=%{buildroot} install %{?_smp_mflags} +%make_install mkdir -p %{buildroot}%{_distconfdir}/X11/xim.d/ install -m 644 %{SOURCE1} %{buildroot}%{_distconfdir}/X11/xim.d/gcin @@ -212,11 +209,8 @@ %fdupes %{buildroot} %post -n libgcin-im-client1 -p /sbin/ldconfig - %postun -n libgcin-im-client1 -p /sbin/ldconfig - %post anthy -p /sbin/ldconfig - %postun anthy -p /sbin/ldconfig %post gtk2 @@ -249,11 +243,11 @@ %post qt4 -p /sbin/ldconfig %postun qt4 -p /sbin/ldconfig %endif + %post qt5 -p /sbin/ldconfig %postun qt5 -p /sbin/ldconfig %files -f %{name}.lang -%defattr(-,root,root) %license COPYING %doc README.html Changelog.html AUTHORS gcin-README.suse xim.gcin.suse.template %{_distconfdir}/X11/xim.d @@ -264,7 +258,6 @@ %dir %{_datadir}/icons/gcin/ %files -n libgcin-im-client1 -%defattr(-,root,root) %dir %{_libdir}/gcin %{_libdir}/gcin/libgcin-im-client.so %{_libdir}/gcin/libgcin-im-client.so.1 @@ -274,28 +267,22 @@ %{_libdir}/gcin/intcode-module.so %files branding-upstream -%defattr(-,root,root) %{_datadir}/icons/gcin/* %files gtk2 -%defattr(-,root,root) %{_libdir}/gtk-2.0/2.10.0/immodules/im-gcin.so %if %{build_qt4} %files qt4 -%defattr(-,root,root) %{_libdir}/qt4/plugins/inputmethods/im-gcin.so %endif %files qt5 -%defattr(-,root,root) %{_libdir}/qt5/plugins/platforminputcontexts/libgcinplatforminputcontextplugin.so %files anthy -%defattr(-,root,root) %{_libdir}/gcin/anthy-module.so %files gtk3 -%defattr(-,root,root) %{_libdir}/gtk-3.0/3.0.0/immodules/im-gcin.so ++++++ gcin-2.9.0.tar.xz -> gcin-2.9.4.tar.xz ++++++ ++++ 67312 lines of diff (skipped) ++++++ gcin-drop-wayland-block.patch ++++++ --- win0.cpp | 30 +----------------------------- 1 file changed, 1 insertion(+), 29 deletions(-) --- a/win0.cpp +++ b/win0.cpp @@ -473,22 +473,6 @@ void tsin_toggle_eng_ch(); void set_no_focus(); -#if GTK_CHECK_VERSION(3,24,0) -static void widget_realize_cb (GtkWidget *widget) -{ - dbg("widget_realize_cb %d\n", gtk_widget_get_realized(widget)); - GdkWindow *window; - struct wl_surface *surface; - struct input_panel_surface *ip_surface; - - window = gtk_widget_get_window (widget); - gdk_wayland_window_set_use_custom_surface (window); - - surface = gdk_wayland_window_get_wl_surface (window); -// ip_surface = input_panel_get_input_panel_surface (input_panel, surface); -// input_panel_surface_set_panel (ip_surface); -} -#endif GtkWidget *create_no_focus_win() { @@ -496,18 +480,6 @@ // GtkWidget *win = gtk_window_new (GTK_WINDOW_POPUP); // gtk_window_set_has_resize_grip(GTK_WINDOW(win), FALSE); #if UNIX -#if GTK_CHECK_VERSION(3,24,0) - if (!isX11()) - { - dbg("Wayland create_no_focus_win!\n"); - gtk_widget_realize (win); - widget_realize_cb(win); - gtk_container_set_border_width (GTK_CONTAINER (win), 0); - gtk_window_set_accept_focus(GTK_WINDOW(win), FALSE); -// g_signal_connect (win, "realize", G_CALLBACK (widget_realize_cb), NULL); - return win; - } -#endif gtk_window_set_resizable(GTK_WINDOW(win), FALSE); #endif #if WIN32 ++++++ gcin-en-miss-cand-fix.patch ++++++ --- gtab-buf.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) --- a/gtab-buf.cpp +++ b/gtab-buf.cpp @@ -1447,7 +1447,7 @@ en[j]=gbuf[i+j].ch[0]; en[len]=0; dbg("pp8 '%s'\n", en); - char best[10][MAX_PHRASE_LEN]; + char best[10][MAX_PHRASE_LEN+1]; get_en_miss_cand(en_hand.fph, en, len, best); int n=0; for(int i=0;i<10;i++) { ++++++ tsa2d32-sign-fix.patch ++++++ --- tsa2d32.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) --- a/tsa2d32.cpp +++ b/tsa2d32.cpp @@ -88,7 +88,7 @@ { int idxa=*((int *)a); char *pa = (char *)&bf[idxa]; int idxb=*((int *)b); char *pb = (char *)&bf[idxb]; - char lena,lenb, len; + signed char lena,lenb, len; usecount_t usecounta, usecountb; lena=*(pa++); if (lena < 0) lena = -lena; memcpy(&usecounta, pa, sizeof(usecount_t)); pa+= sizeof(usecount_t); @@ -129,7 +129,7 @@ { int idxa=*((int *)a); char *pa = (char *)&bf[idxa]; int idxb=*((int *)b); char *pb = (char *)&bf[idxb]; - char lena,lenb, len; + signed char lena,lenb, len; lena=*(pa++); if (lena < 0) lena = -lena; pa+= sizeof(usecount_t); char *ka = pa; @@ -166,7 +166,7 @@ { int idxa=*((int *)a); char *pa = (char *)&sf[idxa]; int idxb=*((int *)b); char *pb = (char *)&sf[idxb]; - char lena,lenb, len; + signed char lena,lenb, len; usecount_t usecounta, usecountb; lena=*(pa++); if (lena < 0) lena = -lena; memcpy(&usecounta, pa, sizeof(usecount_t)); pa+= sizeof(usecount_t); @@ -664,7 +664,7 @@ for(i=0;i<phcount;i++) { idx = phidx[i]; sidx[j]=ofs; - len=bf[idx]; + len=(signed char)bf[idx]; gboolean en_has_str = FALSE; if (len < 0) { len = -len;
