Control: tags 847366 + patch On Fri, 20 Jan 2017 at 17:45:56 +0000, Simon McVittie wrote: > Upstream say this is the wrong answer. Using Gtk without GL is *meant* > to work - the problem is that one of the initialization calls is > unconditional (upstream: > <https://bugzilla.gnome.org/show_bug.cgi?id=775279>) and will abort > if there is no GLX library available.
Patch attached, also in pkg-gnome svn, and seems to work fine (tested with gtk3-demo in a chroot with no Recommends installed, and Xephyr outside). debian-installer developers: assuming you don't want a libgl1-udeb, you will need either this fix applied to gtk+3.0, or GDK_GL=disable in the environment whenever you run GTK apps. Either one should work. I'll upload soon unless someone either does it for me, or tells me that gtk+3.0/3.22.7-1 urgently needs to migrate. S
Index: debian/patches/gdk-x11-Check-if-we-have-access-to-GL-before-using-G.patch =================================================================== --- debian/patches/gdk-x11-Check-if-we-have-access-to-GL-before-using-G.patch (nonexistent) +++ debian/patches/gdk-x11-Check-if-we-have-access-to-GL-before-using-G.patch (revision 51930) @@ -0,0 +1,58 @@ +From 1fb5f0aed9976437d8c9c82071efe9a447d73de1 Mon Sep 17 00:00:00 2001 +From: Emmanuele Bassi <eba...@gnome.org> +Date: Fri, 20 Jan 2017 18:07:01 +0000 +Subject: [PATCH] gdk/x11: Check if we have access to GL before using GLX API + +If the platform does not have access to libGL then any call to GL and +GLX API through libepoxy will fail with an assertion. Until such time +that libepoxy exposes API for us to use, we can simply dlopen libGL +ourselves and do a symbol check. + +[smcv: fix typo] + +Bug: https://bugzilla.gnome.org/show_bug.cgi?id=775279 +Bug-Debian: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=847366 +--- + gdk/x11/gdkglcontext-x11.c | 26 ++++++++++++++++++++++++++ + 1 file changed, 26 insertions(+) + +diff --git a/gdk/x11/gdkglcontext-x11.c b/gdk/x11/gdkglcontext-x11.c +index 0819f89648..d8ddf0fe19 100644 +--- a/gdk/x11/gdkglcontext-x11.c ++++ b/gdk/x11/gdkglcontext-x11.c +@@ -854,6 +854,32 @@ gdk_x11_screen_init_gl (GdkScreen *screen) + if (_gdk_gl_flags & GDK_GL_DISABLE) + return FALSE; + ++ /* This is an ad hoc check that bypasses libepoxy to check if libGL.so is ++ * unavailable, and disables GL support if that's the case ++ * ++ * Ideally, libepoxy should do this for us, but that would require adding ++ * new API, and we'd need a fallback anyway. ++ */ ++ { ++ Bool (* fp_glXQueryExtension) (Display *dpy, int *err_base, int *ev_base); ++ GModule *module = g_module_open ("libGL.so.1", 0); ++ ++ if (module == NULL) ++ { ++ GDK_NOTE (OPENGL, g_message ("No libGL.so found")); ++ return FALSE; ++ } ++ ++ if (!g_module_symbol (module, "glXQueryExtension", (gpointer *) &fp_glXQueryExtension)) ++ { ++ GDK_NOTE (OPENGL, g_message ("No glXQueryExtension symbol found")); ++ g_module_close (module); ++ return FALSE; ++ } ++ ++ g_module_close (module); ++ } ++ + dpy = gdk_x11_display_get_xdisplay (display); + + if (!glXQueryExtension (dpy, &error_base, &event_base)) +-- +2.11.0 + Index: debian/patches/series =================================================================== --- debian/patches/series (revision 51929) +++ debian/patches/series (revision 51930) @@ -7,3 +7,4 @@ 071_fix-installation-of-HTML-images.patch no-accessibility-dump.patch reftest-known-fail.patch +gdk-x11-Check-if-we-have-access-to-GL-before-using-G.patch Index: debian/changelog =================================================================== --- debian/changelog (revision 51929) +++ debian/changelog (revision 51930) @@ -1,3 +1,12 @@ +gtk+3.0 (3.22.7-2) UNRELEASED; urgency=medium + + * d/p/gdk-x11-Check-if-we-have-access-to-GL-before-using-G.patch: + add proposed patch from upstream Bugzilla to let GDK X11 + initialization complete successfully when libGL.so.1 is not + available (Closes: #847366) + + -- Simon McVittie <s...@debian.org> Fri, 20 Jan 2017 21:38:48 +0000 + gtk+3.0 (3.22.7-1) unstable; urgency=medium * New upstream release.