diff --git a/gtk-4.12.1.tar.xz b/gtk-4.16.7.tar.xz similarity index 63% rename from gtk-4.12.1.tar.xz rename to gtk-4.16.7.tar.xz index 79f6fcada4e0b633ab99a5f09b759a556e198506..fc39d7021bca03e18730d94e6cc1a7d2f5af438b 100644 Binary files a/gtk-4.12.1.tar.xz and b/gtk-4.16.7.tar.xz differ diff --git a/gtk4-no-objcopy.patch b/gtk4-no-objcopy.patch new file mode 100644 index 0000000000000000000000000000000000000000..569d5784dcc03b406543fbe986311e0fd31561bc --- /dev/null +++ b/gtk4-no-objcopy.patch @@ -0,0 +1,11 @@ +--- gtk-4.14.4/meson.build.no-objcopy 2024-06-06 10:17:08.764814627 -0400 ++++ gtk-4.14.4/meson.build 2024-06-06 10:17:31.276931886 -0400 +@@ -777,6 +777,8 @@ + can_use_objcopy_for_resources = false + endif + ++can_use_objcopy_for_resources = false ++ + project_build_root = meson.current_build_dir() + + gen_visibility_macros = find_program('build-aux/meson/gen-visibility-macros.py') diff --git a/gtk4.spec b/gtk4.spec index 723d5e08e7f3f7bf5d167e033d24e1d019300dee..806f9a218f9456dfe863e13f646cf14b3a0b8dd9 100644 --- a/gtk4.spec +++ b/gtk4.spec @@ -1,67 +1,106 @@ %define anolis_release 1 -%global __provides_exclude_from ^%{_libdir}/gtk-4.0 - %global glib2_version 2.76.0 -%global pango_version 1.50.0 -%global cairo_version 1.14.0 -%global epoxy_version 1.4 -%global bin_version 4.0.0 +%global pango_version 1.52.0 +%global cairo_version 1.18.0 %global gdk_pixbuf_version 2.30.0 %global wayland_protocols_version 1.31 %global wayland_version 1.21.0 +%global epoxy_version 1.4 + +%global bin_version 4.0.0 + +# Filter provides for private modules +%global __provides_exclude_from ^%{_libdir}/gtk-4.0 + +# FTBFS on i686 with GCC 14 -Werror=int-conversion +# https://gitlab.gnome.org/GNOME/gtk/-/issues/6033 + +Name: gtk4 +Version: 4.16.7 +Release: %{anolis_release} +Summary: GTK graphical user interface library + +License: LGPL-2.0-or-later +URL: https://www.gtk.org +Source0: https://download.gnome.org/sources/gtk/4.16/gtk-%{version}.tar.xz + +# Using objcopy for resources interferes with hardening +Patch0: gtk4-no-objcopy.patch + +BuildRequires: cups-devel +BuildRequires: desktop-file-utils +BuildRequires: docbook-style-xsl +BuildRequires: gcc +BuildRequires: gcc-c++ +BuildRequires: gettext +BuildRequires: gi-docgen +BuildRequires: glslc +BuildRequires: meson +BuildRequires: python3-gobject +BuildRequires: pkgconfig(avahi-gobject) +BuildRequires: pkgconfig(cairo) >= %{cairo_version} +BuildRequires: pkgconfig(cairo-gobject) >= %{cairo_version} +BuildRequires: pkgconfig(colord) +BuildRequires: pkgconfig(egl) +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(gstreamer-player-1.0) +BuildRequires: pkgconfig(json-glib-1.0) +BuildRequires: pkgconfig(libjpeg) +BuildRequires: pkgconfig(libpng) +BuildRequires: pkgconfig(libtiff-4) +BuildRequires: pkgconfig(pango) >= %{pango_version} +BuildRequires: pkgconfig(sysprof-capture-4) +BuildRequires: pkgconfig(tracker-sparql-3.0) +BuildRequires: pkgconfig(vulkan) +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(xcomposite) +BuildRequires: pkgconfig(xcursor) +BuildRequires: pkgconfig(xdamage) +BuildRequires: pkgconfig(xfixes) +BuildRequires: pkgconfig(xi) +BuildRequires: pkgconfig(xinerama) +BuildRequires: pkgconfig(xkbcommon) +BuildRequires: pkgconfig(xrandr) +BuildRequires: pkgconfig(xrender) +BuildRequires: /usr/bin/appstream-util +BuildRequires: /usr/bin/rst2man +# 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: cairo%{?_isa} >= %{cairo_version} +Requires: cairo-gobject%{?_isa} >= %{cairo_version} +Requires: glib2%{?_isa} >= %{glib2_version} +Requires: libepoxy%{?_isa} >= %{epoxy_version} +Requires: libwayland-client%{?_isa} >= %{wayland_version} +Requires: libwayland-cursor%{?_isa} >= %{wayland_version} +Requires: pango%{?_isa} >= %{pango_version} + +# required to support all the different image formats +Requires: gdk-pixbuf2-modules%{?_isa} + +# make sure we have a reasonable gsettings backend +Recommends: dconf%{?_isa} -%define url_ver %(echo %{version}|cut -d. -f1,2) - -Name: gtk4 -Version: 4.12.1 -Release: %{anolis_release}%{?dist} -Summary: GTK graphical user interface library -License: LGPLv2+ -URL: https://www.gtk.org -Source0: https://download.gnome.org/sources/gtk/%{url_ver}/gtk-%{version}.tar.xz - - -BuildRequires: gcc gcc-c++ autoconf automake meson >= 0.60.0 -BuildRequires: sassc cups-devel desktop-file-utils docbook-style-xsl -BuildRequires: gettext gi-docgen python3-gobject -BuildRequires: pkgconfig(avahi-gobject) pkgconfig(egl) pkgconfig(colord) -BuildRequires: pkgconfig(cairo) >= %{cairo_version} pkgconfig(cairo-gobject) >= %{cairo_version} -BuildRequires: pkgconfig(epoxy) pkgconfig(fribidi) >= 1.0.6 pkgconfig(gobject-introspection-1.0) -BuildRequires: pkgconfig(gdk-pixbuf-2.0) >= %{gdk_pixbuf_version} -BuildRequires: pkgconfig(glib-2.0) >= %{glib2_version} pkgconfig(pango) >= %{pango_version} -BuildRequires: pkgconfig(graphene-gobject-1.0) >= 1.10.0 pkgconfig(gstreamer-player-1.0) -BuildRequires: pkgconfig(harfbuzz) >= 2.6.0 pkgconfig(json-glib-1.0) -BuildRequires: pkgconfig(libjpeg) pkgconfig(libpng) pkgconfig(libtiff-4) -BuildRequires: pkgconfig(sysprof-4) >= 3.38.0 pkgconfig(sysprof-capture-4) >= 3.38.0 -BuildRequires: pkgconfig(tracker-sparql-3.0) pkgconfig(wayland-egl) >= %{wayland_version} -BuildRequires: pkgconfig(wayland-client) >= %{wayland_version} -BuildRequires: pkgconfig(wayland-cursor) >= %{wayland_version} -BuildRequires: pkgconfig(wayland-protocols) >= %{wayland_protocols_version} -BuildRequires: pkgconfig(xcomposite) pkgconfig(xcursor) pkgconfig(xdamage) -BuildRequires: pkgconfig(xfixes) pkgconfig(xi) pkgconfig(xinerama) -BuildRequires: pkgconfig(xkbcommon) >= 0.2.0 -BuildRequires: pkgconfig(xrandr) pkgconfig(xrender) -BuildRequires: /usr/bin/rst2man - -Requires: adwaita-icon-theme hicolor-icon-theme gtk-update-icon-cache - -Requires: cairo >= %{cairo_version} cairo-gobject >= %{cairo_version} gdk-pixbuf2-modules -Requires: glib2 >= %{glib2_version} libepoxy >= %{epoxy_version} pango >= %{pango_version} -Requires: libwayland-client >= %{wayland_version} libwayland-cursor >= %{wayland_version} - -Recommends: dconf - %description -GTK is a library for creating graphical user interfaces. It works on many UNIX-like -platforms, Windows, and macOS. GTK is released under the terms of the GNU Library -General Public License, which allows for flexible licensing of client applications. -GTK has a C-based, object-oriented architecture that allows for maximum flexibility -and portability; there are bindings for many other languages, including C++, Objective-C, -Guile/Scheme, Perl, Python, JavaScript, Rust, Go, TOM, Ada95, Free Pascal, and Eiffel. -This package contains version 4 of GTK. +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 doc Summary: Documentary files for GTK @@ -70,86 +109,97 @@ BuildArch: noarch %description doc This package contains developer documentation for the GTK4. - + %package devel -Summary: Development files for GTK -Requires: %{name} = %{version}-%{release} -Conflicts: gtk4 < 4.12.0 - +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. - +This package contains the libraries and header files that are needed +for writing applications with version 4 of the GTK widget toolkit. + %package devel-docs -Summary: Developer documentation for GTK -Requires: %{name} = %{version}-%{release} -BuildArch: noarch - +Summary: Developer documentation for GTK +BuildArch: noarch +Requires: gtk4 = %{version}-%{release} +# Because web fonts from upstream are not bundled in the gi-docgen package, +# packages containing documentation generated with gi-docgen should depend on +# this metapackage to ensure the proper system fonts are present. +Recommends: gi-docgen-fonts + %description devel-docs -This package contains developer documentation for version 4 of the GTK widget toolkit. - +This package contains developer documentation for version 4 of the GTK +widget toolkit. + %package devel-tools -Summary: Developer tools for GTK -Requires: %{name} = %{version}-%{release} -Conflicts: gtk4 < 4.12.0 - +Summary: Developer tools for GTK +Requires: gtk4%{?_isa} = %{version}-%{release} + %description devel-tools This package contains helpful applications for developers using GTK. - %prep -%autosetup -n gtk-%{version} -p1 - +%autosetup -p1 -n gtk-%{version} + %build export CFLAGS='-fno-strict-aliasing -DG_DISABLE_CAST_CHECKS -DG_DISABLE_ASSERT %optflags' %meson \ + -Db_pie=true \ %if 0%{?with_broadway} -Dbroadway-backend=true \ %endif - -Dsysprof=enabled -Dtracker=enabled -Dcolord=enabled \ - -Dgtk_doc=true -Dman-pages=true + -Dsysprof=enabled \ + -Dtracker=enabled \ + -Dcolord=enabled \ + -Ddocumentation=true \ + -Dgtk_doc=true \ + -Dman-pages=true \ + -Dbuild-testsuite=false \ + -Dbuild-tests=false \ + -Dbuild-examples=false + %meson_build %install %meson_install + %find_lang gtk40 - + %if !0%{?with_broadway} -rm %{buildroot}%{_mandir}/man1/gtk4-broadwayd.1* +rm $RPM_BUILD_ROOT%{_mandir}/man1/gtk4-broadwayd.1* %endif - -mkdir -p %{buildroot}%{_sysconfdir}/gtk-4.0 -mkdir -p %{buildroot}%{_libdir}/gtk-4.0/modules %generate_compatibility_deps - + +mkdir -p $RPM_BUILD_ROOT%{_sysconfdir}/gtk-4.0 +mkdir -p $RPM_BUILD_ROOT%{_libdir}/gtk-4.0/modules %files -f gtk40.lang %dir %{abidir} -%dir %{_libdir}/gtk-4.0 -%dir %{_libdir}/gtk-4.0/%{bin_version} -%dir %{_datadir}/gtk-4.0 -%{_datadir}/gtk-4.0/emoji/ -%{_datadir}/glib-2.0/schemas/org.gtk.gtk4.Settings.ColorChooser.gschema.xml -%{_datadir}/glib-2.0/schemas/org.gtk.gtk4.Settings.Debug.gschema.xml -%{_datadir}/glib-2.0/schemas/org.gtk.gtk4.Settings.EmojiChooser.gschema.xml -%{_datadir}/glib-2.0/schemas/org.gtk.gtk4.Settings.FileChooser.gschema.xml +%license COPYING %{_bindir}/gtk4-launch %{_bindir}/gtk4-update-icon-cache %{_libdir}/libgtk-4.so.1* -%{_libdir}/gtk-4.0/modules +%dir %{_libdir}/gtk-4.0 +%dir %{_libdir}/gtk-4.0/%{bin_version} %{_libdir}/gtk-4.0/%{bin_version}/media/ %{_libdir}/gtk-4.0/%{bin_version}/printbackends/ -%{_libdir}/girepository-1.0 %{abidir}/libgtk-4.dump %{abidir}/libmedia-gstreamer.dump %{abidir}/libprintbackend-cups.dump %{abidir}/libprintbackend-file.dump %{abidir}/gtk4-launch-option.list %{abidir}/gtk4-update-icon-cache-option.list +%{_libdir}/gtk-4.0/modules +%{_libdir}/girepository-1.0/ %{_mandir}/man1/gtk4-launch.1* %{_mandir}/man1/gtk4-update-icon-cache.1* -%license COPYING +%{_datadir}/glib-2.0/schemas/org.gtk.gtk4.Settings.ColorChooser.gschema.xml +%{_datadir}/glib-2.0/schemas/org.gtk.gtk4.Settings.Debug.gschema.xml +%{_datadir}/glib-2.0/schemas/org.gtk.gtk4.Settings.EmojiChooser.gschema.xml +%{_datadir}/glib-2.0/schemas/org.gtk.gtk4.Settings.FileChooser.gschema.xml +%dir %{_datadir}/gtk-4.0 +%{_datadir}/gtk-4.0/emoji/ %if 0%{?with_broadway} %{_bindir}/gtk4-broadwayd %{_mandir}/man1/gtk4-broadwayd.1* @@ -157,66 +207,74 @@ mkdir -p %{buildroot}%{_libdir}/gtk-4.0/modules %files doc %doc README.md AUTHORS NEWS - + %files devel +%{_libdir}/libgtk-4.so %{_includedir}/* -%{_datadir}/gettext/ -%{_datadir}/gir-1.0 -%{_datadir}/gtk-4.0/valgrind/ -%{_datadir}/gtk-4.0/gtk4builder.rng +%{_libdir}/pkgconfig/* %{_bindir}/gtk4-builder-tool -%{_bindir}/gtk4-query-settings %{_bindir}/gtk4-encode-symbolic-svg %{abidir}/gtk4-encode-symbolic-svg-option.list -%{_libdir}/libgtk-4.so -%{_libdir}/pkgconfig/* + +%{_bindir}/gtk4-path-tool +%{_bindir}/gtk4-query-settings +%{_datadir}/gettext/ +%{_datadir}/gir-1.0/ +%{_datadir}/gtk-4.0/gtk4builder.rng +%{_datadir}/gtk-4.0/valgrind/ %{_mandir}/man1/gtk4-builder-tool.1* -%{_mandir}/man1/gtk4-query-settings.1* %{_mandir}/man1/gtk4-encode-symbolic-svg.1* - +%{_mandir}/man1/gtk4-path-tool.1* +%{_mandir}/man1/gtk4-query-settings.1* + %files devel-docs -%{_datadir}/doc/gtk4/ %{_datadir}/doc/gdk4/ -%{_datadir}/doc/gsk4/ -%{_datadir}/doc/gdk4-x11/ %{_datadir}/doc/gdk4-wayland/ - +%{_datadir}/doc/gdk4-x11/ +%{_datadir}/doc/gsk4/ +%{_datadir}/doc/gtk4/ + %files devel-tools -%{_datadir}/glib-2.0/schemas/org.gtk.Demo4.gschema.xml +%{_bindir}/gtk4-demo +%{_bindir}/gtk4-demo-application +%{_bindir}/gtk4-icon-browser +%{_bindir}/gtk4-node-editor +%{_bindir}/gtk4-print-editor +%{_bindir}/gtk4-rendernode-tool +%{_bindir}/gtk4-image-tool +%{_bindir}/gtk4-widget-factory %{_datadir}/applications/org.gtk.gtk4.NodeEditor.desktop %{_datadir}/applications/org.gtk.Demo4.desktop -%{_datadir}/applications/org.gtk.WidgetFactory4.desktop -%{_datadir}/applications/org.gtk.PrintEditor4.desktop %{_datadir}/applications/org.gtk.IconBrowser4.desktop -%{_datadir}/icons/hicolor/*/apps/org.gtk.Demo4*.svg +%{_datadir}/applications/org.gtk.PrintEditor4.desktop +%{_datadir}/applications/org.gtk.WidgetFactory4.desktop %{_datadir}/icons/hicolor/*/apps/org.gtk.gtk4.NodeEditor*.svg +%{_datadir}/icons/hicolor/*/apps/org.gtk.Demo4*.svg %{_datadir}/icons/hicolor/*/apps/org.gtk.IconBrowser4*.svg -%{_datadir}/icons/hicolor/*/apps/org.gtk.WidgetFactory4*.svg %{_datadir}/icons/hicolor/*/apps/org.gtk.PrintEditor4*.svg -%{_bindir}/gtk4-demo -%{_bindir}/gtk4-demo-application -%{_bindir}/gtk4-node-editor -%{_bindir}/gtk4-print-editor -%{_bindir}/gtk4-widget-factory -%{_bindir}/gtk4-icon-browser -%{_bindir}/gtk4-rendernode-tool +%{_datadir}/icons/hicolor/*/apps/org.gtk.WidgetFactory4*.svg %{abidir}/gtk4-demo-option.list %{abidir}/gtk4-icon-browser-option.list %{abidir}/gtk4-node-editor-option.list %{abidir}/gtk4-widget-factory-option.list +%{_datadir}/glib-2.0/schemas/org.gtk.Demo4.gschema.xml +%{_metainfodir}/org.gtk.gtk4.NodeEditor.appdata.xml +%{_metainfodir}/org.gtk.Demo4.appdata.xml %{_metainfodir}/org.gtk.IconBrowser4.appdata.xml %{_metainfodir}/org.gtk.PrintEditor4.appdata.xml -%{_metainfodir}/org.gtk.gtk4.NodeEditor.appdata.xml %{_metainfodir}/org.gtk.WidgetFactory4.appdata.xml -%{_metainfodir}/org.gtk.Demo4.appdata.xml %{_mandir}/man1/gtk4-demo.1* -%{_mandir}/man1/gtk4-node-editor.1* -%{_mandir}/man1/gtk4-icon-browser.1* %{_mandir}/man1/gtk4-demo-application.1* -%{_mandir}/man1/gtk4-widget-factory.1* +%{_mandir}/man1/gtk4-icon-browser.1* +%{_mandir}/man1/gtk4-node-editor.1* %{_mandir}/man1/gtk4-rendernode-tool.1* +%{_mandir}/man1/gtk4-image-tool.1* +%{_mandir}/man1/gtk4-widget-factory.1* %changelog +* Thu Feb 13 2025 Zhao Hang - 4.16.7-1 +- Refer to CentOS Stream gtk4-4.16.7-1 (mclasen@redhat.com) + * Fri Aug 25 2023 Funda Wang - 4.12.1-1 - New version 4.12.1