File ibus.spec of Package ibus

#
# spec file for package ibus
#
# Copyright (c) 2017 SUSE LINUX GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
# upon. The license for this file, and modifications and additions to the
# file, is the same license as for the pristine package itself (unless the
# license for the pristine package is not an Open Source License, in which
# case the license is the MIT License). An "Open Source License" is a
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.

# Please submit bugfixes or comments via http://bugs.opensuse.org/
#


%define gtk_binary_version %(pkg-config  --variable=gtk_binary_version gtk+-2.0)
# temporary disable, 'coz ibus is not python3 ready
%define with_python3 0
%if 0%{?is_opensuse}
%define with_wayland 1
%define with_kde 1
%else
%define with_wayland 0
%define with_kde 0
%endif

Name:           ibus
Version:        1.5.16
Release:        0
Summary:        Intelligent Input Bus for Linux OS
License:        LGPL-2.1+
Group:          System/I18n/Chinese
Url:            https://github.com/ibus/
#Source:         https://github.com/ibus/ibus/releases/download/%{version}/%{name}-%{version}.tar.gz
Source:         %{name}-%{version}.tar.gz
Source2:        README.SUSE
Source3:        xim.ibus.suse.template
Source4:        xim.d-ibus-121
%if %{with_kde}
Source5:        kde.tar.gz
Source6:        kde-12.2.tar.gz
%endif
Source7:        macros.ibus
Source10:       ibus-autostart
Source11:       ibus-autostart.desktop
Source99:       baselibs.conf
# PATCH-FIX-OPENSUSE ibus-python-install-dir.patch ftake@geeko.jp
Patch0:         ibus-python-install-dir.patch
# PATFH-FIX-OPENSUSE ibus-xim-fix-re-focus-after-lock.patch bnc#874869 tiwai@suse.de -- Fix lost XIM input after screenlock
Patch4:         ibus-xim-fix-re-focus-after-lock.patch
# PATCH-FIX-UPSTREAM marguerite@opensuse.org
# Ibus will use python3 only when variable PYTHON2 is empty.
# Thus ibus-setup and bindings are still bytecompiled with python2.
# Then python3 support is useless, so we force python3 when python3
# is enabled, and fix syntax errors in python-config.py
Patch5:         ibus-force-python3.patch
# PATCH-FIX-UPSTREAM marguerite@opensuse.org
Patch7:         ibus-python3-migration.patch
# PATCH-FIX-UPSTREAM ftake@geeko.jp
# Select an IM engine at the first login
Patch8:         im-engines-precede-xkb.patch
# PATCH-FIX-UPSTREAM ftake@geeko.jp
Patch9:         ibus-fix-check-abs-icon-path-support.patch
# PATCH-FIX-SLE hide-setup-menu.patch bnc#899259  qzhao@suse.com
# ibus-setup should not launch from main menu.
Patch10:        hide-setup-menu.patch
# PATCH-FIX-SLE setup-switch-im.patch bnc#899259  qzhao@suse.com
# switch to ibus when ibus not running.
Patch11:        setup-switch-im.patch
# 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.
Patch12:        ibus-disable-engines-preload-in-GNOME.patch
BuildRequires:  dbus-1-glib-devel
BuildRequires:  dbus-1-python-devel >= 0.83.0
BuildRequires:  dconf-devel >= 0.7.5
BuildRequires:  fdupes
BuildRequires:  gconf2-devel
BuildRequires:  gettext-devel
BuildRequires:  glib2-devel >= 2.34.0
BuildRequires:  gobject-introspection-devel >= 0.9.6
BuildRequires:  gtk-doc >= 1.9
BuildRequires:  gtk2-devel
BuildRequires:  intltool
BuildRequires:  iso-codes-devel
BuildRequires:  libnotify-devel >= 0.7
BuildRequires:  libtool
BuildRequires:  python-devel
BuildRequires:  python3-devel
BuildRequires:  pkgconfig(json-glib-1.0)
# directory ownership {
%if %{with_kde}
BuildRequires:  oxygen-icon-theme
BuildRequires:  oxygen-icon-theme-scalable
%endif
BuildRequires:  x11-tools
# }
BuildRequires:  pkg-config
%if %{with_python3}
BuildRequires:  python3
BuildRequires:  python3-gobject2-devel
Requires:       python3-gobject2
%if 0%{suse_version} > 1320
Requires:       python3-gobject-Gdk
%endif
%else
BuildRequires:  python
BuildRequires:  python-gobject-devel
Requires:       python-gobject
%if 0%{suse_version} > 1320
Requires:       python2-gobject-Gdk
%endif
%endif
BuildRequires:  update-desktop-files
BuildRequires:  pkgconfig(vapigen)
%if %{with_wayland}
BuildRequires:  pkgconfig(wayland-client) >= 1.2.0
%endif
BuildRequires:  pkgconfig(xkbcommon)
# copy_deep method is supported since 0.31.1
BuildRequires:  vala >= 0.31.1
Requires:       dbus-1-python
Requires:       dconf
Requires:       iso-codes
Requires:       libibus-1_0-5 = %{version}
# ibus-setup will require typelib(Gdk) typelib(GdkX11), typelib(Gtk)
# which are provided by two packages in openSUSE, so we limit their
# versions to 3.0 only.
Requires:       typelib-1_0-Gtk-3_0
Recommends:     %{name}-lang

# PATCH-FEATURE-SLE FATE#319095 qzhao@suse.com
# Add conflict with fcitx to keep old IMF for people who update from SLE-12 SP0 to SP1.
%if !0%{?is_opensuse}
Conflicts:      fcitx
%endif

#Fix cursor following problem in KDE4 for libreoffice.
%if 0%{?suse_version} != 1315
Supplements:    packageand(libreoffice:libreoffice-gnome)
%endif

Provides:       locale(ja;ko;zh)
Obsoletes:      ibus-gnome-shell
BuildRoot:      %{_tmppath}/%{name}-%{version}-build

%description
IBus means Intelligent Input Bus. It is a new input framework for Linux OS. It provides
full featured and user friendly input method user interface. It also may help
developers to develop input method easily.

%package -n libibus-1_0-5
Summary:        IBus libraries
Group:          System/I18n/Chinese
Obsoletes:      libibus-1_0-0

%description -n libibus-1_0-5
This package contains the libraries for IBus

%package -n typelib-1_0-IBus-1_0
Summary:        IBus libraries -- Introspection bindings
Group:          System/I18n/Chinese

%description -n typelib-1_0-IBus-1_0
This package contains the introspection bindings for the IBus library.

%package gtk
Summary:        IBus im module for gtk2
Group:          System/I18n/Chinese
Requires:       %{name} = %{version}
Supplements:    packageand(ibus:gtk2)
%{gtk2_immodule_requires}

%description gtk
This package contains ibus im module for gtk2

%package gtk3
Summary:        IBus im module for gtk3
Group:          System/I18n/Chinese
BuildRequires:  gtk3-devel
Requires:       %{name} = %{version}
Supplements:    packageand(ibus:gtk3)
%{gtk3_immodule_requires}

%description gtk3
This package contains ibus im module for gtk3

%if %{with_python3}
%package -n python3-ibus
Summary:        Python3 module for ibus
Group:          System/I18n/Chinese
Requires:       %{name} = %{version}
Requires:       python3
Obsoletes:      python-ibus

%description -n python3-ibus
This package contains python3 module for ibus

%else
%package -n python-ibus
Summary:        Python module for ibus
Group:          System/I18n/Chinese
Requires:       %{name} = %{version}
%py_requires

%description -n python-ibus
This package contains python module for ibus

%endif

%if %{with_kde}
%package branding-openSUSE-KDE
Summary:        openSUSE branding for KDE
Group:          System/GUI/KDE
Requires:       ibus = %{version}
Supplements:    packageand(ibus:branding-openSUSE-KDE)
Supplements:    packageand(ibus:kdelibs4)
Provides:       ibus-branding = %{version}
Conflicts:      otherproviders(ibus-branding)
%if 0%{?suse_version} >= 1140
BuildArch:      noarch
%endif

%description branding-openSUSE-KDE
openSUSE branding for KDE monochrome icons in systray.
%endif

%package devel
Summary:        Development tools for ibus
Group:          Development/Libraries/Other
Requires:       dbus-1-devel
Requires:       glib2-devel
Requires:       gtk-doc
Requires:       ibus = %{version}
Requires:       libibus-1_0-5 = %{version}
Requires:       typelib-1_0-IBus-1_0 = %{version}

%description devel
The ibus-devel package contains the header files and developer
docs for ibus.

%lang_package

%prep
%setup -q
%patch0 -p1

# hack to fix incompatibility of gtk-query-immodules-2.0 (bnc#845860)
%if 0%{?suse_version} < 1310
sed -i \
    -e's@\(gtk-query-immodules-2.0-64\) --update-cache@\1 > <prefix>%{_sysconfdir}/gtk-2.0/gtk64.immodules@g' \
    -e's@\(gtk-query-immodules-2.0\) --update-cache@\1 > <prefix>%{_sysconfdir}/gtk-2.0/gtk.immodules@g' \
    %{SOURCE99}
%endif

%patch4 -p1

%if %{with_python3}
%patch5 -p1
%patch7 -p1
%endif

%patch8 -p1
%patch9 -p1

%if 0%{?suse_version} == 1315 && !0%{?is_opensuse}
%patch10 -p1
%patch11 -p1
%endif

cp -r %{SOURCE2} .
cp -r %{SOURCE3} .
cp -r %{SOURCE4} .
sed -i 1i"SYS_LIB=%{_lib}" xim.d-ibus-121
cp -r %{SOURCE10} .
cp -r %{SOURCE11} .
%if !0%{?is_opensuse}
%patch12 -p1
%endif

%build
autoreconf -fi
intltoolize -f
%configure --disable-static \
           --enable-gtk3 \
           --enable-vala \
           --disable-emoji-dict \
%if %{with_python3}
	   --with-python=python3 \
%endif
           --enable-python-library \
           --enable-introspection \
           --disable-gconf \
           --enable-dconf \
           --enable-gtk-doc \
%if %{with_wayland}
           --enable-wayland \
%endif
%if 0%{?suse_version} < 1315
           --disable-appindicator \
%endif
           --enable-surrounding-text \
           --enable-appindicator_engine_icon \
           --libexecdir=%{_libdir}/ibus

make %{?_smp_mflags}

%install
make DESTDIR=%{buildroot} install -j1

# autostart
mkdir -p %{buildroot}%{_sysconfdir}/X11/xim.d/
install -m 644 xim.d-ibus-121 %{buildroot}%{_sysconfdir}/X11/xim.d/ibus
mkdir -p %{buildroot}%{_bindir}
install -c -m 0755 ibus-autostart %{buildroot}%{_bindir}/ibus-autostart
mkdir -p %{buildroot}%{_sysconfdir}/xdg/autostart
install -c -m 0644 ibus-autostart.desktop %{buildroot}%{_sysconfdir}/xdg/autostart/ibus-autostart.desktop

PRIORITY=40
pushd %{buildroot}%{_sysconfdir}/X11/xim.d/
    for lang in am ar as bn el fa gu he hi hr ja ka kk kn ko lo ml my \
                pa ru sk vi zh_TW zh_CN zh_HK zh_SG \
                de fr it es nl cs pl da nn nb fi en sv
    do
        mkdir $lang
        pushd $lang
            ln -s ../ibus $PRIORITY-ibus
        popd
    done
popd

# remove static libs
find %{buildroot}/%{_libdir} -name "*.la" -type f -delete -print

mkdir -p %{buildroot}%{_datadir}/pixmaps
ln -sf %{_datadir}/icons/hicolor/48x48/apps/ibus-keyboard.png \
  %{buildroot}%{_datadir}/pixmaps/ibus-keyboard.png

# touch for %%ghost
touch %{buildroot}/%{_sysconfdir}/dconf/db/ibus

%if %{with_kde}
# fix kde monochrome icons
%if 0%{?suse_version} >= 1230
cp -r %{SOURCE5} ./
%else
cp -r %{SOURCE6} ./
mv kde-12.2.tar.gz kde.tar.gz
%endif
tar -xzf kde.tar.gz
pushd kde
for i in 16 22 24 32 48 ; do
	mkdir -p %{buildroot}%{_datadir}/icons/oxygen/${i}x${i}/apps/
	cp -r ibus-keyboard.${i}x${i}.png %{buildroot}%{_datadir}/icons/oxygen/${i}x${i}/apps/ibus-keyboard.png
done
mkdir -p %{buildroot}%{_datadir}/icons/oxygen/scalable/apps/
cp -r ibus-keyboard.svgz %{buildroot}%{_datadir}/icons/oxygen/scalable/apps/
popd
%endif

# install macros
mkdir -p %{buildroot}%{_sysconfdir}/rpm
install -m 644 %{SOURCE7} %{buildroot}%{_sysconfdir}/rpm

%suse_update_desktop_file -r %{name}-setup Settings DesktopSettings X-SuSE-Core-System

%fdupes %{buildroot}

%find_lang ibus10 %{?no_lang_C}

%post
%{glib2_gsettings_schema_post}

%posttrans
dconf update

%postun
%{glib2_gsettings_schema_postun}
dconf update

%post gtk
%{gtk2_immodule_post}

%postun gtk
%{gtk2_immodule_postun}

%post -n libibus-1_0-5 -p /sbin/ldconfig

%postun -n libibus-1_0-5 -p /sbin/ldconfig

%post gtk3
%{gtk3_immodule_post}

%postun gtk3
%{gtk3_immodule_postun}

%files
%defattr(-,root,root)
%doc AUTHORS COPYING README README.SUSE xim.ibus.suse.template
%config %{_sysconfdir}/rpm/macros.ibus
%config %{_sysconfdir}/X11/xim.d/*
%{_bindir}/ibus
%{_bindir}/ibus-autostart
%{_bindir}/ibus-daemon
%{_bindir}/ibus-setup
%{_datadir}/ibus/
%{_datadir}/applications/ibus-setup.desktop
%{_datadir}/GConf/gsettings/ibus.convert
%{_datadir}/glib-2.0/schemas/org.freedesktop.ibus.gschema.xml
%{_datadir}/icons/hicolor/*/apps/ibus*.*
%{_datadir}/pixmaps/ibus-keyboard.png
%{_libdir}/ibus
%{_datadir}/bash-completion/completions/ibus.bash
%{_datadir}/dbus-1/services/org.freedesktop.IBus.service
# This file is generated by dconf update
%ghost %{_sysconfdir}/dconf/db/ibus
%dir %{_sysconfdir}/dconf/db/ibus.d
# This file is not a config file. Users may not modify it.
%{_sysconfdir}/dconf/db/ibus.d/00-upstream-settings
%{_sysconfdir}/dconf/profile/ibus
%{_sysconfdir}/xdg/autostart/ibus-autostart.desktop
%{_mandir}/man1/ibus.1.gz
%{_mandir}/man1/ibus-daemon.1.gz
%{_mandir}/man1/ibus-setup.1.gz

%files lang -f ibus10.lang
%defattr(-,root,root)

%files -n libibus-1_0-5
%defattr(-,root,root)
%{_libdir}/libibus-1.0.so.*

%files -n typelib-1_0-IBus-1_0
%defattr(-,root,root)
%{_libdir}/girepository-1.0/IBus-1.0.typelib

%files gtk
%defattr(-,root,root)
%{_libdir}/gtk-2.0/%{gtk_binary_version}/immodules/im-ibus.so

%files gtk3
%defattr(-,root,root)
%{_libdir}/gtk-3.0/3.0.0/immodules/im-ibus.so

%if %{with_python3}
%files -n python3-ibus
%defattr(-,root,root)
%{python3_sitearch}/ibus

%else

%files -n python-ibus
%defattr(-,root,root)
%{python_sitearch}/ibus
%{python_sitearch}/gi/overrides/*

%endif

%files devel
%defattr(-,root,root)
%{_libdir}/libibus-1.0.so
%{_includedir}/ibus-1.0
%{_datadir}/gtk-doc/html/ibus
%{_libdir}/pkgconfig/ibus-1.0.pc
%{_datadir}/gir-1.0/IBus-1.0.gir
%{_datadir}/vala/vapi/ibus-1.0.deps
%{_datadir}/vala/vapi/ibus-1.0.vapi

%if %{with_kde}
%files branding-openSUSE-KDE
%defattr(-,root,root)
%dir %{_datadir}/icons/oxygen/*
%dir %{_datadir}/icons/oxygen/*/apps
%{_datadir}/icons/oxygen/*/apps/ibus-keyboard.*
%endif

%changelog
openSUSE Build Service is sponsored by