gtk2/gtk2.spec

589 lines
21 KiB
RPMSpec

#
# spec file for package gtk2 (Version 2.22.1)
#
# Copyright (c) 2010 SUSE LINUX Products 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/
#
# When updating the binary version, do not forget to also update baselibs.conf
%define gtk_binary_version 2.10.0
Name: gtk2
%define _name gtk+
Version: 2.22.1
Release: 4
# NOTE: on upgrade to a new upstream version, change the Obsoletes from <= to < (here and in baselibs.conf)
# FIXME: 2.19.3 doesn't compile with parallel build. Check if this is still true for later versions.
# FIXME: when updating to next version, check whether we can remove the workaround for bgo#596977 below (removing -fomit-frame-pointer)
License: LGPLv2.1+
Summary: The GTK+ toolkit library (version 2)
Url: http://www.gtk.org/
Group: System/Libraries
Source: ftp://ftp.gnome.org/pub/GNOME/sources/%{_name}/2.12/%{_name}-%{version}.tar.bz2
Source2: README.SuSE
Source3: gtkrc
Source4: baselibs.conf
Source5: macros.gtk2
# PATCH-FIX-OPENSUSE gtk64.patch sbrabec@novell.com - 64-bit dual install. See also the Fedora patch for a simpler way of doing this.
Patch8: gtk64.patch
# PATCH-FEATURE-UPSTREAM bugzilla-129753-gtk+-2.8.9-localize-font-style-name.diff bnc129753 bgo319484 mfabian@novell.com - Translate the font styles in the GUI
Patch22: bugzilla-129753-gtk+-2.8.9-localize-font-style-name.diff
# PATCH-FIX-OPENSUSE bugzilla-131498-allow-xim-for-all-languages.patch bnc131498 mfabian@novell.com - Allow all languages to be run with the X Input Method
Patch23: bugzilla-131498-allow-xim-for-all-languages.patch
# PATCH-FIX-UPSTREAM gtk2-bnc130159-bgo319483-async-selection-in-gtk-font-selection.diff bnc130159 bgo319483 federico@novell.com - Load fonts asynchronously in GtkFontSelection to make it appear faster for CJK languages
Patch24: gtk2-bnc130159-bgo319483-async-selection-in-gtk-font-selection.diff
# Patches taken from upstream or slated to go upstream. We can expect these to become obsolete
# in future releases.
# Please don't delete this comment even if this section is empty -- "# empty" should
# be sufficient.
# FIXME: this section is incomplete, and that some of the patches listed earlier should
# be here instead.
# PATCH-FIX-OPENSUSE gtk-path-local.patch Search in /usr/local/%{_lib} by default. bnc369696 bgo534474
Patch53: gtk-path-local.patch
BuildRequires: fdupes
BuildRequires: gcc-c++
BuildRequires: atk-devel
BuildRequires: cairo-devel
BuildRequires: cups-devel
BuildRequires: gdk-pixbuf-devel
# Needed for patches touching the build system
BuildRequires: gnome-common
BuildRequires: gnome-patch-translation
BuildRequires: gobject-introspection-devel
BuildRequires: libjasper-devel
BuildRequires: libtiff-devel
BuildRequires: pango-devel
BuildRequires: translation-update-upstream
BuildRoot: %{_tmppath}/%{name}-%{version}-build
%description
GTK+ is a multi-platform toolkit for creating graphical user interfaces.
Offering a complete set of widgets, GTK+ is suitable for projects
ranging from small one-off projects to complete application suites.
%package -n libgtk-2_0-0
License: LGPLv2.1+
Summary: The GTK+ toolkit library (version 2)
Group: System/Libraries
Requires(post): %{name}-tools
# While hicolor is not a Requires strictly speaking, we put it as
# such instead of as a Recommends because many applications just
# assume it's there and we need to have a low-level package to
# bring it in.
Requires: hicolor-icon-theme
# gtk+ can work without branding/data/translations. Built in defaults will be used then.
Recommends: %{name}-branding
Recommends: %{name}-data = %{version}
# it's nice to have input modules for various locales installed by default
Recommends: %{name}-immodule-amharic = %{version}
Recommends: %{name}-immodule-inuktitut = %{version}
Recommends: %{name}-immodule-thai = %{version}
Recommends: %{name}-immodule-tigrigna = %{version}
Recommends: %{name}-immodule-vietnamese = %{version}
Recommends: %{name}-lang
Recommends: gvfs
# Provide %{name} to make the lang and immodules packages installable
Provides: %{name} = %{version}
# Note: we keep <= (and a rpmlint warning...) until we get a version higher than 2.22.2 (when this provides/obsoletes was introduced)
Obsoletes: %{name} <= %{version}
# gail is part of gtk+ as of 2.13.x
Provides: gail = 1.22.1
Obsoletes: gail < 1.22.1
# bug437293
%ifarch ppc64
Obsoletes: gtk2-64bit
%endif
#
%description -n libgtk-2_0-0
GTK+ is a multi-platform toolkit for creating graphical user interfaces.
Offering a complete set of widgets, GTK+ is suitable for projects
ranging from small one-off projects to complete application suites.
%package immodule-amharic
License: LGPLv2.1+
Summary: The GTK+ toolkit library (version 2) -- Amharic Input Method
Group: System/Libraries
Requires: %{name} = %{version}
Requires(post): %{name}-tools
Requires(postun): %{name}-tools
Provides: locale(%{name}:am)
%description immodule-amharic
GTK+ is a multi-platform toolkit for creating graphical user interfaces.
Offering a complete set of widgets, GTK+ is suitable for projects
ranging from small one-off projects to complete application suites.
This package provides an input method for Amharic.
%package immodule-inuktitut
License: LGPLv2.1+
Summary: The GTK+ toolkit library (version 2) -- Inuktitut Input Method
Group: System/Libraries
Requires: %{name} = %{version}
Requires(post): %{name}-tools
Requires(postun): %{name}-tools
Provides: locale(%{name}:iu)
%description immodule-inuktitut
GTK+ is a multi-platform toolkit for creating graphical user interfaces.
Offering a complete set of widgets, GTK+ is suitable for projects
ranging from small one-off projects to complete application suites.
This package provides an input method for Inuktitut.
%package immodule-multipress
License: LGPLv2.1+
Summary: The GTK+ toolkit library (version 2) -- Multipress Input Method
Group: System/Libraries
Requires: %{name} = %{version}
Requires(post): %{name}-tools
Requires(postun): %{name}-tools
%description immodule-multipress
GTK+ is a multi-platform toolkit for creating graphical user interfaces.
Offering a complete set of widgets, GTK+ is suitable for projects
ranging from small one-off projects to complete application suites.
This package provides an input method which allows text entry via the
multi-press method, as on a mobile phone.
%package immodule-thai
License: LGPLv2.1+
Summary: The GTK+ toolkit library (version 2) -- Thai-Lao Input Method
Group: System/Libraries
Requires: %{name} = %{version}
Requires(post): %{name}-tools
Requires(postun): %{name}-tools
Provides: locale(%{name}:lo)
Provides: locale(%{name}:th)
%description immodule-thai
GTK+ is a multi-platform toolkit for creating graphical user interfaces.
Offering a complete set of widgets, GTK+ is suitable for projects
ranging from small one-off projects to complete application suites.
This package provides an input method for Thai-Lao.
%package immodules-tigrigna
License: LGPLv2.1+
Summary: The GTK+ toolkit library (version 2) -- Tigrigna Input Methods
Group: System/Libraries
Requires: %{name} = %{version}
Requires(post): %{name}-tools
Requires(postun): %{name}-tools
Provides: locale(%{name}:ti)
%description immodules-tigrigna
GTK+ is a multi-platform toolkit for creating graphical user interfaces.
Offering a complete set of widgets, GTK+ is suitable for projects
ranging from small one-off projects to complete application suites.
This package provides two input methods for Tigrigna.
%package immodule-vietnamese
License: LGPLv2.1+
Summary: The GTK+ toolkit library (version 2) -- Vietnamese Input Method
Group: System/Libraries
Requires: %{name} = %{version}
Requires(post): %{name}-tools
Requires(postun): %{name}-tools
Provides: locale(%{name}:vi)
%description immodule-vietnamese
GTK+ is a multi-platform toolkit for creating graphical user interfaces.
Offering a complete set of widgets, GTK+ is suitable for projects
ranging from small one-off projects to complete application suites.
This package provides an input method for Vietnamese.
%package immodule-xim
License: LGPLv2.1+
Summary: The GTK+ toolkit library (version 2) -- X Input Method
Group: System/Libraries
Requires: %{name} = %{version}
Requires(post): %{name}-tools
Requires(postun): %{name}-tools
Provides: locale(%{name}:ko)
Provides: locale(%{name}:ja)
Provides: locale(%{name}:th)
Provides: locale(%{name}:zh)
%description immodule-xim
GTK+ is a multi-platform toolkit for creating graphical user interfaces.
Offering a complete set of widgets, GTK+ is suitable for projects
ranging from small one-off projects to complete application suites.
This package provides an input method based on the X Input Method.
%package tools
License: LGPLv2.1+
Summary: The GTK+ toolkit library (version 2) -- Tools
Group: System/Libraries
Requires(post): update-alternatives
Requires(postun): update-alternatives
%description tools
GTK+ is a multi-platform toolkit for creating graphical user interfaces.
Offering a complete set of widgets, GTK+ is suitable for projects
ranging from small one-off projects to complete application suites.
%package data
License: LGPLv2.1+
Summary: The GTK+ toolkit library (version 2) -- Data Files
Group: System/Libraries
BuildArch: noarch
%description data
GTK+ is a multi-platform toolkit for creating graphical user interfaces.
Offering a complete set of widgets, GTK+ is suitable for projects
ranging from small one-off projects to complete application suites.
%package branding-upstream
License: LGPLv2.1+
Summary: The GTK+ toolkit library (version 2) -- Branding Files
Group: System/Libraries
Provides: %{name}-branding = %{version}
Conflicts: otherproviders(%{name}-branding)
Supplements: packageand(%{name}:branding-upstream)
%description branding-upstream
GTK+ is a multi-platform toolkit for creating graphical user interfaces.
Offering a complete set of widgets, GTK+ is suitable for projects
ranging from small one-off projects to complete application suites.
%package devel
License: LGPLv2.1+
Summary: The GTK+ toolkit library (version 2) -- Development Files
Group: Development/Libraries/X11
Requires: libgtk-2_0-0 = %{version}
# gtk-builder-convert needs this.
Requires: python-xml
Requires(post): update-alternatives
Requires(postun): update-alternatives
# gail is part of gtk+ as of 2.13.x
Provides: gail-devel = 1.22.1
Obsoletes: gail-devel < 1.22.1
Provides: gtk2-doc = %{version}
Obsoletes: gtk2-doc < %{version}
# bug437293
%ifarch ppc64
Obsoletes: gtk2-devel-64bit
%endif
#
%description devel
GTK+ is a multi-platform toolkit for creating graphical user interfaces.
Offering a complete set of widgets, GTK+ is suitable for projects
ranging from small one-off projects to complete application suites.
This package contains the development files for GTK+ 2.x.
%lang_package
%prep
%setup -q -n %{_name}-%{version}
translation-update-upstream
translation-update-upstream po-properties gtk20-properties
gnome-patch-translation-prepare
%if "%_lib" == "lib64"
cp -a %{S:2} .
# WARNING: This patch does not patch not installed demos and tests.
%patch8 -p1
%endif
%patch22 -p1
%patch23 -p1
%patch24 -p1
%patch53
gnome-patch-translation-update
%build
NOCONFIGURE=1 gnome-autogen.sh
export CFLAGS="$RPM_OPT_FLAGS"
export CFLAGS="$CFLAGS -fstack-protector"
%ifarch ppc64
export CFLAGS="$CFLAGS -mminimal-toc"
%endif
# fix crash in gdm, nautilus, etc. (bgo#596977)
export CFLAGS=`echo $CFLAGS | sed -e 's/-fomit-frame-pointer//g'`
%configure \
--disable-static \
--enable-man \
--with-xinput=xfree \
--enable-introspection
#%{__make} %{?_smp_mflags}
%{__make}
%install
%makeinstall
find %{buildroot}%{_libdir} -name '*.la' -delete -print
%if 0%{?suse_version} <= 1130
%{__rm} %{buildroot}%{_datadir}/locale/kg/LC_MESSAGES/*
%endif
%find_lang gtk20
%find_lang gtk20-properties
install -m 644 %{S:3} %{buildroot}%{_sysconfdir}/gtk-2.0
touch %{buildroot}%{_sysconfdir}/gtk-2.0/gtk.immodules
%if "%_lib" == "lib64"
mv %{buildroot}%{_bindir}/gtk-query-immodules-2.0 %{buildroot}%{_bindir}/gtk-query-immodules-2.0-64
mv %{buildroot}%{_sysconfdir}/gtk-2.0/gtk.immodules %{buildroot}%{_sysconfdir}/gtk-2.0/gtk64.immodules
%endif
# Alternatives for gtk-update-icon-cache and gtk-builder-convert
mv %{buildroot}%{_bindir}/gtk-update-icon-cache %{buildroot}%{_bindir}/gtk-update-icon-cache-2.0
mv %{buildroot}%{_mandir}/man1/gtk-update-icon-cache.1 %{buildroot}%{_mandir}/man1/gtk-update-icon-cache-2.0.1
mv %{buildroot}%{_bindir}/gtk-builder-convert %{buildroot}%{_bindir}/gtk-builder-convert-2.0
mv %{buildroot}%{_mandir}/man1/gtk-builder-convert.1 %{buildroot}%{_mandir}/man1/gtk-builder-convert-2.0.1
touch %{buildroot}%{_bindir}/gtk-update-icon-cache
touch %{buildroot}%{_mandir}/man1/gtk-update-icon-cache.1
touch %{buildroot}%{_bindir}/gtk-builder-convert
touch %{buildroot}%{_mandir}/man1/gtk-builder-convert.1
chmod a+x %{buildroot}%{_bindir}/gtk-update-icon-cache %{buildroot}%{_bindir}/gtk-builder-convert
# Install rpm macros
mkdir -p %{buildroot}%{_sysconfdir}/rpm
cp %{S:5} %{buildroot}%{_sysconfdir}/rpm
%fdupes %{buildroot}%{_datadir}
%fdupes %{buildroot}%{_libdir}
%clean
rm -rf %{buildroot}
###########################################################################
# Note: when updating scriptlets, don't forget to also update baselibs.conf
###########################################################################
# Convenient %define for the scriplets
%if "%_lib" == "lib64"
%define _gtk_query_immodules %{_bindir}/gtk-query-immodules-2.0-64
%define _gtk_query_immodules_update_cache %{_gtk_query_immodules} > %{_sysconfdir}/gtk-2.0/gtk64.immodules
%else
%define _gtk_query_immodules %{_bindir}/gtk-query-immodules-2.0
%define _gtk_query_immodules_update_cache %{_gtk_query_immodules} > %{_sysconfdir}/gtk-2.0/gtk.immodules
%endif
%post -n libgtk-2_0-0
/sbin/ldconfig
%if 0
# In case libgtk-2_0-0 gets installed before gtk2-tools, we don't want to fail.
# So we make the call to gtk-query-immodules-2.0 dependent on the existence of
# the binary. This is why we also have a %post for gtk2-tools.
%endif
if test -f %{_gtk_query_immodules}; then
%{_gtk_query_immodules_update_cache}
fi
%post immodule-amharic
%{_gtk_query_immodules_update_cache}
%post immodule-inuktitut
%{_gtk_query_immodules_update_cache}
%post immodule-multipress
%{_gtk_query_immodules_update_cache}
%post immodule-thai
%{_gtk_query_immodules_update_cache}
%post immodules-tigrigna
%{_gtk_query_immodules_update_cache}
%post immodule-vietnamese
%{_gtk_query_immodules_update_cache}
%post immodule-xim
%{_gtk_query_immodules_update_cache}
%post tools
%if 0
# If we install gtk2-tools for the first time, then we should run it in case
# libgtk-2_0-0 was installed first (ie, if
# %{_libdir}/gtk-2.0/%{gtk_binary_version} already exists) which means
# gtk-query-immodules-2.0 couldn't run there.
%endif
if [ $1 == 1 ]; then
test -d %{_libdir}/gtk-2.0/%{gtk_binary_version}
if test $? -eq 0; then
%{_gtk_query_immodules_update_cache}
fi
fi
%if 0
# If the gtk-update-icon-cache group is in automatic mode, then this will also
# switch all symlinks automatically
%endif
update-alternatives --install %{_bindir}/gtk-update-icon-cache gtk-update-icon-cache %{_bindir}/gtk-update-icon-cache-2.0 2 \
--slave %{_mandir}/man1/gtk-update-icon-cache.1.gz gtk-update-icon-cache.1.gz %{_mandir}/man1/gtk-update-icon-cache-2.0.1.gz
%post devel
%if 0
# If the gtk-builder-convert group is in automatic mode, then this will also
# switch all symlinks automatically
%endif
update-alternatives --install %{_bindir}/gtk-builder-convert gtk-builder-convert %{_bindir}/gtk-builder-convert-2.0 2 \
--slave %{_mandir}/man1/gtk-builder-convert.1.gz gtk-builder-convert.1.gz %{_mandir}/man1/gtk-builder-convert-2.0.1.gz
%if 0
# No need to call gtk-query-immodules-2.0 in postun:
# - if it's an upgrade, it will have been called in post
# - if it's an uninstall, we don't care about this anymore
%endif
%postun -n libgtk-2_0-0 -p /sbin/ldconfig
%postun immodule-amharic
%{_gtk_query_immodules_update_cache}
%postun immodule-inuktitut
%{_gtk_query_immodules_update_cache}
%postun immodule-multipress
%{_gtk_query_immodules_update_cache}
%postun immodule-thai
%{_gtk_query_immodules_update_cache}
%postun immodules-tigrigna
%{_gtk_query_immodules_update_cache}
%postun immodule-vietnamese
%{_gtk_query_immodules_update_cache}
%postun immodule-xim
%{_gtk_query_immodules_update_cache}
%postun tools
%if 0
# Note: we don't use "$1 -eq 0", to avoid issues if the package gets renamed
%endif
if [ ! -f %{_bindir}/gtk-update-icon-cache-2.0 ]; then
update-alternatives --remove gtk-update-icon-cache %{_bindir}/gtk-update-icon-cache-2.0
fi
%postun devel
%if 0
# Note: we don't use "$1 -eq 0", to avoid issues if the package gets renamed
%endif
if [ ! -f %{_bindir}/gtk-builder-convert-2.0 ]; then
update-alternatives --remove gtk-builder-convert %{_bindir}/gtk-builder-convert-2.0
fi
%files -n libgtk-2_0-0
%defattr(-,root,root)
%doc AUTHORS COPYING README NEWS ChangeLog
%if "%_lib" == "lib64"
%doc README.SuSE
%endif
%dir %{_sysconfdir}/gtk-2.0
%if "%_lib" == "lib64"
%ghost %{_sysconfdir}/gtk-2.0/gtk64.immodules
%else
%ghost %{_sysconfdir}/gtk-2.0/gtk.immodules
%endif
%dir %{_libdir}/gtk-2.0
%dir %{_libdir}/gtk-2.0/%{gtk_binary_version}
%dir %{_libdir}/gtk-2.0/%{gtk_binary_version}/engines
%{_libdir}/gtk-2.0/%{gtk_binary_version}/engines/libpixmap.so
%dir %{_libdir}/gtk-2.0/%{gtk_binary_version}/immodules
%{_libdir}/gtk-2.0/%{gtk_binary_version}/immodules/im-cedilla.so
%{_libdir}/gtk-2.0/%{gtk_binary_version}/immodules/im-cyrillic-translit.so
%{_libdir}/gtk-2.0/%{gtk_binary_version}/immodules/im-ipa.so
%dir %{_libdir}/gtk-2.0/%{gtk_binary_version}/printbackends
%{_libdir}/gtk-2.0/%{gtk_binary_version}/printbackends/libprintbackend-cups.so
%{_libdir}/gtk-2.0/%{gtk_binary_version}/printbackends/libprintbackend-file.so
%{_libdir}/gtk-2.0/%{gtk_binary_version}/printbackends/libprintbackend-lpr.so
%dir %{_libdir}/gtk-2.0/modules
%{_libdir}/gtk-2.0/modules/libgail.so
%{_libdir}/libgailutil.so.*
%{_libdir}/libgdk-x11-2.0.so.*
%{_libdir}/libgtk-x11-2.0.so.*
%{_libdir}/girepository-1.0/Gdk-2.0.typelib
%{_libdir}/girepository-1.0/GdkX11-2.0.typelib
%{_libdir}/girepository-1.0/Gtk-2.0.typelib
%files immodule-amharic
%defattr(-,root,root)
%{_libdir}/gtk-2.0/%{gtk_binary_version}/immodules/im-am-et.so
%files immodule-inuktitut
%defattr(-,root,root)
%{_libdir}/gtk-2.0/%{gtk_binary_version}/immodules/im-inuktitut.so
%files immodule-multipress
%defattr(-,root,root)
%doc modules/input/README.multipress
%{_libdir}/gtk-2.0/%{gtk_binary_version}/immodules/im-multipress.so
%config %{_sysconfdir}/gtk-2.0/im-multipress.conf
%files immodule-thai
%defattr(-,root,root)
%{_libdir}/gtk-2.0/%{gtk_binary_version}/immodules/im-thai.so
%files immodules-tigrigna
%defattr(-,root,root)
%{_libdir}/gtk-2.0/%{gtk_binary_version}/immodules/im-ti-er.so
%{_libdir}/gtk-2.0/%{gtk_binary_version}/immodules/im-ti-et.so
%files immodule-vietnamese
%defattr(-,root,root)
%{_libdir}/gtk-2.0/%{gtk_binary_version}/immodules/im-viqr.so
%files immodule-xim
%defattr(-,root,root)
%{_libdir}/gtk-2.0/%{gtk_binary_version}/immodules/im-xim.so
%files tools
%defattr(-,root,root)
%{_bindir}/gtk-query-immodules-2.0*
%{_bindir}/gtk-update-icon-cache-2.0
%ghost %{_bindir}/gtk-update-icon-cache
%{_mandir}/man1/gtk-query-immodules-2.0*.1*
%{_mandir}/man1/gtk-update-icon-cache-2.0.1*
%ghost %{_mandir}/man1/gtk-update-icon-cache.1*
%files data
%defattr(-,root,root)
%{_datadir}/themes/Default/
%{_datadir}/themes/Emacs/
%{_datadir}/themes/Raleigh/
%files branding-upstream
%defattr(-,root,root)
%config %{_sysconfdir}/gtk-2.0/gtkrc
%files lang -f gtk20.lang -f gtk20-properties.lang
%files devel
%defattr(-,root,root)
%doc %{_datadir}/gtk-doc/html/gail-libgail-util/
%doc %{_datadir}/gtk-doc/html/gdk/
%doc %{_datadir}/gtk-doc/html/gtk/
%{_bindir}/gtk-builder-convert-2.0
%ghost %{_bindir}/gtk-builder-convert
%{_bindir}/gtk-demo
%{_mandir}/man1/gtk-builder-convert-2.0.1*
%ghost %{_mandir}/man1/gtk-builder-convert.1*
%{_datadir}/aclocal/gtk-2.0.m4
%{_datadir}/gir-1.0/*.gir
%dir %{_datadir}/gtk-2.0
%{_datadir}/gtk-2.0/demo/
%{_includedir}/gail-1.0/
%{_includedir}/gtk-2.0/
%{_includedir}/gtk-unix-print-2.0/
%{_libdir}/gtk-2.0/include/
%{_libdir}/gtk-2.0/modules/libferret.so
%{_libdir}/pkgconfig/*.pc
%{_libdir}/libgailutil.so
%{_libdir}/libgdk-x11-2.0.so
%{_libdir}/libgtk-x11-2.0.so
%{_sysconfdir}/rpm/macros.gtk2
%changelog