LogoopenSUSE Build Service > Projects
Sign Up | Log In

View File gtk3.spec of Package gtk3 (Project GNOME:Factory)

#
# spec file for package gtk3
#
# Copyright (c) 2012 SUSE LINUX Products GmbH, Nuernberg, Germany.
# Copyright (c) 2010 Dominique Leuenebrger, Amsterdam, Netherlands
#
# 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 build_broadway_backend 1

# When updating the binary version, do not forget to also update baselibs.conf
%define gtk_binary_version 3.0.0

Name:           gtk3
%define _name gtk+
Version:        3.6.2
Release:        0
Summary:        The GTK+ toolkit library (version 3)
License:        LGPL-2.1+
Group:          System/Libraries
Url:            http://www.gtk.org/
Source:         http://download.gnome.org/sources/gtk+/3.6/%{_name}-%{version}.tar.xz
Source1:        README.SUSE
Source2:        settings.ini
Source3:        macros.gtk3
Source99:       baselibs.conf
# PATCH-FIX-OPENSUSE gtk3-GTK_PATH64.patch sbrabec@novell.com - 64-bit dual install. Use GTK_PATH64 environment variable instead of GTK_PATH
Patch0:         gtk3-GTK_PATH64.patch
# PATCH-FIX-OPENSUSE gtk3-path-local.patch Search in /usr/local/%{_lib} by default. bnc369696 bgo534474
Patch1:         gtk3-path-local.patch
# PATCH-FIX-UPSTREAM gtk3-bnc130159-bgo319483-async-font-selection.patch bnc130159 bgo319483 federico@novell.com - Load fonts asynchronously in GtkFontSelection to make it appear faster for CJK languages
Patch3:         gtk3-bnc130159-bgo319483-async-font-selection.patch
BuildRequires:  cups-devel >= 1.2
BuildRequires:  docbook-xsl-stylesheets
BuildRequires:  fdupes
BuildRequires:  xsltproc
BuildRequires:  pkgconfig(atk) >= 2.5.3
BuildRequires:  pkgconfig(atk-bridge-2.0)
BuildRequires:  pkgconfig(cairo)
BuildRequires:  pkgconfig(colord)
BuildRequires:  pkgconfig(fontconfig)
BuildRequires:  pkgconfig(gdk-pixbuf-2.0) >= 2.26.0
BuildRequires:  pkgconfig(glib-2.0) >= 2.32.0
BuildRequires:  pkgconfig(gmodule-2.0)
BuildRequires:  pkgconfig(gobject-introspection-1.0) >= 1.32.0
BuildRequires:  pkgconfig(pango) >= 1.30.0
BuildRequires:  pkgconfig(pangoft2)
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)
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-3-0
Summary:        The GTK+ toolkit library (version 3)
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:       %{name}-data = %{version}
Requires:       hicolor-icon-theme
# gtk+ can work without branding/translations. Built in defaults will be used then.
Recommends:     %{name}-branding
# 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}
# Before 3.0, the package was actually libgtk-3_0-0 and files might
# conflict
Provides:       libgtk-3_0-0 = %{version}
Obsoletes:      libgtk-3_0-0 < %{version}

%description -n libgtk-3-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-3_0
Summary:        The GTK+ toolkit library (version 3) -- Introspection bindings
Group:          System/Libraries

%description -n typelib-1_0-Gtk-3_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 3) -- 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
Summary:        The GTK+ toolkit library (version 3) -- 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
Summary:        The GTK+ toolkit library (version 3) -- 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
Summary:        The GTK+ toolkit library (version 3) -- 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
Summary:        The GTK+ toolkit library (version 3) -- 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
Summary:        The GTK+ toolkit library (version 3) -- 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
Summary:        The GTK+ toolkit library (version 3) -- X Input Method
Group:          System/Libraries
Requires:       %{name} = %{version}
Requires(post): %{name}-tools
Requires(postun): %{name}-tools
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 3) -- 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 3) -- Data Files
Group:          System/Libraries
BuildArch:      noarch
%glib2_gsettings_schema_requires

%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 3) -- Upstream theme configuration
Group:          System/Libraries
Requires:       libgtk-3-0 = %{version}
Provides:       %{name}-branding = %{version}
Conflicts:      otherproviders(%{name}-branding)
Supplements:    packageand(%{name}:branding-upstream)
BuildArch:      noarch
#BRAND: Provides /etc/gtk-3.0/settings.ini, to define default theme and icon
#BRAND: 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.

This package provides the upstream theme configuration for widgets and
icon themes.

%package devel
Summary:        The GTK+ toolkit library (version 3) -- Development Files
Group:          Development/Libraries/X11
Requires:       libgtk-3-0 = %{version}
Requires:       typelib-1_0-Gtk-3_0 = %{version}
%glib2_gsettings_schema_requires

%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+ 3.x.

%lang_package
%prep
%setup -q -n %{_name}-%{version}
%if "%_lib" == "lib64"
cp -a %{S:1} .
%patch0 -p1
%endif
%patch1 -p0
%patch3 -p1

%build
%configure \
        --disable-static \
        --enable-man \
        --enable-x11-backend \
%if %{build_broadway_backend}
        --enable-broadway-backend \
%endif
        --enable-introspection \
        --enable-colord
%{__make} V=1 %{?_smp_mflags}

%install
%makeinstall
find %{buildroot}%{_libdir} -name '*.la' -delete -print
%if 0%{?suse_version} <= 1130
%{__rm} %{buildroot}%{_datadir}/locale/kg/LC_MESSAGES/*
%endif
%find_lang gtk30
%find_lang gtk30-properties
install -m 644 -D %{S:2} %{buildroot}%{_sysconfdir}/gtk-3.0/settings.ini
touch %{buildroot}%{_libdir}/gtk-3.0/%{gtk_binary_version}/immodules.cache
%if "%_lib" == "lib64"
  mv %{buildroot}%{_bindir}/gtk-query-immodules-3.0 %{buildroot}%{_bindir}/gtk-query-immodules-3.0-64
  mv %{buildroot}%{_mandir}/man1/gtk-query-immodules-3.0.1 %{buildroot}%{_mandir}/man1/gtk-query-immodules-3.0-64.1
%endif
# create modules directory that should have been created during the build
test ! -d %{buildroot}%{_libdir}/gtk-3.0/modules
mkdir %{buildroot}%{_libdir}/gtk-3.0/modules
# create theming-engines directory that should have been created during the build
test ! -d %{buildroot}%{_libdir}/gtk-3.0/%{gtk_binary_version}/theming-engines
mkdir %{buildroot}%{_libdir}/gtk-3.0/%{gtk_binary_version}/theming-engines
# Alternatives for gtk-update-icon-cache and gtk-builder-convert
mv %{buildroot}%{_bindir}/gtk-update-icon-cache %{buildroot}%{_bindir}/gtk-update-icon-cache-3.0
mv %{buildroot}%{_mandir}/man1/gtk-update-icon-cache.1 %{buildroot}%{_mandir}/man1/gtk-update-icon-cache-3.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 %{S:3} %{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-3.0-64
%else
%define _gtk_query_immodules %{_bindir}/gtk-query-immodules-3.0
%endif
%define _gtk_query_immodules_update_cache %{_gtk_query_immodules} --update-cache

%post -n libgtk-3-0
/sbin/ldconfig
%if 0
# In case libgtk-3-0 gets installed before gtk3-tools, we don't want to fail.
# So we make the call to gtk-query-immodules-3.0 dependent on the existence of
# the binary. This is why we also have a %post for gtk3-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 gtk3-tools for the first time, then we should run it in case
# libgtk-3-0 was installed first (ie, if
# %{_libdir}/gtk-3.0/%{gtk_binary_version} already exists) which means
# gtk-query-immodules-3.0 couldn't run there.
%endif
if [ $1 == 1 ]; then
  test -d %{_libdir}/gtk-3.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-3.0 3 \
                    --slave %{_mandir}/man1/gtk-update-icon-cache.1.gz gtk-update-icon-cache.1.gz %{_mandir}/man1/gtk-update-icon-cache-3.0.1.gz

%post data
%glib2_gsettings_schema_post

%post devel
%glib2_gsettings_schema_post

%if 0
# No need to call gtk-query-immodules-3.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-3-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 data
%glib2_gsettings_schema_postun

%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-3.0 ]; then
  update-alternatives --remove gtk-update-icon-cache %{_bindir}/gtk-update-icon-cache-3.0
fi

%postun devel
%glib2_gsettings_schema_postun

%files -n libgtk-3-0
%defattr(-, root, root)
%doc AUTHORS COPYING README NEWS
%if "%_lib" == "lib64"
%doc README.SUSE
%endif
%dir %{_sysconfdir}/gtk-3.0
%dir %{_libdir}/gtk-3.0
%dir %{_libdir}/gtk-3.0/%{gtk_binary_version}
%dir %{_libdir}/gtk-3.0/%{gtk_binary_version}/immodules/
%{_libdir}/gtk-3.0/%{gtk_binary_version}/immodules/im-cedilla.so
%{_libdir}/gtk-3.0/%{gtk_binary_version}/immodules/im-cyrillic-translit.so
%{_libdir}/gtk-3.0/%{gtk_binary_version}/immodules/im-ipa.so
%dir %{_libdir}/gtk-3.0/%{gtk_binary_version}/printbackends/
%{_libdir}/gtk-3.0/%{gtk_binary_version}/printbackends/libprintbackend-cups.so
%{_libdir}/gtk-3.0/%{gtk_binary_version}/printbackends/libprintbackend-file.so
%{_libdir}/gtk-3.0/%{gtk_binary_version}/printbackends/libprintbackend-lpr.so
%dir %{_libdir}/gtk-3.0/%{gtk_binary_version}/theming-engines/
%ghost %{_libdir}/gtk-3.0/%{gtk_binary_version}/immodules.cache
%dir %{_libdir}/gtk-3.0/modules
%{_libdir}/libgailutil-3.so.*
%{_libdir}/libgdk-3.so.*
%{_libdir}/libgtk-3.so.*

%files -n typelib-1_0-Gtk-3_0
%defattr(-,root,root)
%{_libdir}/girepository-1.0/Gdk-3.0.typelib
%{_libdir}/girepository-1.0/GdkX11-3.0.typelib
%{_libdir}/girepository-1.0/Gtk-3.0.typelib

%files immodule-amharic
%defattr(-,root,root)
%{_libdir}/gtk-3.0/%{gtk_binary_version}/immodules/im-am-et.so

%files immodule-inuktitut
%defattr(-,root,root)
%{_libdir}/gtk-3.0/%{gtk_binary_version}/immodules/im-inuktitut.so

%files immodule-multipress
%defattr(-,root,root)
%doc modules/input/README.multipress
%{_libdir}/gtk-3.0/%{gtk_binary_version}/immodules/im-multipress.so
%config %{_sysconfdir}/gtk-3.0/im-multipress.conf

%files immodule-thai
%defattr(-,root,root)
%{_libdir}/gtk-3.0/%{gtk_binary_version}/immodules/im-thai.so

%files immodules-tigrigna
%defattr(-,root,root)
%{_libdir}/gtk-3.0/%{gtk_binary_version}/immodules/im-ti-er.so
%{_libdir}/gtk-3.0/%{gtk_binary_version}/immodules/im-ti-et.so

%files immodule-vietnamese
%defattr(-,root,root)
%{_libdir}/gtk-3.0/%{gtk_binary_version}/immodules/im-viqr.so

%files immodule-xim
%defattr(-,root,root)
%{_libdir}/gtk-3.0/%{gtk_binary_version}/immodules/im-xim.so

%files tools
%defattr(-,root,root)
%{_bindir}/gtk-launch
%{_bindir}/gtk-query-immodules-3.0*
%{_bindir}/gtk-update-icon-cache-3.0
%ghost %{_bindir}/gtk-update-icon-cache
%{_mandir}/man1/gtk-launch.1%{?ext_man}
%{_mandir}/man1/gtk-query-immodules-3.0*.1*
%{_mandir}/man1/gtk-update-icon-cache-3.0.1*
%ghost %{_mandir}/man1/gtk-update-icon-cache.1*

%files data
%defattr(-,root,root)
%{_datadir}/glib-2.0/schemas/org.gtk.Settings.ColorChooser.gschema.xml
%{_datadir}/glib-2.0/schemas/org.gtk.Settings.FileChooser.gschema.xml
%{_datadir}/themes/Default/
%{_datadir}/themes/Emacs/

%files branding-upstream
%defattr(-,root,root)
%config %{_sysconfdir}/gtk-3.0/settings.ini

%files lang -f gtk30.lang -f gtk30-properties.lang

%files devel
%defattr(-,root,root)
%doc ChangeLog
%doc %{_datadir}/gtk-doc/html/gail-libgail-util3/
%doc %{_datadir}/gtk-doc/html/gdk3/
%doc %{_datadir}/gtk-doc/html/gtk3/
%{_bindir}/gtk3-demo
%{_bindir}/gtk3-demo-application
%{_bindir}/gtk3-widget-factory
%{_datadir}/aclocal/gtk-3.0.m4
%{_datadir}/gir-1.0/*.gir
%{_datadir}/glib-2.0/schemas/org.gtk.Demo.gschema.xml
%dir %{_datadir}/gtk-3.0
%{_datadir}/gtk-3.0/demo/
%{_datadir}/gtk-3.0/gtkbuilder.rng
%{_includedir}/gail-3.0/
%{_includedir}/gtk-3.0/
%{_libdir}/pkgconfig/gail-3.0.pc
%{_libdir}/pkgconfig/gdk-3.0.pc
%if %{build_broadway_backend}
%{_libdir}/pkgconfig/gdk-broadway-3.0.pc
%endif
%{_libdir}/pkgconfig/gdk-x11-3.0.pc
%{_libdir}/pkgconfig/gtk+-3.0.pc
%if %{build_broadway_backend}
%{_libdir}/pkgconfig/gtk+-broadway-3.0.pc
%endif
%{_libdir}/pkgconfig/gtk+-unix-print-3.0.pc
%{_libdir}/pkgconfig/gtk+-x11-3.0.pc
%{_libdir}/libgailutil-3.so
%{_libdir}/libgdk-3.so
%{_libdir}/libgtk-3.so
%{_sysconfdir}/rpm/macros.gtk3

%changelog