temp/gtk4.0: fork from alpine to fix bug in PinePhone (MR 3122)
Add hack to prevent GTK4 apps to be unusable in the PinePhone. Fixes #1510 Upstream issue https://gitlab.gnome.org/GNOME/gtk/-/issues/4763 A good solution will take a bit more time but is an on-going process https://gitlab.gnome.org/GNOME/gtk/-/merge_requests/4687 [ci:skip-build]: already built successfully in CI
This commit is contained in:
parent
e822fde276
commit
72075de4e0
5 changed files with 165 additions and 0 deletions
129
temp/gtk4.0/APKBUILD
Normal file
129
temp/gtk4.0/APKBUILD
Normal file
|
@ -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
|
||||||
|
"
|
27
temp/gtk4.0/gdk-hack-context-realize.patch
Normal file
27
temp/gtk4.0/gdk-hack-context-realize.patch
Normal file
|
@ -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);
|
3
temp/gtk4.0/gtk4.0.post-deinstall
Normal file
3
temp/gtk4.0/gtk4.0.post-deinstall
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
rm -f etc/gtk-4.0/gdk-pixbuf.loaders
|
5
temp/gtk4.0/gtk4.0.post-install
Normal file
5
temp/gtk4.0/gtk4.0.post-install
Normal file
|
@ -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
|
||||||
|
|
1
temp/gtk4.0/gtk4.0.post-upgrade
Symbolic link
1
temp/gtk4.0/gtk4.0.post-upgrade
Symbolic link
|
@ -0,0 +1 @@
|
||||||
|
gtk4.0.post-install
|
Loading…
Reference in a new issue