diff --git a/temp/gtk4.0/APKBUILD b/temp/gtk4.0/APKBUILD new file mode 100644 index 000000000..426dd5254 --- /dev/null +++ b/temp/gtk4.0/APKBUILD @@ -0,0 +1,129 @@ +# Forked from Alpine to apply patch to fix PinePhone +# Disabled docs and broadway backend +pkgname=gtk4.0 +pkgver=9999 +_pkgver=4.6.3 +pkgrel=0 +pkgdesc="The GTK Toolkit (v4)" +url="https://www.gtk.org/" +install="$pkgname.post-install $pkgname.post-upgrade $pkgname.post-deinstall" +arch="all !s390x !riscv64" # blocked by polkit -> colord +options="!check" # Test suite is known to fail upstream +license="LGPL-2.1-or-later" +subpackages="$pkgname-demo $pkgname-dev $pkgname-lang $pkgname-dbg" +depends="shared-mime-info gtk-update-icon-cache" + +depends_dev=" + atk-dev + gdk-pixbuf-dev + glib-dev + libepoxy-dev + libxext-dev + libxi-dev + libxinerama-dev + wayland-protocols + wayland-libs-client + wayland-libs-cursor + libxkbcommon-dev + vulkan-headers + " +makedepends=" + $depends_dev + perl + cups-dev + expat-dev + gettext-dev + gnutls-dev + gobject-introspection-dev + libice-dev + tiff-dev + zlib-dev + at-spi2-atk-dev + cairo-dev + fontconfig-dev + pango-dev + wayland-dev + libx11-dev + libxcomposite-dev + libxcursor-dev + libxdamage-dev + libxfixes-dev + libxrandr-dev + meson + iso-codes-dev + vulkan-loader-dev + sassc + colord-dev + gstreamer-dev + gst-plugins-bad-dev + gtk-doc>=1.33 + gi-docgen + py3-docutils + graphene-dev + " +source="https://download.gnome.org/sources/gtk/${_pkgver%.*}/gtk-$_pkgver.tar.xz + gdk-hack-context-realize.patch + " + +builddir="$srcdir/gtk-$_pkgver" + +build() { + # We don't run tests and they currently fail to build + abuild-meson \ + -Dgtk_doc=false \ + -Dbroadway-backend=false \ + -Dman-pages=false \ + -Dbuild-tests=false \ + . output + meson compile ${JOBS:+-j ${JOBS}} -C output +} + +package() { + DESTDIR="$pkgdir" meson install --no-rebuild -C output + + # use gtk-update-icon-cache from gtk+2.0 for now. The icon cache is forward + # compatible so this is fine. + # do the same for gtk4-update-icon-cache + rm -f "$pkgdir"/usr/bin/gtk-update-icon-cache + rm -f "$pkgdir"/usr/bin/gtk4-update-icon-cache + rm -f "$pkgdir"/usr/share/man/man1/gtk-update-icon-cache.1 +} + +demo() { + pkgdesc="$pkgdesc (demonstration application)" + amove \ + usr/bin/gtk4-demo \ + usr/bin/gtk4-demo-application \ + usr/bin/gtk4-icon-browser \ + usr/bin/gtk4-print-editor \ + usr/bin/gtk4-widget-factory \ + usr/share/applications/org.gtk.Demo4.desktop \ + usr/share/applications/org.gtk.IconBrowser4.desktop \ + usr/share/applications/org.gtk.PrintEditor4.desktop \ + usr/share/applications/org.gtk.WidgetFactory4.desktop \ + usr/share/glib-2.0/schemas/org.gtk.Demo4.gschema.xml \ + usr/share/gtk-4.0/gtk4builder.rng \ + usr/share/icons +} + +dev() { + default_dev + + amove \ + usr/bin/gtk4-builder-tool \ + usr/bin/gtk4-encode-symbolic-svg \ + usr/bin/gtk4-query-settings \ + usr/share/gtk-4.0/valgrind +} + +lang() { + default_lang + + # These are some localized emoji labels. + amove usr/share/gtk-4.0/emoji +} + +sha512sums=" +0e96b39a8171ccefc24808d1af8af8e3cbcc9b403c1bdfd85778ed2e824c93e3687b7baa1237b05fa35181d300eacfd6cc9f79c7a6eef70b365991f0a2769f71 gtk-4.6.3.tar.xz +e0ab58ad4ad1ce73ac6f038144a8de0326d41c764f91d4b91864efcfff548d7a1ba1318b9c4b276821e72d8612a0677533914fd5870a1a9f2db483a4b43bff5d gdk-hack-context-realize.patch +" diff --git a/temp/gtk4.0/gdk-hack-context-realize.patch b/temp/gtk4.0/gdk-hack-context-realize.patch new file mode 100644 index 000000000..bdef8bf9b --- /dev/null +++ b/temp/gtk4.0/gdk-hack-context-realize.patch @@ -0,0 +1,27 @@ +This is a hack to solve some crashes for GTK4 apps in the pinephone +by dirty fixing an upstream bug[1]. The real fix will take longer and +will not be trivial to backport[2]. In the meanwhile, we force a GLES +context if it is allowed and the shared context is also using GLES, +to avoid the creation of a GL context with wrong version. Hopefully, +this should not have additional side-effects for other devices. + +[1] https://gitlab.gnome.org/GNOME/gtk/-/issues/4763 +[2] https://gitlab.gnome.org/GNOME/gtk/-/merge_requests/4687 + +diff --git i/gdk/gdkglcontext.c w/gdk/gdkglcontext.c +index 3869b14da0..57a3661492 100644 +--- i/gdk/gdkglcontext.c ++++ w/gdk/gdkglcontext.c +@@ -280,6 +280,11 @@ gdk_gl_context_real_realize (GdkGLContext *context, + G_GNUC_UNUSED gint64 start_time = GDK_PROFILER_CURRENT_TIME; + + if (share != NULL) +- gdk_gl_context_get_required_version (share, &major, &minor); ++ { ++ gdk_gl_context_get_required_version (share, &major, &minor); ++ if (gdk_gl_context_get_use_es (share) && ++ gdk_gl_context_is_api_allowed (context, GDK_GL_API_GLES, NULL)) ++ gdk_gl_context_set_allowed_apis (context, GDK_GL_API_GLES); ++ } + else + gdk_gl_context_get_required_version (context, &major, &minor); diff --git a/temp/gtk4.0/gtk4.0.post-deinstall b/temp/gtk4.0/gtk4.0.post-deinstall new file mode 100644 index 000000000..14e7a6a99 --- /dev/null +++ b/temp/gtk4.0/gtk4.0.post-deinstall @@ -0,0 +1,3 @@ +#!/bin/sh + +rm -f etc/gtk-4.0/gdk-pixbuf.loaders diff --git a/temp/gtk4.0/gtk4.0.post-install b/temp/gtk4.0/gtk4.0.post-install new file mode 100644 index 000000000..b711bc4fc --- /dev/null +++ b/temp/gtk4.0/gtk4.0.post-install @@ -0,0 +1,5 @@ +#!/bin/sh + +mkdir -p etc/gtk-4.0 +usr/bin/gdk-pixbuf-query-loaders > etc/gtk-4.0/gdk-pixbuf.loaders + diff --git a/temp/gtk4.0/gtk4.0.post-upgrade b/temp/gtk4.0/gtk4.0.post-upgrade new file mode 120000 index 000000000..f8267b591 --- /dev/null +++ b/temp/gtk4.0/gtk4.0.post-upgrade @@ -0,0 +1 @@ +gtk4.0.post-install \ No newline at end of file