#
# Conditional build:
-%bcond_without apidocs # gtk-doc build
+%bcond_without apidocs # gi-docgen based API documentation
%bcond_without broadway # Broadway target
%bcond_without wayland # Wayland target
%bcond_without vulkan # Vulkan graphics support
-%bcond_without ffmpeg # FFmpeg media backend
%bcond_without gstreamer # GStreamer media backend
-%bcond_without cloudprint # cloudprint print backend
+%bcond_with cpdb # CPDB print backend
%bcond_without cups # CUPS print backend
%bcond_without cloudproviders # cloudproviders support
+%bcond_without static_libs # static library
%bcond_with sysprof # sysprof tracing support
%bcond_with tracker # Tracker3 filechooser search
Summary(pl.UTF-8): GIMP Toolkit
Summary(tr.UTF-8): GIMP ToolKit arayüz kitaplığı
Name: gtk4
-Version: 4.0.3
+Version: 4.14.2
Release: 1
License: LGPL v2+
Group: X11/Libraries
-Source0: https://download.gnome.org/sources/gtk/4.0/gtk-%{version}.tar.xz
-# Source0-md5: 070422559bdc656077c413c05a054624
-Patch0: %{name}-lpr.patch
+Source0: https://download.gnome.org/sources/gtk/4.14/gtk-%{version}.tar.xz
+# Source0-md5: 347219770bd27520209607c4d474c033
+Patch0: %{name}-print-backends.patch
URL: https://www.gtk.org/
-%{?with_vulkan:BuildRequires: Vulkan-Loader-devel}
+%{?with_vulkan:BuildRequires: Vulkan-Loader-devel >= 1.3}
# cairo-gobject + cairo-pdf,cairo-ps,cairo-svg
BuildRequires: cairo-gobject-devel >= 1.14.0
BuildRequires: colord-devel >= 0.1.9
+%if %{with cpdb}
+BuildRequires: cpdb-frontend-devel >= 2.0
+%endif
%if %{with cups}
BuildRequires: cups-devel >= 1:2.0
%endif
BuildRequires: docbook-dtd412-xml
BuildRequires: docbook-style-xsl
+BuildRequires: docutils
BuildRequires: fontconfig-devel
-# libavfilter >= 6.47.100, libavformat >= 57.41.100, libavcodec >= 57.48.101, libavutil >= 55.28.100, libswscale >= 4.6.100
-%{?with_ffmpeg:BuildRequires: ffmpeg-devel >= 3.1.1}
BuildRequires: freetype-devel >= 1:2.7.1
-BuildRequires: fribidi-devel >= 0.19.7
+BuildRequires: fribidi-devel >= 1.0.6
BuildRequires: gdk-pixbuf2-devel >= 2.31.0
BuildRequires: gettext-tools >= 0.19.7
-BuildRequires: glib2-devel >= 1:2.65.0
-BuildRequires: gobject-introspection-devel >= 1.39.0
-BuildRequires: graphene-devel >= 1.9.1
+%{?with_apidocs:BuildRequires: gi-docgen >= 2021.1}
+BuildRequires: glib2-devel >= 1:2.78.0
+BuildRequires: gobject-introspection-devel >= 1.76.0
+BuildRequires: graphene-devel >= 1.10.0
%{?with_gstreamer:BuildRequires: gstreamer-devel >= 1.12.3}
-%if %{with apidocs}
-BuildRequires: gtk-doc >= 1.33
-%endif
-BuildRequires: harfbuzz-devel >= 0.9
-%{?with_cloudprint:BuildRequires: json-glib-devel >= 1.0}
+%{?with_gstreamer:BuildRequires: gstreamer-gl-devel >= 1.12.3}
+# pkgconfig(gstreamer-allocators-1.0) >= 1.23.1
+%{?with_gstreamer:BuildRequires: gstreamer-plugins-base-devel >= 1.23.1}
+# pkgconfig(gstreamer-player-1.0)
+%{?with_gstreamer:BuildRequires: gstreamer-plugins-bad-devel >= 1.12.3}
+BuildRequires: harfbuzz-devel >= 2.6.0
+BuildRequires: iso-codes
%{?with_cloudproviders:BuildRequires: libcloudproviders-devel >= 0.3.1}
BuildRequires: libepoxy-devel >= 1.4
+BuildRequires: libjpeg-turbo-devel
+BuildRequires: libpng-devel
BuildRequires: libstdc++-devel
+BuildRequires: libtiff-devel >= 4
BuildRequires: libtool >= 2:2.2.6
BuildRequires: libxml2-progs >= 1:2.6.31
BuildRequires: libxslt-progs >= 1.1.20
-BuildRequires: meson >= 0.54
+BuildRequires: meson >= 0.63
BuildRequires: ninja >= 1.5
-%{?with_apidocs:BuildRequires: pandoc >= 1.18}
-BuildRequires: pango-devel >= 1:1.47.0
+BuildRequires: pango-devel >= 1:1.50.0
BuildRequires: perl-base
BuildRequires: pkgconfig
-%{?with_cloudprint:BuildRequires: rest-devel >= 0.7}
+BuildRequires: rpm-build >= 4.6
BuildRequires: rpm-pythonprov
-BuildRequires: rpmbuild(macros) >= 1.752
+BuildRequires: rpmbuild(macros) >= 2.029
# glslc required to rebuild some files from source
%{?with_vulkan:BuildRequires: shaderc}
BuildRequires: sqlite3-devel
BuildRequires: xorg-lib-libXext-devel
BuildRequires: xorg-lib-libXfixes-devel
BuildRequires: xorg-lib-libXft-devel
-BuildRequires: xorg-lib-libXi-devel
+BuildRequires: xorg-lib-libXi-devel >= 1.8
BuildRequires: xorg-lib-libXinerama-devel
BuildRequires: xorg-lib-libXrandr-devel >= 1.5.0
BuildRequires: xorg-lib-libXrender-devel
%{?with_broadway:BuildRequires: zlib-devel}
%if %{with wayland}
# wayland-client, wayland-cursor, wayland-scanner
-BuildRequires: wayland-devel >= 1.14.91
+BuildRequires: wayland-devel >= 1.21.0
BuildRequires: wayland-egl-devel
-BuildRequires: wayland-protocols >= 1.20
+BuildRequires: wayland-protocols >= 1.32
BuildRequires: xorg-lib-libxkbcommon-devel >= 0.2.0
%endif
Requires: xorg-lib-libX11 >= 1.5.0
-Requires(post,postun): glib2 >= 1:2.65.0
+Requires(post,postun): glib2 >= 1:2.78.0
Requires: cairo-gobject >= 1.14.0
Requires: freetype >= 1:2.7.1
+Requires: fribidi >= 1.0.6
Requires: gdk-pixbuf2 >= 2.31.0
-Requires: glib2 >= 1:2.65.0
-Requires: graphene >= 1.9.1
+Requires: glib2 >= 1:2.78.0
+Requires: graphene >= 1.10.0
+Requires: harfbuzz >= 2.6.0
+Requires: iso-codes
%{?with_cloudproviders:Requires: libcloudproviders >= 0.3.1}
Requires: libepoxy >= 1.4
-Requires: pango >= 1:1.47.0
-Requires: xorg-lib-libXi >= 1.3.0
+Requires: pango >= 1:1.50.0
+Requires: xorg-lib-libXi >= 1.8
Requires: xorg-lib-libXrandr >= 1.5.0
%if %{with wayland}
-Requires: wayland >= 1.14.91
+Requires: wayland >= 1.21.0
Requires: xorg-lib-libxkbcommon >= 0.2.0
%endif
# evince is used as gtk-print-preview-command by default
Suggests: %{name}-cups = %{version}-%{release}
%endif
Obsoletes: gtk+4 < 3.95
-Obsoletes: gtk+4-papi
+Obsoletes: gtk+4-papi < 3.94
+Obsoletes: gtk+4-cloudprint < 3.95
+Obsoletes: gtk4-cloudprint < 4.4
+Obsoletes: gtk4-media-ffmpeg < 4.13.7
BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
%define abivers 4.0.0
Summary: Utility to update icon cache used by GTK library
Summary(pl.UTF-8): Narzędzie do uaktualniania cache'a ikon używanego przez bibliotekę GTK
Group: Applications/System
+Requires: fribidi >= 1.0.6
Requires: gdk-pixbuf2 >= 2.31.0
-Requires: glib2 >= 1:2.65.0
+Requires: glib2 >= 1:2.78.0
Obsoletes: gtk+4-update-icon-cache < 3.95
%description update-icon-cache
%{?with_vulkan:Requires: Vulkan-Loader-devel}
Requires: cairo-gobject-devel >= 1.14.0
Requires: fontconfig-devel
+Requires: fribidi-devel >= 1.0.6
Requires: gdk-pixbuf2-devel >= 2.31.0
-Requires: glib2-devel >= 1:2.65.0
-Requires: graphene-devel >= 1.9.1
+Requires: glib2-devel >= 1:2.78.0
+Requires: graphene-devel >= 1.10.0
Requires: libepoxy-devel >= 1.4
-Requires: pango-devel >= 1:1.47.0
+Requires: pango-devel >= 1:1.50.0
Requires: shared-mime-info
Requires: xorg-lib-libX11-devel >= 1.5.0
Requires: xorg-lib-libXcomposite-devel
Requires: xorg-lib-libXdamage-devel
Requires: xorg-lib-libXext-devel
Requires: xorg-lib-libXfixes-devel
-Requires: xorg-lib-libXi-devel
+Requires: xorg-lib-libXi-devel >= 1.8
Requires: xorg-lib-libXinerama-devel
Requires: xorg-lib-libXrandr-devel >= 1.5.0
%if %{with wayland}
-Requires: wayland-devel >= 1.14.91
+Requires: wayland-devel >= 1.21.0
Requires: wayland-egl-devel
-Requires: wayland-protocols >= 1.20
+Requires: wayland-protocols >= 1.32
Requires: xorg-lib-libxkbcommon-devel >= 0.2.0
%endif
Requires: zlib-devel
Summary: GTK API documentation
Summary(pl.UTF-8): Dokumentacja API GTK
Group: Documentation
-Requires: gtk-doc-common
Obsoletes: gtk+4-apidocs < 3.95
-%{?noarchpackage}
+BuildArch: noarch
%description apidocs
GTK API documentation.
Summary: GTK - example programs
Summary(pl.UTF-8): GTK - programy przykładowe
Group: X11/Development/Libraries
-Requires(post,postun): glib2 >= 1:2.65.0
+Requires(post,postun): glib2 >= 1:2.78.0
Requires: %{name}-devel = %{version}-%{release}
Obsoletes: gtk+4-examples < 3.95
%description examples -l pl.UTF-8
GTK - przykładowe programy.
-%package cloudprint
-Summary: Cloudprint printing module for GTK
-Summary(pl.UTF-8): Moduł GTK do drukowania przez Cloudprint
-Group: X11/Libraries
-Requires: %{name} = %{version}-%{release}
-Obsoletes: gtk+4-cloudprint < 3.95
-
-%description cloudprint
-Cloudprint printing module for GTK.
-
-%description cloudprint -l pl.UTF-8
-Moduł GTK do drukowania przez Cloudprint.
-
-%package media-ffmpeg
-Summary: FFmpeg media backend for GTK
-Summary(pl.UTF-8): Backend multimedialny FFmpeg dla GTK
-Group: X11/Libraries
-Requires: %{name} = %{version}-%{release}
-Requires: ffmpeg-libs >= 3.1.1
-
-%description media-ffmpeg
-FFmpeg media backend for GTK.
-
-%description media-ffmpeg -l pl.UTF-8
-Backend multimedialny FFmpeg dla GTK.
-
%package media-gstreamer
Summary: GStreamer media backend for GTK
Summary(pl.UTF-8): Backend multimedialny GStreamer dla GTK
Group: X11/Libraries
Requires: %{name} = %{version}-%{release}
Requires: gstreamer >= 1.12.3
+Requires: gstreamer-gl-libs >= 1.12.3
+Requires: gstreamer-plugins-bad >= 1.12.3
+Requires: gstreamer-plugins-base >= 1.23.1
%description media-gstreamer
GStreamer media backend for GTK.
%description media-gstreamer -l pl.UTF-8
Backend multimedialny GStreamer dla GTK.
+%package print-cpdb
+Summary: CPDB printing module for GTK
+Summary(pl.UTF-8): Moduł GTK do drukowania przez CPDB
+Group: X11/Libraries
+Requires: %{name} = %{version}-%{release}
+Requires: cpdb-libs >= 2.0
+
+%description print-cpdb
+CPDB printing module for GTK.
+
+%description print-cpdb -l pl.UTF-8
+Moduł GTK do drukowania przez CPDB.
+
%package cups
Summary: CUPS printing module for GTK
Summary(pl.UTF-8): Moduł GTK do drukowania przez CUPS
%patch0 -p1
%{__sed} -i -e '1s,/usr/bin/env python3,%{__python3},' demos/gtk-demo/geninclude.py
+%{__sed} -i -e '1s,/usr/bin/env .* gjs,/usr/bin/gjs,' examples/labels.js
+%{__sed} -i -e '1s,/usr/bin/env .* python3,%{__python3},' examples/squares.py
+
+%if %{with static_libs}
+%{__sed} -i -e '/^libgtk = / s/shared_library/library/' gtk/meson.build
+%endif
+
+%{__sed} -i -e "/^docs_dir =/ s,gtk_datadir / 'doc','%{_gidocdir}'," docs/reference/meson.build
%build
%meson build \
%{?with_cloudproviders:-Dcloudproviders=enabled} \
-Dcolord=enabled \
%{?with_apidocs:-Dgtk_doc=true} \
- -Dinstall-tests=false \
+ -Dintrospection=enabled \
-Dman-pages=true \
- %{!?with_ffmpeg:-Dmedia-ffmpeg=disabled} \
%{!?with_gstreamer:-Dmedia-gstreamer=disabled} \
- %{!?with_cloudprint:-Dprint-cloudprint=disabled} \
+ %{?with_cpdb:-Dprint-cpdb=enabled} \
%{!?with_cups:-Dprint-cups=disabled} \
- -Dprint-lpr=true \
%{?with_sysprof:-Dsysprof=enabled} \
%{?with_tracker:-Dtracker=enabled} \
%{!?with_vulkan:-Dvulkan=disabled} \
%ninja_build -C build
-%if %{with apidocs}
-# seems missing in default target (as of 4.0.0)
-%ninja_build -C build gtk4-doc
-%endif
-
%install
rm -rf $RPM_BUILD_ROOT
%{__mv} $RPM_BUILD_ROOT%{_localedir}/{sr@ije,sr@ijekavian}
# unsupported by glibc
-%{__rm} -r $RPM_BUILD_ROOT%{_localedir}/io
+%{__rm} -r $RPM_BUILD_ROOT%{_localedir}/{ie,io}
# gtk40 and gtk40-properties domains
%find_lang %{name} --all-name
%update_desktop_database
%update_icon_cache hicolor
-%post cloudprint
-umask 022
-gio-querymodules %{_libdir}/gtk-4.0/%{abivers}/printbackends
-
-%postun cloudprint
-if [ "$1" != "0" ]; then
- umask 022
- gio-querymodules %{_libdir}/gtk-4.0/%{abivers}/printbackends
-fi
-exit 0
-
%post cups
umask 022
gio-querymodules %{_libdir}/gtk-4.0/%{abivers}/printbackends
%dir %{_libdir}/gtk-4.0/%{abivers}
%dir %{_libdir}/gtk-4.0/%{abivers}/immodules
%dir %{_libdir}/gtk-4.0/%{abivers}/inspector
+%if %{with gstreamer}
%dir %{_libdir}/gtk-4.0/%{abivers}/media
+%endif
%dir %{_libdir}/gtk-4.0/%{abivers}/printbackends
%attr(755,root,root) %{_libdir}/gtk-4.0/%{abivers}/printbackends/libprintbackend-file.so
-%attr(755,root,root) %{_libdir}/gtk-4.0/%{abivers}/printbackends/libprintbackend-lpr.so
%{_libdir}/girepository-1.0/Gdk-4.0.typelib
%if %{with wayland}
%{_libdir}/girepository-1.0/GdkWayland-4.0.typelib
%files devel
%defattr(644,root,root,755)
%attr(755,root,root) %{_bindir}/gtk4-builder-tool
+%attr(755,root,root) %{_bindir}/gtk4-path-tool
%attr(755,root,root) %{_bindir}/gtk4-query-settings
%attr(755,root,root) %{_libdir}/libgtk-4.so
%{_includedir}/gtk-4.0
%{_pkgconfigdir}/gtk4.pc
+%{_pkgconfigdir}/gtk4-atspi.pc
%{_pkgconfigdir}/gtk4-unix-print.pc
%{_pkgconfigdir}/gtk4-x11.pc
%if %{with broadway}
%{_datadir}/gir-1.0/Gsk-4.0.gir
%{_datadir}/gir-1.0/Gtk-4.0.gir
%{_mandir}/man1/gtk4-builder-tool.1*
+%{_mandir}/man1/gtk4-path-tool.1*
%{_mandir}/man1/gtk4-query-settings.1*
+%if %{with static_libs}
%files static
%defattr(644,root,root,755)
%{_libdir}/libgtk-4.a
+%endif
%if %{with apidocs}
%files apidocs
%defattr(644,root,root,755)
-%{_gtkdocdir}/gdk4
-%{_gtkdocdir}/gsk4
-%{_gtkdocdir}/gtk4
+%{_gidocdir}/gdk4
+%{_gidocdir}/gdk4-wayland
+%{_gidocdir}/gdk4-x11
+%{_gidocdir}/gsk4
+%{_gidocdir}/gtk4
%endif
%files examples
%attr(755,root,root) %{_bindir}/gtk4-demo
%attr(755,root,root) %{_bindir}/gtk4-demo-application
%attr(755,root,root) %{_bindir}/gtk4-icon-browser
+%attr(755,root,root) %{_bindir}/gtk4-node-editor
%attr(755,root,root) %{_bindir}/gtk4-print-editor
+%attr(755,root,root) %{_bindir}/gtk4-rendernode-tool
%attr(755,root,root) %{_bindir}/gtk4-widget-factory
%{_datadir}/glib-2.0/schemas/org.gtk.Demo4.gschema.xml
%{_datadir}/metainfo/org.gtk.Demo4.appdata.xml
%{_datadir}/metainfo/org.gtk.IconBrowser4.appdata.xml
%{_datadir}/metainfo/org.gtk.PrintEditor4.appdata.xml
%{_datadir}/metainfo/org.gtk.WidgetFactory4.appdata.xml
+%{_datadir}/metainfo/org.gtk.gtk4.NodeEditor.appdata.xml
%{_desktopdir}/org.gtk.Demo4.desktop
%{_desktopdir}/org.gtk.IconBrowser4.desktop
%{_desktopdir}/org.gtk.PrintEditor4.desktop
%{_desktopdir}/org.gtk.WidgetFactory4.desktop
+%{_desktopdir}/org.gtk.gtk4.NodeEditor.desktop
%{_iconsdir}/hicolor/scalable/apps/org.gtk.Demo4.svg
%{_iconsdir}/hicolor/scalable/apps/org.gtk.IconBrowser4.svg
%{_iconsdir}/hicolor/scalable/apps/org.gtk.PrintEditor4.svg
%{_iconsdir}/hicolor/scalable/apps/org.gtk.PrintEditor4.Devel.svg
%{_iconsdir}/hicolor/scalable/apps/org.gtk.WidgetFactory4.svg
+%{_iconsdir}/hicolor/scalable/apps/org.gtk.gtk4.NodeEditor.svg
+%{_iconsdir}/hicolor/scalable/apps/org.gtk.gtk4.NodeEditor.Devel.svg
%{_iconsdir}/hicolor/symbolic/apps/org.gtk.Demo4-symbolic.svg
%{_iconsdir}/hicolor/symbolic/apps/org.gtk.IconBrowser4-symbolic.svg
%{_iconsdir}/hicolor/symbolic/apps/org.gtk.PrintEditor4-symbolic.svg
%{_iconsdir}/hicolor/symbolic/apps/org.gtk.WidgetFactory4-symbolic.svg
+%{_iconsdir}/hicolor/symbolic/apps/org.gtk.gtk4.NodeEditor-symbolic.svg
%{_mandir}/man1/gtk4-demo.1*
%{_mandir}/man1/gtk4-demo-application.1*
%{_mandir}/man1/gtk4-icon-browser.1*
+%{_mandir}/man1/gtk4-node-editor.1*
+%{_mandir}/man1/gtk4-rendernode-tool.1*
%{_mandir}/man1/gtk4-widget-factory.1*
%{_examplesdir}/%{name}-%{version}
-%if %{with ffmpeg}
-%files media-ffmpeg
-%defattr(644,root,root,755)
-%attr(755,root,root) %{_libdir}/gtk-4.0/%{abivers}/media/libmedia-ffmpeg.so
-%endif
-
%if %{with gstreamer}
%files media-gstreamer
%defattr(644,root,root,755)
%attr(755,root,root) %{_libdir}/gtk-4.0/%{abivers}/media/libmedia-gstreamer.so
%endif
-%if %{with cloudprint}
-%files cloudprint
+%if %{with cpdb}
+%files print-cpdb
%defattr(644,root,root,755)
-%attr(755,root,root) %{_libdir}/gtk-4.0/%{abivers}/printbackends/libprintbackend-cloudprint.so
+%attr(755,root,root) %{_libdir}/gtk-4.0/%{abivers}/printbackends/libprintbackend-cpdb.so
%endif
%if %{with cups}