Blob Blame History Raw
%if 0%{?fedora}
%global with_wayland 1
%global with_broadway 1
%endif

%global glib2_version 2.53.7
%global pango_version 1.37.3
%global atk_version 2.15.1
%global cairo_version 1.14.0
%global gdk_pixbuf_version 2.30.0
%global wayland_version 1.9.91
%global wayland_protocols_version 1.9
%global epoxy_version 1.0

%global bin_version 4.0.0

# Filter provides for private modules
%global __provides_exclude_from ^%{_libdir}/gtk-4.0

Name:           gtk4
Version:        3.92.1
Release:        1%{?dist}
Summary:        GTK+ graphical user interface library

License:        LGPLv2+
URL:            http://www.gtk.org
Source0:        http://download.gnome.org/sources/gtk+/3.92/gtk+-%{version}.tar.xz
# Build fixes backported from upstream
Patch0:         0001-Add-default-return-values-to-switch-statements.patch
Patch1:         0001-Fix-build.patch
Patch2:         0001-Add-a-return-value.patch
# Fix installing printbackends, backported from upstream
Patch3:         0001-printing-Install-printbackends.patch

BuildRequires:  cups-devel
BuildRequires:  desktop-file-utils
BuildRequires:  gettext
BuildRequires:  gtk-doc
BuildRequires:  meson
BuildRequires:  pkgconfig(atk) >= %{atk_version}
BuildRequires:  pkgconfig(atk-bridge-2.0)
BuildRequires:  pkgconfig(avahi-gobject)
BuildRequires:  pkgconfig(cairo) >= %{cairo_version}
BuildRequires:  pkgconfig(cairo-gobject) >= %{cairo_version}
BuildRequires:  pkgconfig(colord)
BuildRequires:  pkgconfig(epoxy)
BuildRequires:  pkgconfig(gdk-pixbuf-2.0) >= %{gdk_pixbuf_version}
BuildRequires:  pkgconfig(glib-2.0) >= %{glib2_version}
BuildRequires:  pkgconfig(gobject-introspection-1.0)
BuildRequires:  pkgconfig(graphene-gobject-1.0)
BuildRequires:  pkgconfig(json-glib-1.0)
BuildRequires:  pkgconfig(pango) >= %{pango_version}
BuildRequires:  pkgconfig(rest-0.7)
BuildRequires:  pkgconfig(xcomposite)
BuildRequires:  pkgconfig(xcursor)
BuildRequires:  pkgconfig(xdamage)
BuildRequires:  pkgconfig(xfixes)
BuildRequires:  pkgconfig(xi)
BuildRequires:  pkgconfig(xinerama)
BuildRequires:  pkgconfig(xrandr)
BuildRequires:  pkgconfig(xrender)
BuildRequires:  pkgconfig(xrender)
%if 0%{?with_wayland}
BuildRequires:  pkgconfig(egl)
BuildRequires:  pkgconfig(wayland-client) >= %{wayland_version}
BuildRequires:  pkgconfig(wayland-cursor) >= %{wayland_version}
BuildRequires:  pkgconfig(wayland-egl) >= %{wayland_version}
BuildRequires:  pkgconfig(wayland-protocols) >= %{wayland_protocols_version}
BuildRequires:  pkgconfig(xkbcommon)
%endif

# standard icons
Requires: adwaita-icon-theme
# required for icon theme apis to work
Requires: hicolor-icon-theme
# split out in a subpackage
Requires: gtk-update-icon-cache

Requires: atk%{?_isa} >= %{atk_version}
Requires: cairo%{?_isa} >= %{cairo_version}
Requires: cairo-gobject%{?_isa} >= %{cairo_version}
Requires: glib2%{?_isa} >= %{glib2_version}
Requires: libepoxy%{?_isa} >= %{epoxy_version}
Requires: pango%{?_isa} >= %{pango_version}
%if 0%{?with_wayland}
Requires: libwayland-client%{?_isa} >= %{wayland_version}
Requires: libwayland-cursor%{?_isa} >= %{wayland_version}
%endif

# required to support all the different image formats
Requires: gdk-pixbuf2-modules%{?_isa}

# make sure we have a reasonable gsettings backend
%if 0%{?fedora}
Recommends: dconf%{?_isa}
%else
Requires: dconf%{?_isa}
%endif

%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 tools to complete application
suites.

This package contains version 4 of GTK+.

%package immodules
Summary: Input methods for GTK+
Requires: gtk4%{?_isa} = %{version}-%{release}
# for im-cedilla.conf
Requires: gtk2-immodules%{?_isa}

%description immodules
The gtk4-immodules package contains standalone input methods that
are shipped as part of GTK+ 4.

%package immodule-xim
Summary: XIM support for GTK+
Requires: gtk4%{?_isa} = %{version}-%{release}

%description immodule-xim
The gtk4-immodule-xim package contains XIM support for GTK+ 4.

%package devel
Summary: Development files for GTK+
Requires: gtk4%{?_isa} = %{version}-%{release}

%description devel
This package contains the libraries and header files that are needed
for writing applications with version 4 of the GTK+ widget toolkit. If
you plan to develop applications with GTK+, consider installing the
gtk4-devel-docs package.

%package devel-docs
Summary: Developer documentation for GTK+
Requires: gtk4 = %{version}-%{release}

%description devel-docs
This package contains developer documentation for version 4 of the GTK+
widget toolkit.

%package tests
Summary: Tests for the %{name} package
Requires: %{name}%{?_isa} = %{version}-%{release}

%description tests
The %{name}-tests package contains tests that can be used to verify
the functionality of the installed %{name} package.

%prep
%setup -q -n gtk+-%{version}
%patch0 -p1
%patch1 -p1
%patch2 -p1
%patch3 -p1

%build
export CFLAGS='-fno-strict-aliasing %optflags'
%meson \
        -Denable-xinerama=yes \
        -Denable-x11-backend=true \
%if 0%{?with_wayland}
        -Denable-wayland-backend=true \
%endif
%if 0%{?with_broadway}
        -Denable-broadway-backend=true \
%endif
        -Denable-colord=yes \
        -Ddocumentation=true \
        -Dman-pages=true \
        -Denable-installed-tests=true

%meson_build

%install
%meson_install

%find_lang gtk40
%find_lang gtk40-properties

(cd $RPM_BUILD_ROOT%{_bindir}
 mv gtk4-query-immodules gtk4-query-immodules-%{__isa_bits}
)

echo ".so man1/gtk4-query-immodules.1" > $RPM_BUILD_ROOT%{_mandir}/man1/gtk4-query-immodules-%{__isa_bits}.1

%if !0%{?with_broadway}
rm $RPM_BUILD_ROOT%{_mandir}/man1/gtk4-broadwayd.1*
%endif

touch $RPM_BUILD_ROOT%{_libdir}/gtk-4.0/%{bin_version}/immodules.cache

mkdir -p $RPM_BUILD_ROOT%{_sysconfdir}/gtk-4.0
mkdir -p $RPM_BUILD_ROOT%{_libdir}/gtk-4.0/modules
mkdir -p $RPM_BUILD_ROOT%{_libdir}/gtk-4.0/immodules
mkdir -p $RPM_BUILD_ROOT%{_libdir}/gtk-4.0/%{bin_version}/theming-engines

%check
desktop-file-validate %{buildroot}%{_datadir}/applications/*.desktop

%post -p /sbin/ldconfig

%postun -p /sbin/ldconfig

%post devel
touch --no-create %{_datadir}/icons/hicolor &>/dev/null || :

%postun devel
if [ $1 -eq 0 ] ; then
    touch --no-create %{_datadir}/icons/hicolor &>/dev/null
    gtk-update-icon-cache %{_datadir}/icons/hicolor &>/dev/null || :
fi

%posttrans devel
gtk-update-icon-cache %{_datadir}/icons/hicolor &>/dev/null || :

%transfiletriggerin -- %{_libdir}/gtk-4.0/%{bin_version}/immodules
gtk4-query-immodules-%{__isa_bits} --update-cache &>/dev/null || :

%transfiletriggerpostun -- %{_libdir}/gtk-4.0/%{bin_version}/immodules
gtk-query-immodules-4.0-%{__isa_bits} --update-cache &>/dev/null || :

%files -f gtk40.lang
%license COPYING
%doc AUTHORS NEWS README.md
%{_bindir}/gtk4-query-immodules*
%{_bindir}/gtk4-launch
%{_bindir}/gtk4-update-icon-cache
%{_libdir}/libgtk-4.so.*
%dir %{_libdir}/gtk-4.0
%dir %{_libdir}/gtk-4.0/%{bin_version}
%dir %{_datadir}/gtk-4.0
%{_libdir}/gtk-4.0/%{bin_version}/theming-engines
%dir %{_libdir}/gtk-4.0/%{bin_version}/immodules
%{_libdir}/gtk-4.0/%{bin_version}/printbackends
%{_libdir}/gtk-4.0/modules
%{_libdir}/gtk-4.0/immodules
%{_libdir}/girepository-1.0
%ghost %{_libdir}/gtk-4.0/%{bin_version}/immodules.cache
%{_mandir}/man1/gtk4-query-immodules*
%{_mandir}/man1/gtk4-launch.1*
%{_mandir}/man1/gtk4-update-icon-cache.1*
%{_datadir}/glib-2.0/schemas/org.gtk.Settings.ColorChooser.gschema.xml
%{_datadir}/glib-2.0/schemas/org.gtk.Settings.Debug.gschema.xml
%{_datadir}/glib-2.0/schemas/org.gtk.Settings.EmojiChooser.gschema.xml
%{_datadir}/glib-2.0/schemas/org.gtk.Settings.FileChooser.gschema.xml
%if 0%{?with_broadway}
%{_bindir}/gtk4-broadwayd
%{_mandir}/man1/gtk4-broadwayd.1*
%endif

%files immodules
%{_libdir}/gtk-4.0/%{bin_version}/immodules/im-cedilla.so
%{_libdir}/gtk-4.0/%{bin_version}/immodules/im-am-et.so
%{_libdir}/gtk-4.0/%{bin_version}/immodules/im-cyrillic-translit.so
%{_libdir}/gtk-4.0/%{bin_version}/immodules/im-inuktitut.so
%{_libdir}/gtk-4.0/%{bin_version}/immodules/im-ipa.so
%{_libdir}/gtk-4.0/%{bin_version}/immodules/im-multipress.so
%{_libdir}/gtk-4.0/%{bin_version}/immodules/im-thai.so
%{_libdir}/gtk-4.0/%{bin_version}/immodules/im-ti-er.so
%{_libdir}/gtk-4.0/%{bin_version}/immodules/im-ti-et.so
%{_libdir}/gtk-4.0/%{bin_version}/immodules/im-viqr.so
%if 0%{?with_broadway}
%{_libdir}/gtk-4.0/%{bin_version}/immodules/im-broadway.so
%endif
%config(noreplace) %{_sysconfdir}/gtk-4.0/im-multipress.conf

%files immodule-xim
%{_libdir}/gtk-4.0/%{bin_version}/immodules/im-xim.so

%files devel -f gtk40-properties.lang
%{_libdir}/lib*.so
%{_includedir}/*
%{_libdir}/pkgconfig/*
%{_bindir}/gtk4-builder-tool
%{_bindir}/gtk4-demo
%{_bindir}/gtk4-encode-symbolic-svg
%{_bindir}/gtk4-icon-browser
%{_bindir}/gtk4-query-settings
%{_datadir}/applications/gtk4-demo.desktop
%{_datadir}/applications/gtk4-icon-browser.desktop
%{_datadir}/applications/gtk4-widget-factory.desktop
%{_datadir}/icons/hicolor/*/apps/gtk4-demo.png
%{_datadir}/icons/hicolor/*/apps/gtk4-demo-symbolic.symbolic.png
%{_datadir}/icons/hicolor/*/apps/gtk4-widget-factory.png
%{_datadir}/icons/hicolor/*/apps/gtk4-widget-factory-symbolic.symbolic.png
%{_bindir}/gtk4-demo-application
%{_bindir}/gtk4-widget-factory
%{_datadir}/gettext/
%{_datadir}/gtk-4.0/gtkbuilder.rng
%{_datadir}/gir-1.0
%{_datadir}/glib-2.0/schemas/org.gtk.Demo.gschema.xml
%{_mandir}/man1/gtk4-builder-tool.1*
%{_mandir}/man1/gtk4-demo.1*
%{_mandir}/man1/gtk4-demo-application.1*
%{_mandir}/man1/gtk4-encode-symbolic-svg.1*
%{_mandir}/man1/gtk4-icon-browser.1*
%{_mandir}/man1/gtk4-query-settings.1*
%{_mandir}/man1/gtk4-widget-factory.1*

%files devel-docs
%{_datadir}/gtk-doc

%files tests
%dir %{_libexecdir}/installed-tests
%{_libexecdir}/installed-tests/gtk-4.0/

%changelog
* Thu Nov 02 2017 Kalev Lember <klember@redhat.com> - 3.92.1-1
- Update to 3.92.1
- Enable installed tests

* Tue Aug 08 2017 Kalev Lember <klember@redhat.com> - 3.91.2-1
- Update to 3.91.2

* Thu Jul 20 2017 Kalev Lember <klember@redhat.com> - 3.91.1-1
- Update to 3.91.1

* Wed Jun 14 2017 Kalev Lember <klember@redhat.com> - 3.91.0-2
- Disable installed tests due to file conflicts between gtk3-tests and
  gtk4-tests

* Wed Jun 14 2017 Kalev Lember <klember@redhat.com> - 3.91.0-1
- Initial Fedora packaging