summaryrefslogtreecommitdiff
path: root/user/gtk4
diff options
context:
space:
mode:
Diffstat (limited to 'user/gtk4')
-rw-r--r--user/gtk4/APKBUILD51
-rw-r--r--user/gtk4/vulkan-nullref.patch69
2 files changed, 120 insertions, 0 deletions
diff --git a/user/gtk4/APKBUILD b/user/gtk4/APKBUILD
new file mode 100644
index 000000000..1795d2107
--- /dev/null
+++ b/user/gtk4/APKBUILD
@@ -0,0 +1,51 @@
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Sile Ekaterin Liszka <sheila@vulpine.house>
+pkgname=gtk4
+pkgver=4.18.5
+pkgrel=0
+pkgdesc="Version 4 of the GNOME graphics toolkit"
+url="https://www.gtk.org"
+arch="all"
+options="!check" # Requires Wayland environment running
+license="LGPL-2.0+ AND LGPL-2.1+ AND LGPL-2.0-only AND Expat"
+depends=""
+makedepends="cairo-dev cmake cups-dev ffmpeg-dev ffmpeg-libs gdk-pixbuf-dev
+ gi-docgen glib-dev gobject-introspection-dev graphene-dev gstreamer-dev
+ gst-plugins-bad-dev iso-codes-dev libepoxy-dev libexecinfo-dev
+ librsvg-dev libxcursor-dev libxdamage-dev libxi-dev libxinerama-dev
+ libxkbcommon-dev libxrandr-dev meson pango-dev py3-docutils py3-jinja2
+ py3-markdown py3-pygments py3-pygobject py3-toml py3-typogrify tiff-dev
+ wayland-dev wayland-protocols"
+subpackages="$pkgname-dev $pkgname-doc"
+source="https://download.gnome.org/sources/gtk/${pkgver%.*}/gtk-$pkgver.tar.xz
+ vulkan-nullref.patch
+ "
+builddir="$srcdir/gtk-$pkgver"
+
+build() {
+ meson setup \
+ --prefix=/usr \
+ --sysconfdir=/etc \
+ --mandir=/usr/share/man \
+ --localstatedir=/var \
+ --buildtype=release \
+ --wrap-mode=nofallback \
+ -Dc_link_args='-lexecinfo' \
+ -Dman-pages=true \
+ -Dbuild-examples=false \
+ -Dvulkan=disabled \
+ build
+ meson compile -C build
+}
+
+check() {
+ meson test -C build
+}
+
+package() {
+ DESTDIR="$pkgdir" meson install -C build
+}
+
+
+sha512sums="4a09188fdbeb532d8c2064199126eaf60d806118bb637d5182121f3d80d374acdf343568c3423effb9574c364279ded7d7cbd4e0331dc1fb647970f60c98bff0 gtk-4.18.5.tar.xz
+1dca0747e2f572354c0d47e443270d64f5855d9fba592621d570be5eed49213ce8303e7d028bbe4d493cceebea9b3c90d6dc4f0671b1cae153a15384aa35d63e vulkan-nullref.patch"
diff --git a/user/gtk4/vulkan-nullref.patch b/user/gtk4/vulkan-nullref.patch
new file mode 100644
index 000000000..464415901
--- /dev/null
+++ b/user/gtk4/vulkan-nullref.patch
@@ -0,0 +1,69 @@
+From d4350c0fe535a759abd7898c7f251738242d1408 Mon Sep 17 00:00:00 2001
+From: Benjamin Otte <otte@redhat.com>
+Date: Thu, 24 Apr 2025 03:36:15 +0200
+Subject: [PATCH] vulkan: Handle not being compiled against Vulkan
+
+The Vulkan renderer should work and just fail to realize.
+Currently it SEGVs with a NULL function call.
+
+Part-of: <https://gitlab.gnome.org/GNOME/gtk/-/merge_requests/8506>
+---
+ gsk/gpu/gskvulkanrenderer.c | 22 ++++++++++++++++++++--
+ 1 file changed, 20 insertions(+), 2 deletions(-)
+
+diff --git a/gsk/gpu/gskvulkanrenderer.c b/gsk/gpu/gskvulkanrenderer.c
+index a5f827df839..6282c0b51c1 100644
+--- a/gsk/gpu/gskvulkanrenderer.c
++++ b/gsk/gpu/gskvulkanrenderer.c
+@@ -4,6 +4,8 @@
+
+ #include "gskgpurendererprivate.h"
+
++#include <glib/gi18n-lib.h>
++
+ #ifdef GDK_RENDERING_VULKAN
+
+ #include "gskvulkandeviceprivate.h"
+@@ -143,14 +145,28 @@ gsk_vulkan_renderer_unrealize (GskRenderer *renderer)
+
+ GSK_RENDERER_CLASS (gsk_vulkan_renderer_parent_class)->unrealize (renderer);
+ }
+-#endif
++
++#else /* !GDK_RENDERING_VULKAN */
++
++static gboolean
++gsk_vulkan_renderer_realize (GskRenderer *renderer,
++ GdkDisplay *display,
++ GdkSurface *surface,
++ GError **error)
++{
++ g_set_error_literal (error, GDK_VULKAN_ERROR, GDK_VULKAN_ERROR_NOT_AVAILABLE,
++ _("Vulkan support disabled during GTK build"));
++
++ return FALSE;
++}
++#endif /* GDK_RENDERING_VULKAN */
+
+ static void
+ gsk_vulkan_renderer_class_init (GskVulkanRendererClass *klass)
+ {
++ GskRendererClass *renderer_class = GSK_RENDERER_CLASS (klass);
+ #ifdef GDK_RENDERING_VULKAN
+ GskGpuRendererClass *gpu_renderer_class = GSK_GPU_RENDERER_CLASS (klass);
+- GskRendererClass *renderer_class = GSK_RENDERER_CLASS (klass);
+
+ gpu_renderer_class->frame_type = GSK_TYPE_VULKAN_FRAME;
+
+@@ -162,6 +178,8 @@ gsk_vulkan_renderer_class_init (GskVulkanRendererClass *klass)
+ gpu_renderer_class->get_backbuffer = gsk_vulkan_renderer_get_backbuffer;
+
+ renderer_class->unrealize = gsk_vulkan_renderer_unrealize;
++#else
++ renderer_class->realize = gsk_vulkan_renderer_realize;
+ #endif
+ }
+
+--
+GitLab
+