public inbox for gentoo-dev@lists.gentoo.org
 help / color / mirror / Atom feed
From: Sam James <sam@gentoo.org>
To: Eli Schwartz <eschwartz93@gmail.com>
Cc: gentoo-dev@lists.gentoo.org,  gnome@gentoo.org,  xfce@gentoo.org,
	binhost@gentoo.org
Subject: Re: [gentoo-dev] [PATCH 1/5] gui-libs/gtk: add a "poison" macro support to disable X/wayland
Date: Wed, 26 Jun 2024 10:03:17 +0100	[thread overview]
Message-ID: <877cecnkiy.fsf@gentoo.org> (raw)
In-Reply-To: <20240623173646.3368935-2-eschwartz93@gmail.com> (Eli Schwartz's message of "Sun, 23 Jun 2024 13:35:47 -0400")

[-- Attachment #1: Type: text/plain, Size: 7528 bytes --]

Eli Schwartz <eschwartz93@gmail.com> writes:

> 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.
>
Doesn't gtk3 need this too? Also, could we have an upstream report
making them aware of this for gtk4?

> 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 <eschwartz93@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 <eschwartz93@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 <eschwartz93@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
>  }

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 377 bytes --]

  parent reply	other threads:[~2024-06-26  9:04 UTC|newest]

Thread overview: 14+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-06-23 17:35 [gentoo-dev] [PATCH 0/5] Fixing automagic dependencies on gtk[wayland,X], Eli Schwartz
2024-06-23 17:35 ` [gentoo-dev] [PATCH 1/5] gui-libs/gtk: add a "poison" macro support to disable X/wayland Eli Schwartz
2024-06-24  9:08   ` Florian Schmaus
2024-06-26  9:03   ` Sam James [this message]
2024-06-27  4:52     ` Eli Schwartz
2024-06-27  4:58       ` Sam James
2024-07-03 11:16         ` Mart Raudsepp
2024-07-03 17:26           ` Eli Schwartz
2024-06-23 17:35 ` [gentoo-dev] [PATCH 2/5] net-libs/gtk-vnc: prevent automagically building against gtk[X,wayland] Eli Schwartz
2024-06-23 17:35 ` [gentoo-dev] [PATCH 3/5] x11-libs/wxGTK: " Eli Schwartz
2024-06-23 17:35 ` [gentoo-dev] [PATCH 4/5] xfce-base/libxfce4ui: prevent automagically building against gtk[wayland] Eli Schwartz
2024-06-23 17:35 ` [gentoo-dev] [PATCH 5/5] dev-libs/libportal: prevent automagically building against gtk[X,wayland] Eli Schwartz
2024-06-23 18:33 ` [gentoo-dev] [PATCH 0/5] Fixing automagic dependencies on gtk[wayland,X], James Le Cuirot
2024-06-26  9:02 ` Sam James

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=877cecnkiy.fsf@gentoo.org \
    --to=sam@gentoo.org \
    --cc=binhost@gentoo.org \
    --cc=eschwartz93@gmail.com \
    --cc=gentoo-dev@lists.gentoo.org \
    --cc=gnome@gentoo.org \
    --cc=xfce@gentoo.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox