$ git diff --patch-with-stat --summary 425699e625aa536607100a4e203f85bc6cc2aa32..a2954b2f646647df29e7c190adc725bcfcbb2658
.abf.yml | 2 +-
gtk-4.10.1-ffmpeg-6.0.patch | 12 ++++
...-stupid-assumptions-about-ld-being-ld.bfd.patch | 28 ++++-----
gtk4.0.spec | 66 ++++++++++++----------
4 files changed, 63 insertions(+), 45 deletions(-)
create mode 100644 gtk-4.10.1-ffmpeg-6.0.patch
diff --git a/.abf.yml b/.abf.yml
index 84ab3c3..f92112e 100644
--- a/.abf.yml
+++ b/.abf.yml
@@ -1,2 +1,2 @@
sources:
- gtk-4.8.2.tar.xz: 89c4866cbb822d7503dd10cca3eeb3b50411ec8c
+ gtk-4.10.5.tar.xz: b91d8dc1f988c6538fee7eb565ca13c09ef94f48
diff --git a/gtk-4.10.1-ffmpeg-6.0.patch b/gtk-4.10.1-ffmpeg-6.0.patch
new file mode 100644
index 0000000..4754369
--- /dev/null
+++ b/gtk-4.10.1-ffmpeg-6.0.patch
@@ -0,0 +1,12 @@
+diff -up gtk-4.10.1/modules/media/gtkffmediafile.c.omv~ gtk-4.10.1/modules/media/gtkffmediafile.c
+--- gtk-4.10.1/modules/media/gtkffmediafile.c.omv~ 2023-04-14 15:16:52.765946221 +0200
++++ gtk-4.10.1/modules/media/gtkffmediafile.c 2023-04-14 16:08:16.982453976 +0200
+@@ -861,7 +861,7 @@ gtk_ff_media_file_open_audio_device (Gtk
+ candidate != NULL;
+ candidate = av_output_audio_device_next (candidate))
+ {
+- if (candidate->control_message)
++ if (candidate->name && !strcmp(candidate->name, "alsa"))
+ break;
+ }
+
diff --git a/gtk-4.6.0-fix-stupid-assumptions-about-ld-being-ld.bfd.patch b/gtk-4.6.0-fix-stupid-assumptions-about-ld-being-ld.bfd.patch
index dcb7bae..76aabf3 100644
--- a/gtk-4.6.0-fix-stupid-assumptions-about-ld-being-ld.bfd.patch
+++ b/gtk-4.6.0-fix-stupid-assumptions-about-ld-being-ld.bfd.patch
@@ -1,8 +1,8 @@
-diff -uraN gtk-4.8.2/demos/gtk-demo/meson.build omv-gtk-4.8.2/demos/gtk-demo/meson.build
---- gtk-4.8.2/demos/gtk-demo/meson.build 2022-10-24 19:46:56.000000000 +0200
-+++ omv-gtk-4.8.2/demos/gtk-demo/meson.build 2022-10-25 17:07:07.122672672 +0200
-@@ -159,7 +159,7 @@
- objcopy_supports_add_symbol = run_command(objcopy, '--help').stdout().contains('--add-symbol')
+diff -uraN gtk-4.10.1/demos/gtk-demo/meson.build omv-gtk-4.10.1/demos/gtk-demo/meson.build
+--- gtk-4.10.1/demos/gtk-demo/meson.build 2023-03-14 12:50:49.000000000 +0100
++++ omv-gtk-4.10.1/demos/gtk-demo/meson.build 2023-03-18 20:27:25.389740046 +0100
+@@ -162,7 +162,7 @@
+ objcopy_supports_add_symbol = run_command(objcopy, '--help', check: false).stdout().contains('--add-symbol')
endif
-ld = find_program('ld', required : false)
@@ -10,11 +10,11 @@ diff -uraN gtk-4.8.2/demos/gtk-demo/meson.build omv-gtk-4.8.2/demos/gtk-demo/mes
if not meson.is_cross_build() and build_machine.cpu_family() != 'arm' and build_machine.system() == 'linux' and objcopy.found() and objcopy_supports_add_symbol and ld.found()
glib_compile_resources = find_program('glib-compile-resources')
-diff -uraN gtk-4.8.2/demos/widget-factory/meson.build omv-gtk-4.8.2/demos/widget-factory/meson.build
---- gtk-4.8.2/demos/widget-factory/meson.build 2022-10-24 19:46:56.000000000 +0200
-+++ omv-gtk-4.8.2/demos/widget-factory/meson.build 2022-10-25 17:07:47.247672181 +0200
+diff -uraN gtk-4.10.1/demos/widget-factory/meson.build omv-gtk-4.10.1/demos/widget-factory/meson.build
+--- gtk-4.10.1/demos/widget-factory/meson.build 2023-03-14 12:50:49.000000000 +0100
++++ omv-gtk-4.10.1/demos/widget-factory/meson.build 2023-03-18 20:27:52.641831479 +0100
@@ -6,7 +6,7 @@
- objcopy_supports_add_symbol = run_command(objcopy, '--help').stdout().contains('--add-symbol')
+ objcopy_supports_add_symbol = run_command(objcopy, '--help', check: false).stdout().contains('--add-symbol')
endif
-ld = find_program('ld', required : false)
@@ -22,11 +22,11 @@ diff -uraN gtk-4.8.2/demos/widget-factory/meson.build omv-gtk-4.8.2/demos/widget
if not meson.is_cross_build() and build_machine.cpu_family() != 'arm' and build_machine.system() == 'linux' and objcopy.found() and objcopy_supports_add_symbol and ld.found()
glib_compile_resources = find_program('glib-compile-resources')
-diff -uraN gtk-4.8.2/gtk/meson.build omv-gtk-4.8.2/gtk/meson.build
---- gtk-4.8.2/gtk/meson.build 2022-10-24 19:46:56.000000000 +0200
-+++ omv-gtk-4.8.2/gtk/meson.build 2022-10-25 17:08:47.663847295 +0200
-@@ -874,7 +874,7 @@
- objcopy_supports_add_symbol = run_command(objcopy, '--help').stdout().contains('--add-symbol')
+diff -uraN gtk-4.10.1/gtk/meson.build omv-gtk-4.10.1/gtk/meson.build
+--- gtk-4.10.1/gtk/meson.build 2023-03-14 12:50:49.000000000 +0100
++++ omv-gtk-4.10.1/gtk/meson.build 2023-03-18 20:28:30.997145354 +0100
+@@ -790,7 +790,7 @@
+ objcopy_supports_add_symbol = run_command(objcopy, '--help', check: false).stdout().contains('--add-symbol')
endif
-ld = find_program('ld', required : false)
diff --git a/gtk4.0.spec b/gtk4.0.spec
index c1859ce..374ed46 100644
--- a/gtk4.0.spec
+++ b/gtk4.0.spec
@@ -1,25 +1,12 @@
-# enable_gtkdoc: Toggle if gtk-doc files should be rebuilt.
-# 0 = no
-# 1 = yes
-%define enable_gtkdoc 0
-
-# enable_bootstrap: Toggle if bootstrapping package
-# 0 = no
-# 1 = yes
-%define enable_bootstrap 1
-
-# enable_tests: Run test suite in build
-# 0 = no
-# 1 = yes
-%define enable_tests 0
-
-%{?_without_gtkdoc: %{expand: %%define enable_gtkdoc 0}}
-%{?_without_bootstrap: %{expand: %%define enable_bootstrap 0}}
-%{?_without_tests: %{expand: %%define enable_tests 0}}
-
-%{?_with_gtkdoc: %{expand: %%define enable_gtkdoc 1}}
-%{?_with_bootstrap: %{expand: %%define enable_bootstrap 1}}
-%{?_with_tests: %{expand: %%define enable_tests 1}}
+%bcond_with bootstrap
+%if %{with bootstrap}
+# Disable gstreamer to avoid a circular build dependency between gtk4 and gst-plugins-bad. Enable it after bootstraping.
+%bcond_with gstreamer
+%else
+%bcond_without gstreamer
+%endif
+%bcond_with gtkdoc
+%bcond_with tests
# required version of various libraries
%global glib2_version 2.65.0
@@ -46,7 +33,7 @@
%define _disable_ld_no_undefined 1
Name: %{pkgname}%{api_version}
-Version: 4.8.2
+Version: 4.10.5
Release: 1
Summary: GTK graphical user interface library
License: LGPLv2+
@@ -58,11 +45,14 @@ Source0: https://download.gnome.org/sources/%{pkgname}/%{url_ver}/%{pkgname}-%{v
# Fedora patches
-# Mandriva patches
+# OpenMandriva patches
# Stupid gnomes want to write their own build system, but don't even
# know about different implementations of ld, or LD environment
# variables, or CC_LD settings in their own build system...
Patch0: gtk-4.6.0-fix-stupid-assumptions-about-ld-being-ld.bfd.patch
+# FIXME this patch is not entirely correct, but should be good enough.
+# Certainly better than failing to even compile...
+Patch1: gtk-4.10.1-ffmpeg-6.0.patch
Requires: common-licenses
@@ -84,7 +74,9 @@ 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)
+%if %{with gstreamer}
BuildRequires: pkgconfig(gstreamer-player-1.0)
+%endif
BuildRequires: pkgconfig(gi-docgen)
BuildRequires: pkgconfig(iso-codes)
BuildRequires: pkgconfig(json-glib-1.0)
@@ -94,9 +86,12 @@ BuildRequires: pkgconfig(libjpeg)
BuildRequires: pkgconfig(libpng)
BuildRequires: pkgconfig(libtiff-4)
BuildRequires: pkgconfig(pango) >= %{pango_version}
+BuildRequires: pkgconfig(pangocairo)
+%if ! %{with bootstrap}
BuildRequires: pkgconfig(sysprof-4)
BuildRequires: pkgconfig(sysprof-capture-4)
BuildRequires: pkgconfig(rest-0.7)
+%endif
BuildRequires: pkgconfig(tracker-sparql-3.0)
BuildRequires: pkgconfig(vulkan)
BuildRequires: pkgconfig(wayland-client) >= %{wayland_version}
@@ -120,11 +115,11 @@ BuildRequires: vulkan-headers
%rename gtk+4.0
-%if %enable_tests
+%if %{with tests}
BuildRequires: x11-server-xvfb
%endif
-%if %enable_gtkdoc
+%if %{with gtkdoc}
BuildRequires: gtk-doc >= 1.99
BuildRequires: sgml-tools
BuildRequires: texinfo
@@ -133,7 +128,7 @@ BuildRequires: texinfo
# gw tests will fail without this
BuildRequires: fonts-ttf-dejavu
-%if !%{enable_bootstrap}
+%if ! %{with bootstrap}
Recommends: xdg-user-dirs-gtk
%endif
Recommends: %mklibname gvfs 0
@@ -223,14 +218,23 @@ rm -rf subprojects
-Dbroadway-backend=true \
-Dvulkan=enabled \
-Dmedia-ffmpeg=enabled \
+%if %{with gstreamer}
-Dmedia-gstreamer=enabled \
+%else
+ -Dmedia-gstreamer=disabled \
+%endif
+%if %{with bootstrap}
+ -Dsysprof=disabled \
+%else
-Dsysprof=enabled \
+%endif
-Dcolord=enabled \
-Dcloudproviders=disabled \
-Dgtk_doc=false \
-Dman-pages=true \
-Dtracker=enabled \
- -Dinstall-tests=false
+ -Dbuild-testsuite=false \
+ -Dbuild-tests=false
%meson_build
@@ -254,7 +258,7 @@ mkdir -p $RPM_BUILD_ROOT%{_libdir}/gtk-%{api_version}/modules
%check
desktop-file-validate %{buildroot}%{_datadir}/applications/*.desktop
-%if %enable_tests
+%if %{with tests}
XDISPLAY=$(i=1; while [ -f /tmp/.X$i-lock ]; do i=$(($i+1)); done; echo $i)
%{_bindir}/Xvfb :$XDISPLAY &
export DISPLAY=:$XDISPLAY
@@ -287,8 +291,10 @@ kill $(cat /tmp/.X$XDISPLAY-lock) ||:
%{_libdir}/gtk-%{api_version}/%{binary_version}/printbackends/*.so
%{_libdir}/libgtk-4.so.%{lib_major}.*
%{_libdir}/libgtk-4.so.%{lib_major}
-%{_libdir}/gtk-%{api_version}/%{binary_version}/media/libmedia-gstreamer.so
%{_libdir}/gtk-%{api_version}/%{binary_version}/media/libmedia-ffmpeg.so
+%if %{with gstreamer}
+%{_libdir}/gtk-%{api_version}/%{binary_version}/media/libmedia-gstreamer.so
+%endif
%files -n %{girname}
%{_libdir}/girepository-1.0/Gdk-%{api_version}.typelib