+# TODO
+# - clean .py in %{_datadir}/{setup,ui/gtk} if possible
#
# Conditional build:
-%bcond_without gjsfile # https://bugzilla.redhat.com/show_bug.cgi?id=657165
-#
+%bcond_without static_libs # don't build static library
+%bcond_without vala # Vala API
+%bcond_without wayland # Wayland client
+
Summary: Intelligent Input Bus for Linux OS
+Summary(pl.UTF-8): IBus - inteligentna szyna wejściowa dla Linuksa
Name: ibus
-Version: 1.3.99.20110419
-Release: 0.4
+Version: 1.5.9
+Release: 4
License: LGPL v2+
Group: Libraries
-URL: http://code.google.com/p/ibus/
-Source0: http://ibus.googlecode.com/files/%{name}-%{version}.tar.gz
-# Source0-md5: d4f2729fecb92ae6b41f26c770b1a772
+#Source0Download: http://code.google.com/p/ibus/downloads/list
+Source0: https://github.com/ibus/ibus/releases/download/%{version}/%{name}-%{version}.tar.gz
+# Source0-md5: a6e820db4fe3d82c825398f1ed19c77e
Source1: %{name}.xinputd
-Source100: http://fujiwara.fedorapeople.org/ibus/gnome-shell/%{name}-gjs-1.3.99.20110714.tar.gz
-# Source100-md5: 57df6a7d6a9ca0f4b30a8fe135fdcb89
-Patch0: %{name}-HEAD.patch
-Patch1: %{name}-530711-preload-sys.patch
-Patch2: %{name}-xx-icon-symbol.patch
-Patch3: %{name}-541492-xkb.patch
-Patch4: %{name}-xx-bridge-hotkey.patch
-Patch5: %{name}-xx-setup-frequent-lang.patch
-# Workaround for oxygen-gtk icon theme until bug 699103 is fixed.
-Patch91: %{name}-711632-fedora-fallback-icon.patch
-BuildRequires: GConf2-devel
-BuildRequires: autoconf
-BuildRequires: automake
+Patch0: %{name}-1136623-lost-by-another-focus.patch
+Patch1: %{name}-HEAD.patch
+Patch2: %{name}-xx-increase-timeout.patch
+Patch3: python-path.patch
+URL: http://code.google.com/p/ibus/
+BuildRequires: GConf2-devel >= 2.12
+BuildRequires: atk-devel
+BuildRequires: autoconf >= 2.62
+BuildRequires: automake >= 1:1.11.1
+BuildRequires: dbus-devel
BuildRequires: dbus-glib-devel
+BuildRequires: dconf-devel >= 0.7.5
BuildRequires: desktop-file-utils
-BuildRequires: gettext-devel
-BuildRequires: gtk+2-devel
-BuildRequires: gtk+3-devel
-BuildRequires: gtk-doc
-BuildRequires: intltool
+BuildRequires: gettext-tools
+BuildRequires: glib2-devel >= 1:2.32.0
+BuildRequires: gobject-introspection-devel >= 0.9.6
+BuildRequires: gtk+2-devel >= 2.0
+BuildRequires: gtk+3-devel >= 3.0
+BuildRequires: gtk-doc >= 1.9
+BuildRequires: intltool >= 0.35.0
BuildRequires: iso-codes
+BuildRequires: libnotify-devel >= 0.7
BuildRequires: libtool
-BuildRequires: python
-BuildRequires: rpmbuild(macros) >= 1.596
-BuildRequires: rpm-pythonprov
+BuildRequires: pkgconfig
+BuildRequires: python >= 1:2.5
BuildRequires: python-dbus-devel >= 0.83.0
-BuildRequires: python-pygobject-devel
-BuildRequires: xorg-lib-libxkbfile-devel
-Requires: %{name}-gtk2 = %{version}-%{release}
-Requires: %{name}-gtk3 = %{version}-%{release}
+BuildRequires: python-pygobject3 >= 3.0.0
+BuildRequires: python-pygobject3-common-devel >= 3.0.0
+BuildRequires: rpm-pythonprov
+BuildRequires: rpmbuild(macros) >= 1.596
+%{?with_vala:BuildRequires: vala >= 2:0.16}
+# wayland-client
+%{?with_wayland:BuildRequires: wayland-devel >= 1.2.0}
+BuildRequires: xorg-lib-libX11-devel
+%{?with_wayland:BuildRequires: xorg-lib-libxkbcommon-devel}
+Requires: %{name}-conf = %{version}-%{release}
Requires: %{name}-libs = %{version}-%{release}
-Requires: GConf2
+Requires: dbus >= 1.2.4
+Requires: gtk-update-icon-cache
+Requires: hicolor-icon-theme
Requires: im-chooser
Requires: iso-codes
-Requires: python-dbus >= 0.83.0
+Requires: libnotify >= 0.7
+Requires: python-ibus = %{version}-%{release}
Requires: python-pygtk-gtk
Requires: python-pynotify
-Requires: python-pyxdg
-Requires: hicolor-icon-theme
-Requires: gtk-update-icon-cache
+Requires: xorg-app-setxkbmap
# input-keyboard-symbolic icon
Suggests: gnome-icon-theme-symbolic
-Requires(post): GConf2
-Requires(preun): GConf2
+Obsoletes: ibus-xkb
BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
%define _libexecdir %{_libdir}/ibus
IBus means Intelligent Input Bus. It is an input framework for Linux
OS.
-%package libs
-Summary: IBus libraries
+%description -l pl.UTF-8
+IBus (Intelligent Input Bus) to inteligentna szyna wejściowa. Jest to
+szkielet wprowadzania tekstu dla Linuksa.
+
+%package dconf
+Summary: IBus configuration module using DConf
+Summary(pl.UTF-8): Moduł konfiguracji IBus wykorzystujący mechanizm DConf
Group: Libraries
-Requires: dbus >= 1.2.4
-Requires: glib2 >= 1:2.26.0
+Requires(post,postun): glib2 >= 1:2.32
+Requires: %{name} = %{version}-%{release}
+Requires: dconf >= 0.7.5
+Provides: %{name}-conf = %{version}-%{release}
-%description libs
-This package contains the libraries for IBus
+%description dconf
+IBus configuration module using DConf.
+
+%description dconf -l pl.UTF-8
+Moduł konfiguracji IBus wykorzystujący mechanizm DConf.
+
+%package gconf
+Summary: IBus configuration module using GConf
+Summary(pl.UTF-8): Moduł konfiguracji IBus wykorzystujący mechanizm GConf
+Group: Libraries
+Requires(post,postun): GConf2 >= 2.12
+Requires: %{name} = %{version}-%{release}
+Requires: GConf2 >= 2.12
+Provides: %{name}-conf = %{version}-%{release}
+
+%description gconf
+IBus configuration module using GConf.
+
+%description gconf -l pl.UTF-8
+Moduł konfiguracji IBus wykorzystujący mechanizm GConf.
%package gtk2
-Summary: IBus im module for gtk2
+Summary: IBus im module for GTK+ 2.x
+Summary(pl.UTF-8): Moduł im IBus dla GTK+ 2.x
Group: Libraries
Requires: %{name} = %{version}-%{release}
-Requires: %{name}-libs = %{version}-%{release}
Requires: imsettings-gnome2
-Requires(post): glib2 >= 1:2.26.0
+Requires(post): glib2 >= 1:2.32.0
%description gtk2
-This package contains ibus im module for gtk2
+This package contains IBus im module for GTK+ 2.x.
+
+%description gtk2 -l pl.UTF-8
+Ten pakiet zawiera moduł im IBus dla GTK+ 2.x.
%package gtk3
-Summary: IBus im module for gtk3
+Summary: IBus im module for GTK+ 3.x
+Summary(pl.UTF-8): Moduł im IBus dla GTK+ 3.x
Group: Libraries
Requires: %{name} = %{version}-%{release}
-Requires: %{name}-libs = %{version}-%{release}
Requires: imsettings-gnome3
-Requires(post): glib2 >= 1:2.26.0
+Requires(post): glib2 >= 1:2.32.0
%description gtk3
-This package contains ibus im module for gtk3
+This package contains IBus im module for GTK+ 3.x.
-%package gnome3
-Summary: IBus gnome-shell-extension for GNOME3
+%description gtk3 -l pl.UTF-8
+Ten pakiet zawiera moduł im IBus dla GTK+ 3.x.
+
+%package wayland
+Summary: Wayland im protocol support for IBus
+Summary(pl.UTF-8): Obsługa protokołu im Waylanda dla systemu IBus
Group: Libraries
Requires: %{name} = %{version}-%{release}
-Requires: %{name}-libs = %{version}-%{release}
-Requires: gnome-shell
+Requires: wayland >= 1.2.0
+
+%description wayland
+Wayland im protocol support for IBus.
+
+%description wayland -l pl.UTF-8
+Obsługa protokołu im Waylanda dla systemu IBus.
-%description gnome3
-This is a transitional package which allows users to try out new IBus
-GUI for GNOME3 in development. Note that this package will be marked
-as obsolete once the integration has completed in the GNOME3 upstream.
+%package libs
+Summary: IBus library
+Summary(pl.UTF-8): Biblioteka IBus
+Group: Libraries
+Requires: glib2 >= 1:2.32.0
+Obsoletes: ibus-xkb-libs
+
+%description libs
+This package contains the IBus shared library.
+
+%description libs -l pl.UTF-8
+Ten pakiet zawiera bibliotekę współdzieloną IBus.
%package devel
-Summary: Development tools for ibus
+Summary: Development files for IBus
+Summary(pl.UTF-8): Pliki programistyczne IBus
Group: Development/Libraries
Requires: %{name}-libs = %{version}-%{release}
-Requires: dbus-devel
-Requires: glib2-devel
+Requires: glib2-devel >= 1:2.32.0
+Obsoletes: ibus-xkb-devel
%description devel
-The ibus-devel package contains the header files and developer docs
-for ibus.
+The ibus-devel package contains the header files for IBus.
+
+%description devel -l pl.UTF-8
+Ten pakiet zawiera pliki nagłówkowe dla szkieletu IBus.
+
+%package static
+Summary: Static ibus library
+Summary(pl.UTF-8): Biblioteka statyczna ibus
+Group: Development/Libraries
+Requires: %{name}-devel = %{version}-%{release}
+Obsoletes: ibus-xkb-static
+
+%description static
+Static ibus library.
+
+%description static -l pl.UTF-8
+Biblioteka statyczna ibus.
+
+%package apidocs
+Summary: Development documentation for IBus
+Summary(pl.UTF-8): Dokumentacja programisty dla szkieletu IBus
+Group: Development/Libraries
+Requires: gtk-doc-common
+Conflicts: ibus-devel < 1.4.2
+%if "%{_rpmversion}" >= "5"
+BuildArch: noarch
+%endif
+
+%description apidocs
+Development documentation for IBus.
+
+%description apidocs -l pl.UTF-8
+Dokumentacja programisty dla szkieletu IBus.
+
+%package -n python-ibus
+Summary: Python interface to IBus framework
+Summary(pl.UTF-8): Pythonowy interfejs do szkieletu IBus
+Group: Development/Languages/Python
+Requires: python-dbus >= 0.83.0
+Requires: python-pygobject3 >= 3.0.0
+Requires: python-pygtk-pango
+Requires: python-pyxdg
+Conflicts: ibus < 1.4.2
+
+%description -n python-ibus
+Python interface to IBus framework.
+
+%description -n python-ibus -l pl.UTF-8
+Pythonowy interfejs do szkieletu IBus.
+
+%package -n vala-ibus
+Summary: Vala API for ibus library
+Summary(pl.UTF-8): API języka Vala do biblioteki ibus
+Group: Development/Libraries
+Requires: %{name}-devel = %{version}-%{release}
+Requires: vala >= 2:0.16
+
+%description -n vala-ibus
+Vala API for ibus library.
+
+%description -n vala-ibus -l pl.UTF-8
+API języka Vala do biblioteki ibus.
+
+%package -n bash-completion-ibus
+Summary: Bash completion for ibus commands
+Summary(pl.UTF-8): Bashowe dopełnianie parametrów dla poleceń ibus
+Group: Applications/Shells
+Requires: bash-completion >= 2
+%if "%{_rpmversion}" >= "5"
+BuildArch: noarch
+%endif
+
+%description -n bash-completion-ibus
+Bash completion for ibus commands.
+
+%description -n bash-completion-ibus -l pl.UTF-8
+Bashowe dopełnianie parametrów dla poleceń ibus.
%prep
%setup -q
-%if %{with gjsfile}
-zcat %SOURCE100 | tar xf -
-%endif
%patch0 -p1
-cp client/gtk2/ibusimcontext.c client/gtk3/ibusimcontext.c
%patch1 -p1
%patch2 -p1
%patch3 -p1
-mv data/ibus.schemas.in data/ibus.schemas.in.in
-%patch4 -p1
-%patch5 -p1
-
-%patch91 -p1
%build
-%if %{with gjsfile}
-d=`basename %SOURCE100 .tar.gz`
-cd $d
-%configure
-%{__make}
-cd ..
-%endif
-
+%{__libtoolize}
%{__aclocal} -I m4
-%{__autoheader}
%{__autoconf}
+%{__autoheader}
%{__automake}
%configure \
+ --disable-gtk-doc \
+ --disable-silent-rules \
+ --enable-dconf \
+ --enable-gconf \
--enable-gtk2 \
--enable-gtk3 \
+ --enable-introspection \
+ --enable-python-library \
+ %{?with_static_libs:--enable-static} \
+ --enable-surrounding-text \
+ --enable-vala%{!?with_vala:=no} \
+ %{?with_wayland:--enable-wayland} \
--enable-xim \
- --enable-vala \
- --enable-xkb \
- --disable-gtk-doc \
- --enable-gconf \
- --enable-python \
--with-html-dir=%{_gtkdocdir} \
- --with-no-snooper-apps='gnome-do,Do.*,firefox.*,.*chrome.*,.*chromium.*' \
- --enable-surrounding-text \
- --enable-bridge-hotkey \
- --enable-introspection
+ --with-no-snooper-apps='gnome-do,Do.*,firefox.*,.*chrome.*,.*chromium.*'
+
+%{__make} -C ui/gtk3 maintainer-clean-generic
%{__make}
%install
rm -rf $RPM_BUILD_ROOT
-install -d $RPM_BUILD_ROOT%{_sysconfdir}/{X11/xinit/xinput.d,xdg/autostart}
+install -d $RPM_BUILD_ROOT%{_sysconfdir}/X11/xinit/xinput.d
%{__make} install \
DESTDIR=$RPM_BUILD_ROOT
%{__sed} -e 's|@@LIB@@|%{_lib}|g' %{SOURCE1} >$RPM_BUILD_ROOT%{_sysconfdir}/X11/xinit/xinput.d/ibus.conf
-# correct location in upstream.
-mv $RPM_BUILD_ROOT{%{_desktopdir},%{_sysconfdir}/xdg/autostart}/ibus.desktop
-
-%if %{with gjsfile}
-d=`basename %SOURCE100 .tar.gz`
-cd $d
-%{__make} install \
- DESTDIR=$RPM_BUILD_ROOT
-%{__rm} $RPM_BUILD_ROOT%{_datadir}/locale/*/LC_MESSAGES/ibus-gjs.mo
-cd ..
-%endif
-
%{__rm} $RPM_BUILD_ROOT%{_libdir}/*.la
%{__rm} $RPM_BUILD_ROOT%{_libdir}/gtk*/*/immodules/*.la
+%if %{with static_libs}
+%{__rm} $RPM_BUILD_ROOT%{_libdir}/gtk*/*/immodules/*.a
+%endif
+
+%py_postclean
%find_lang %{name}10
%post
%update_icon_cache hicolor
-%gconf_schema_install ibus.schemas
-
-%preun
-%gconf_schema_uninstall ibus.schemas
%postun
%update_icon_cache hicolor
-%post libs -p /sbin/ldconfig
-%postun libs -p /sbin/ldconfig
+%post dconf
+%glib_compile_schemas
+
+%postun dconf
+%glib_compile_schemas
+
+%post gconf
+%gconf_schema_install ibus.schemas
+
+%preun gconf
+%gconf_schema_uninstall ibus.schemas
%post gtk2
%if "%{_lib}" != "lib"
%{_bindir}/gtk-query-immodules-3.0 --update-cache
%endif
+%post libs -p /sbin/ldconfig
+%postun libs -p /sbin/ldconfig
+
%files -f %{name}10.lang
%defattr(644,root,root,755)
%doc AUTHORS README
-%config %{_sysconfdir}/X11/xinit/xinput.d/ibus.conf
-# imsettings will start this daemon for us
-#%{_sysconfdir}/xdg/autostart/ibus.desktop
-%{_sysconfdir}/gconf/schemas/ibus.schemas
+%config(noreplace) %verify(not md5 mtime size) /etc/X11/xinit/xinput.d/ibus.conf
+%attr(755,root,root) %{_bindir}/ibus
%attr(755,root,root) %{_bindir}/ibus-daemon
%attr(755,root,root) %{_bindir}/ibus-setup
-%attr(755,root,root) %{_libexecdir}/ibus-gconf
-%attr(755,root,root) %{_libexecdir}/ibus-ui-gtk
+%dir %{_libexecdir}
+%attr(755,root,root) %{_libexecdir}/ibus-engine-simple
+%attr(755,root,root) %{_libexecdir}/ibus-ui-gtk3
%attr(755,root,root) %{_libexecdir}/ibus-x11
-%attr(755,root,root) %{_libexecdir}/ibus-engine-xkb
-%attr(755,root,root) %{_libexecdir}/ibus-xkb
-%dir %{py_sitescriptdir}/ibus
-%{py_sitescriptdir}/ibus/*
-%{_datadir}/ibus
-%{_desktopdir}/*
-%{_iconsdir}/hicolor/*/apps/*
-
-%files libs
+%dir %{_datadir}/ibus
+%dir %{_datadir}/ibus/component
+%{_datadir}/ibus/component/gtkpanel.xml
+%{_datadir}/ibus/component/simple.xml
+%{_datadir}/ibus/engine
+%{_datadir}/ibus/keymaps
+%{_datadir}/ibus/setup
+%{_desktopdir}/ibus-setup.desktop
+%{_iconsdir}/hicolor/*/apps/ibus-*.png
+%{_iconsdir}/hicolor/scalable/apps/ibus*.svg
+%{_mandir}/man1/ibus.1*
+%{_mandir}/man1/ibus-daemon.1*
+%{_mandir}/man1/ibus-setup.1*
+
+%files dconf
%defattr(644,root,root,755)
-%attr(755,root,root) %{_libdir}/libibus-1.0.so.*.*.*
-%attr(755,root,root) %ghost %{_libdir}/libibus-1.0.so.[0-9]
-%{_libdir}/girepository-1.0/IBus-1.0.typelib
+%attr(755,root,root) %{_libexecdir}/ibus-dconf
+%{_datadir}/ibus/component/dconf.xml
+%dir %{_sysconfdir}/dconf/db/ibus.d
+%{_sysconfdir}/dconf/db/ibus.d/00-upstream-settings
+%{_sysconfdir}/dconf/profile/ibus
+%{_datadir}/GConf/gsettings/ibus.convert
+%{_datadir}/glib-2.0/schemas/org.freedesktop.ibus.gschema.xml
+
+%files gconf
+%defattr(644,root,root,755)
+%attr(755,root,root) %{_libexecdir}/ibus-gconf
+%{_datadir}/ibus/component/gconf.xml
+%{_sysconfdir}/gconf/schemas/ibus.schemas
%files gtk2
%defattr(644,root,root,755)
%defattr(644,root,root,755)
%attr(755,root,root) %{_libdir}/gtk-3.0/*/immodules/im-ibus.so
-%files gnome3
+%files wayland
%defattr(644,root,root,755)
-%{_datadir}/gnome-shell/js/ui/status/ibus
-%{_datadir}/gnome-shell/extensions/ibus-indicator@example.com
+%attr(755,root,root) %{_libexecdir}/ibus-wayland
+
+%files libs
+%defattr(644,root,root,755)
+%attr(755,root,root) %{_libdir}/libibus-1.0.so.*.*.*
+%attr(755,root,root) %ghost %{_libdir}/libibus-1.0.so.5
+%{_libdir}/girepository-1.0/IBus-1.0.typelib
%files devel
%defattr(644,root,root,755)
-%doc %{_gtkdocdir}/ibus
-%attr(755,root,root) %{_libdir}/lib*.so
+%attr(755,root,root) %{_libdir}/libibus-1.0.so
%{_pkgconfigdir}/ibus-1.0.pc
%{_includedir}/ibus-1.0
%{_datadir}/gir-1.0/IBus-1.0.gir
+
+%if %{with static_libs}
+%files static
+%defattr(644,root,root,755)
+%{_libdir}/libibus-1.0.a
+%endif
+
+%files apidocs
+%defattr(644,root,root,755)
+%{_gtkdocdir}/ibus
+
+%files -n python-ibus
+%defattr(644,root,root,755)
+%dir %{py_sitescriptdir}/ibus
+%{py_sitescriptdir}/ibus/*.py[co]
+%dir %{py_sitescriptdir}/ibus/interface
+%{py_sitescriptdir}/ibus/interface/*.py[co]
+%{py_sitedir}/gi/overrides/IBus.py[co]
+
+%if %{with vala}
+%files -n vala-ibus
+%defattr(644,root,root,755)
%{_datadir}/vala/vapi/ibus-1.0.vapi
%{_datadir}/vala/vapi/ibus-1.0.deps
+%endif
+
+%files -n bash-completion-ibus
+%defattr(644,root,root,755)
+%{_datadir}/bash-completion/completions/ibus.bash