Many packages perform automagic dependencies on gdk's backend
implementations by checking if the macro is defined and then using the
code it unlocks, rather than having a buildsystem option such as
-Dwayland=true.

It's unfeasible to patch every such package's source code to add
configure options and respect them. Instead add a truly filthy hack and
permit gtk itself to selectively show or hide the windowing system in
use.

Bug: https://bugs.gentoo.org/624960
Signed-off-by: Eli Schwartz <eschwart...@gmail.com>
---
 ...-poison-macro-to-hide-GDK_WINDOWING_.patch | 25 ++++++++++---------
 gui-libs/gtk/gtk-4.12.5-r1.ebuild             |  7 ++++++
 ...-4.12.5-r1.ebuild => gtk-4.12.5-r2.ebuild} |  9 ++++++-
 ...gtk-4.14.4.ebuild => gtk-4.14.3-r1.ebuild} |  7 ++++++
 ...gtk-4.14.3.ebuild => gtk-4.14.4-r1.ebuild} |  7 ++++++
 5 files changed, 42 insertions(+), 13 deletions(-)
 copy {x11-libs/gtk+ => 
gui-libs/gtk}/files/0001-gdk-add-a-poison-macro-to-hide-GDK_WINDOWING_.patch 
(86%)
 copy gui-libs/gtk/{gtk-4.12.5-r1.ebuild => gtk-4.12.5-r2.ebuild} (94%)
 rename gui-libs/gtk/{gtk-4.14.4.ebuild => gtk-4.14.3-r1.ebuild} (96%)
 rename gui-libs/gtk/{gtk-4.14.3.ebuild => gtk-4.14.4-r1.ebuild} (96%)

diff --git 
a/x11-libs/gtk+/files/0001-gdk-add-a-poison-macro-to-hide-GDK_WINDOWING_.patch 
b/gui-libs/gtk/files/0001-gdk-add-a-poison-macro-to-hide-GDK_WINDOWING_.patch
similarity index 86%
copy from 
x11-libs/gtk+/files/0001-gdk-add-a-poison-macro-to-hide-GDK_WINDOWING_.patch
copy to 
gui-libs/gtk/files/0001-gdk-add-a-poison-macro-to-hide-GDK_WINDOWING_.patch
index 9bba12f8445b..4e078610f8cb 100644
--- 
a/x11-libs/gtk+/files/0001-gdk-add-a-poison-macro-to-hide-GDK_WINDOWING_.patch
+++ 
b/gui-libs/gtk/files/0001-gdk-add-a-poison-macro-to-hide-GDK_WINDOWING_.patch
@@ -1,4 +1,4 @@
-From 25bdad805bb9e16032baf4480e9c1e432ddef49b Mon Sep 17 00:00:00 2001
+From 0537043f72ea1a634b101efa9e11cc0a22baaf71 Mon Sep 17 00:00:00 2001
 From: Eli Schwartz <eschwart...@gmail.com>
 Date: Wed, 19 Jun 2024 21:28:31 -0400
 Subject: [PATCH] gdk: add a "poison" macro to hide GDK_WINDOWING_*
@@ -34,10 +34,10 @@ Signed-off-by: Eli Schwartz <eschwart...@gmail.com>
  3 files changed, 15 insertions(+)
 
 diff --git a/gdk/gdkconfig.h.meson b/gdk/gdkconfig.h.meson
-index 7db19e0470..6bee207e94 100644
+index d5b48f3184..22baab52ae 100644
 --- a/gdk/gdkconfig.h.meson
 +++ b/gdk/gdkconfig.h.meson
-@@ -10,9 +10,16 @@
+@@ -10,10 +10,17 @@
  G_BEGIN_DECLS
  
  
@@ -46,21 +46,22 @@ index 7db19e0470..6bee207e94 100644
 +#endif
 +
  #mesondefine GDK_WINDOWING_BROADWAY
+ #mesondefine GDK_WINDOWING_MACOS
 +
 +#ifndef GENTOO_GTK_HIDE_WAYLAND
  #mesondefine GDK_WINDOWING_WAYLAND
 +#endif
 +
  #mesondefine GDK_WINDOWING_WIN32
- #mesondefine GDK_WINDOWING_QUARTZ
  
+ #mesondefine GDK_RENDERING_CAIRO
 diff --git a/gdk/wayland/gdkwayland.h b/gdk/wayland/gdkwayland.h
-index 2b79295add..5f0e9cfa81 100644
+index 846445910e..5d84619295 100644
 --- a/gdk/wayland/gdkwayland.h
 +++ b/gdk/wayland/gdkwayland.h
-@@ -25,6 +25,10 @@
- #ifndef __GDK_WAYLAND_H__
- #define __GDK_WAYLAND_H__
+@@ -24,6 +24,10 @@
+ 
+ #pragma once
  
 +#ifdef GENTOO_GTK_HIDE_WAYLAND
 +  #error "A Gentoo ebuild has hidden wayland and it cannot be used in this 
compilation unit. Please file a bug if you see this error."
@@ -70,12 +71,12 @@ index 2b79295add..5f0e9cfa81 100644
  
  #define __GDKWAYLAND_H_INSIDE__
 diff --git a/gdk/x11/gdkx.h b/gdk/x11/gdkx.h
-index 1f64bccb6d..256c83015e 100644
+index 6bef6b6de8..d4f8b94550 100644
 --- a/gdk/x11/gdkx.h
 +++ b/gdk/x11/gdkx.h
-@@ -25,6 +25,10 @@
- #ifndef __GDK_X_H__
- #define __GDK_X_H__
+@@ -24,6 +24,10 @@
+ 
+ #pragma once
  
 +#ifdef GENTOO_GTK_HIDE_X11
 +  #error "A Gentoo ebuild has hidden x11 and it cannot be used in this 
compilation unit. Please file a bug if you see this error."
diff --git a/gui-libs/gtk/gtk-4.12.5-r1.ebuild 
b/gui-libs/gtk/gtk-4.12.5-r1.ebuild
index cd5ffd7bad88..aec0c8889e71 100644
--- a/gui-libs/gtk/gtk-4.12.5-r1.ebuild
+++ b/gui-libs/gtk/gtk-4.12.5-r1.ebuild
@@ -100,6 +100,13 @@ BDEPEND="
        )
 "
 
+PATCHES=(
+       # Gentoo-specific patch to add a "poison" macro support, allowing other 
ebuilds
+       # with USE="-wayland -X" to trick gtk into claiming that it wasn't 
built with
+       # such support.
+       "${FILESDIR}"/0001-gdk-add-a-poison-macro-to-hide-GDK_WINDOWING_.patch
+)
+
 python_check_deps() {
        python_has_version "dev-python/pygobject:3[${PYTHON_USEDEP}]" || return
 }
diff --git a/gui-libs/gtk/gtk-4.12.5-r1.ebuild 
b/gui-libs/gtk/gtk-4.12.5-r2.ebuild
similarity index 94%
copy from gui-libs/gtk/gtk-4.12.5-r1.ebuild
copy to gui-libs/gtk/gtk-4.12.5-r2.ebuild
index cd5ffd7bad88..2b6fd10d8caa 100644
--- a/gui-libs/gtk/gtk-4.12.5-r1.ebuild
+++ b/gui-libs/gtk/gtk-4.12.5-r2.ebuild
@@ -16,7 +16,7 @@ REQUIRED_USE="
        test? ( introspection )
 "
 
-KEYWORDS="~alpha amd64 arm arm64 ~ia64 ~loong ppc ppc64 ~riscv sparc x86"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~ia64 ~loong ~ppc ~ppc64 ~riscv ~sparc 
~x86"
 
 COMMON_DEPEND="
        >=dev-libs/glib-2.76.0:2
@@ -100,6 +100,13 @@ BDEPEND="
        )
 "
 
+PATCHES=(
+       # Gentoo-specific patch to add a "poison" macro support, allowing other 
ebuilds
+       # with USE="-wayland -X" to trick gtk into claiming that it wasn't 
built with
+       # such support.
+       "${FILESDIR}"/0001-gdk-add-a-poison-macro-to-hide-GDK_WINDOWING_.patch
+)
+
 python_check_deps() {
        python_has_version "dev-python/pygobject:3[${PYTHON_USEDEP}]" || return
 }
diff --git a/gui-libs/gtk/gtk-4.14.4.ebuild b/gui-libs/gtk/gtk-4.14.3-r1.ebuild
similarity index 96%
rename from gui-libs/gtk/gtk-4.14.4.ebuild
rename to gui-libs/gtk/gtk-4.14.3-r1.ebuild
index 7f0c8930ab74..6bd05ace61ea 100644
--- a/gui-libs/gtk/gtk-4.14.4.ebuild
+++ b/gui-libs/gtk/gtk-4.14.3-r1.ebuild
@@ -108,6 +108,13 @@ BDEPEND="
        )
 "
 
+PATCHES=(
+       # Gentoo-specific patch to add a "poison" macro support, allowing other 
ebuilds
+       # with USE="-wayland -X" to trick gtk into claiming that it wasn't 
built with
+       # such support.
+       "${FILESDIR}"/0001-gdk-add-a-poison-macro-to-hide-GDK_WINDOWING_.patch
+)
+
 python_check_deps() {
        python_has_version "dev-python/pygobject:3[${PYTHON_USEDEP}]" || return
 }
diff --git a/gui-libs/gtk/gtk-4.14.3.ebuild b/gui-libs/gtk/gtk-4.14.4-r1.ebuild
similarity index 96%
rename from gui-libs/gtk/gtk-4.14.3.ebuild
rename to gui-libs/gtk/gtk-4.14.4-r1.ebuild
index 7f0c8930ab74..6bd05ace61ea 100644
--- a/gui-libs/gtk/gtk-4.14.3.ebuild
+++ b/gui-libs/gtk/gtk-4.14.4-r1.ebuild
@@ -108,6 +108,13 @@ BDEPEND="
        )
 "
 
+PATCHES=(
+       # Gentoo-specific patch to add a "poison" macro support, allowing other 
ebuilds
+       # with USE="-wayland -X" to trick gtk into claiming that it wasn't 
built with
+       # such support.
+       "${FILESDIR}"/0001-gdk-add-a-poison-macro-to-hide-GDK_WINDOWING_.patch
+)
+
 python_check_deps() {
        python_has_version "dev-python/pygobject:3[${PYTHON_USEDEP}]" || return
 }
-- 
2.44.2


Reply via email to