# # spec file for package gtk2 # # Copyright (c) 2014 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.24.22 Release: 0 # FIXME: when updating to next version, check whether we can remove the workaround for bgo#596977 below (removing -fomit-frame-pointer) Summary: The GTK+ toolkit library (version 2) License: LGPL-2.1+ Group: System/Libraries Url: http://www.gtk.org/ Source: http://download.gnome.org/sources/gtk+/2.24/%{_name}-%{version}.tar.xz Source2: README.SuSE Source3: gtkrc Source4: baselibs.conf Source5: macros.gtk2 # PATCH-FIX-UPSTREAM gtk2-window-dragging.patch bgo#611313 -- Taken from Fedora, to support window dragging from menubars/toolbars Patch0: gtk2-window-dragging.patch # PATCH-FIX-OPENSUSE gtk2-GTK_PATH64.patch sbrabec@novell.com - 64-bit dual install. Use GTK_PATH64 environment variable instead of GTK_PATH Patch8: gtk2-GTK_PATH64.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 # PATCH-FIX-UPSTREAM gtk2-print-to-file.patch bnc#839089 bgo#710746 bgo#711177 mgorse@suse.com -- Fix printing to file with no directory specified. bnc839089 bgo711177 Patch54: gtk2-print-to-file.patch # PATCH-FIX-UPSTREAM gtk2-default-printer.patch bgo#577642 mgorse@suse.com -- Save selected printer as default Patch55: gtk2-default-printer.patch BuildRequires: atk-devel BuildRequires: cairo-devel BuildRequires: cups-devel BuildRequires: fdupes BuildRequires: gcc-c++ 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 BuildRequires: pkgconfig(fontconfig) BuildRequires: pkgconfig(x11) BuildRequires: pkgconfig(xcomposite) BuildRequires: pkgconfig(xcursor) BuildRequires: pkgconfig(xdamage) BuildRequires: pkgconfig(xext) BuildRequires: pkgconfig(xfixes) BuildRequires: pkgconfig(xi) BuildRequires: pkgconfig(xinerama) BuildRequires: pkgconfig(xrandr) >= 1.2.99 BuildRequires: pkgconfig(xrender) 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 Summary: The GTK+ toolkit library (version 2) Group: System/Libraries Requires(post): %{name}-tools >= 2.24.20 # 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} 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 -n typelib-1_0-Gtk-2_0 Summary: The GTK+ toolkit library (version 2) -- Introspection bindings Group: System/Libraries %description -n typelib-1_0-Gtk-2_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. This package provides the GObject Introspection bindings for GTK+. %package immodule-amharic Summary: The GTK+ toolkit library (version 2) -- Amharic Input Method Group: System/Libraries Requires: %{name} = %{version} Requires(post): %{name}-tools >= 2.24.20 Requires(postun): %{name}-tools >= 2.24.20 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 Summary: The GTK+ toolkit library (version 2) -- Inuktitut Input Method Group: System/Libraries Requires: %{name} = %{version} Requires(post): %{name}-tools >= 2.24.20 Requires(postun): %{name}-tools >= 2.24.20 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 Summary: The GTK+ toolkit library (version 2) -- Multipress Input Method Group: System/Libraries Requires: %{name} = %{version} Requires(post): %{name}-tools >= 2.24.20 Requires(postun): %{name}-tools >= 2.24.20 %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 Summary: The GTK+ toolkit library (version 2) -- Thai-Lao Input Method Group: System/Libraries Requires: %{name} = %{version} Requires(post): %{name}-tools >= 2.24.20 Requires(postun): %{name}-tools >= 2.24.20 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 Summary: The GTK+ toolkit library (version 2) -- Tigrigna Input Methods Group: System/Libraries Requires: %{name} = %{version} Requires(post): %{name}-tools >= 2.24.20 Requires(postun): %{name}-tools >= 2.24.20 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 Summary: The GTK+ toolkit library (version 2) -- Vietnamese Input Method Group: System/Libraries Requires: %{name} = %{version} Requires(post): %{name}-tools >= 2.24.20 Requires(postun): %{name}-tools >= 2.24.20 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 Summary: The GTK+ toolkit library (version 2) -- X Input Method Group: System/Libraries Requires: %{name} = %{version} Requires(post): %{name}-tools >= 2.24.20 Requires(postun): %{name}-tools >= 2.24.20 Provides: locale(%{name}:ja) Provides: locale(%{name}:ko) 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 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 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 Summary: The GTK+ toolkit library (version 2) -- Upstream theme configuration Group: System/Libraries Requires: libgtk-2_0-0 = %{version} Provides: %{name}-branding = %{version} Conflicts: otherproviders(%{name}-branding) Supplements: packageand(%{name}:branding-upstream) BuildArch: noarch #BRAND: Provides /etc/gtk-2.0/gtkrc, to define default theme and icon theme. #BRAND: Do not forget to add proper Requires in branding package if changing #BRAND: those. %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 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: typelib-1_0-Gtk-2_0 = %{version} # 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 # remove incomplete translations caused by translation-update-upstream (global LINGUAS file, two domains) for LNG in po/*.po ; do LNG=`basename ${LNG%%.po}` if ! test -f po-properties/$LNG.po ; then echo "Removing incomplete $LNG from LINGUAS." sed -i "/^$LNG\$/d" po/LINGUAS fi done gnome-patch-translation-prepare %patch0 -p1 %if "%{_lib}" == "lib64" cp -a %{SOURCE2} . # WARNING: This patch does not patch not installed demos and tests. %patch8 -p1 %endif %patch22 -p1 %patch23 -p1 %patch24 -p1 %patch53 %patch54 -p1 %patch55 -p1 gnome-patch-translation-update %build NOCONFIGURE=1 gnome-autogen.sh export CFLAGS="%{optflags}" 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} %install %make_install 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 %{SOURCE3} %{buildroot}%{_sysconfdir}/gtk-2.0 touch %{buildroot}%{_libdir}/gtk-2.0/%{gtk_binary_version}/immodules.cache %if "%{_lib}" == "lib64" mv %{buildroot}%{_bindir}/gtk-query-immodules-2.0 %{buildroot}%{_bindir}/gtk-query-immodules-2.0-64 %endif # Alternatives for gtk-update-icon-cache 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 touch %{buildroot}%{_bindir}/gtk-update-icon-cache touch %{buildroot}%{_mandir}/man1/gtk-update-icon-cache.1 chmod a+x %{buildroot}%{_bindir}/gtk-update-icon-cache # Install rpm macros mkdir -p %{buildroot}%{_sysconfdir}/rpm cp %{SOURCE5} %{buildroot}%{_sysconfdir}/rpm %fdupes %{buildroot}%{_datadir} %fdupes %{buildroot}%{_libdir} ########################################################################### # 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 %else %define _gtk_query_immodules %{_bindir}/gtk-query-immodules-2.0 %endif %define _gtk_query_immodules_update_cache %{_gtk_query_immodules} --update-cache %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 %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 %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 %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 %ghost %{_libdir}/gtk-2.0/%{gtk_binary_version}/immodules.cache %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.* %files -n typelib-1_0-Gtk-2_0 %defattr(-,root,root) %{_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) %{_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/gdk2/ %doc %{_datadir}/gtk-doc/html/gtk2/ %{_bindir}/gtk-builder-convert %{_bindir}/gtk-demo %{_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