From 2bf051a6c52e0c12c714e93252e14145fdc749f8 Mon Sep 17 00:00:00 2001 From: Yingjie Wang Date: Sun, 11 Jan 2026 20:00:35 -0500 Subject: [PATCH] new blfs: x11-libs/gtk+-3.24.51 --- x11-libs/gtk+-3.24.51.PKGBUILD | 81 +++++++++++++++++ ...-poison-macro-to-hide-GDK_WINDOWING_.patch | 90 +++++++++++++++++++ .../gtk+-3.24.36-update-icon-cache.patch | 29 ++++++ .../gtk+-3.24.51/gtk-query-immodules-3.0.HOOK | 5 ++ 4 files changed, 205 insertions(+) create mode 100644 x11-libs/gtk+-3.24.51.PKGBUILD create mode 100644 x11-libs/gtk+-3.24.51/0001-gdk-add-a-poison-macro-to-hide-GDK_WINDOWING_.patch create mode 100644 x11-libs/gtk+-3.24.51/gtk+-3.24.36-update-icon-cache.patch create mode 100644 x11-libs/gtk+-3.24.51/gtk-query-immodules-3.0.HOOK diff --git a/x11-libs/gtk+-3.24.51.PKGBUILD b/x11-libs/gtk+-3.24.51.PKGBUILD new file mode 100644 index 0000000..e36ca2b --- /dev/null +++ b/x11-libs/gtk+-3.24.51.PKGBUILD @@ -0,0 +1,81 @@ +pkgname=gtk+ +_name=gtk +pkgver=3.24.51 +pkgdesc="GObject-based multi-platform GUI toolkit" +url="https://www.gtk.org/" +arch=(x86_64) +license=(LGPL-2.1-or-later) +_patches=("0001-gdk-add-a-poison-macro-to-hide-GDK_WINDOWING_.patch" + "gtk+-3.24.36-update-icon-cache.patch" +) +_patch_sums=("218c22980df3dc76af6bae2930c2d9b9da64f0e902dc05ff392527250e8377ec61170c2b31119e2a9672bcb1f2d6c88355b09f56f5b5b5c4bfd2f2e9bcc2e773" + "b8049f77063ac994a0f2222d9e776dd1038636a0920624b027e891f72dd393b825304190118dafc97c733f56554a41e9ceed4f1069980b2913b7b3f4ace23d83" +) +_hook="gtk-query-immodules-3.0.HOOK" +_hook_sum="2720080a422ffaaffb583ea36f87551cc9f71038fad6448bc83f56712e867579dd236f5926a44e9fdba01686a262cd995d7cb0f7ffe1a7cf4373ebe1dafb2620" +sources=("${_name}-${pkgver}.tar.xz" + ${_patches[@]} + "${_hook}" +) +urls=("https://download.gnome.org/sources/${_name}/${pkgver%.*}/${sources[0]}" + ${_patches[@]} + ${_hook} +) +sha512sums=("f96ee1c586284af315709ec38e841bd1b2558d09e2162834a132ffc4bbcddca272a92a828550a3accaa3e4da1964ad32b3b48291e929a108a913bd18c61cd73b" + ${_patch_sums[@]} + "${_hook_sum}" +) + +src_prepare() { + tar -xf ${distdir}/${sources[0]} --strip-components=1 + for _patch in ${_patches[@]}; do + patch -p1 -i ${filedir}/${_patch} + done +} + +src_build() { + local meson_args=( + --prefix=/usr + --buildtype=release + --wrap-mode=nodownload + -D python.bytecompile=1 + -D quartz_backend=false + -D broadway_backend=false + -D cloudproviders=false + -D demos=false + -D examples=false + -D gtk_doc=false + -D introspection=true + -D profiler=false + -D wayland_backend=true + -D x11_backend=false + -D colord=no + -D print_backends=file,lpr + -D xinerama=no + -D builtin_immodules=backend + -D man=true + -D tests=false + -D tracker3=false + ) + meson setup build "${meson_args[@]}" + meson compile -C build +} + +src_install() { + meson install -C build --destdir "$pkgdir" + + install -Dm644 /dev/stdin "$pkgdir/etc/gtk-3.0/settings.ini" < +Date: Wed, 19 Jun 2024 21:28:31 -0400 +Subject: [PATCH] gdk: add a "poison" macro to hide GDK_WINDOWING_* + +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. + +By default, we assume this macro is never defined. It should only ever +be defined inside an ebuild, as such: + +``` +use wayland || append-cflags -DGENTOO_GTK_HIDE_WAYLAND +use X || append-cflags -DGENTOO_GTK_HIDE_X11 +``` + +When seen, this will prevent code using "#ifdef GDK_WINDOWING_*" from +seeing the define, so the automagic dependency won't be picked up. It +will also cause any attempt to #include the backend-specific headers to +bug out. + +Bug: https://bugs.gentoo.org/624960 +Signed-off-by: Eli Schwartz +--- + gdk/gdkconfig.h.meson | 7 +++++++ + gdk/wayland/gdkwayland.h | 4 ++++ + gdk/x11/gdkx.h | 4 ++++ + 3 files changed, 15 insertions(+) + +diff --git a/gdk/gdkconfig.h.meson b/gdk/gdkconfig.h.meson +index 7db19e0470..6bee207e94 100644 +--- a/gdk/gdkconfig.h.meson ++++ b/gdk/gdkconfig.h.meson +@@ -10,9 +10,16 @@ + G_BEGIN_DECLS + + ++#ifndef GENTOO_GTK_HIDE_X11 + #mesondefine GDK_WINDOWING_X11 ++#endif ++ + #mesondefine GDK_WINDOWING_BROADWAY ++ ++#ifndef GENTOO_GTK_HIDE_WAYLAND + #mesondefine GDK_WINDOWING_WAYLAND ++#endif ++ + #mesondefine GDK_WINDOWING_WIN32 + #mesondefine GDK_WINDOWING_QUARTZ + +diff --git a/gdk/wayland/gdkwayland.h b/gdk/wayland/gdkwayland.h +index 2b79295add..5f0e9cfa81 100644 +--- a/gdk/wayland/gdkwayland.h ++++ b/gdk/wayland/gdkwayland.h +@@ -25,6 +25,10 @@ + #ifndef __GDK_WAYLAND_H__ + #define __GDK_WAYLAND_H__ + ++#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." ++#endif ++ + #include + + #define __GDKWAYLAND_H_INSIDE__ +diff --git a/gdk/x11/gdkx.h b/gdk/x11/gdkx.h +index 1f64bccb6d..256c83015e 100644 +--- a/gdk/x11/gdkx.h ++++ b/gdk/x11/gdkx.h +@@ -25,6 +25,10 @@ + #ifndef __GDK_X_H__ + #define __GDK_X_H__ + ++#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." ++#endif ++ + #include + + #include +-- +2.44.2 + diff --git a/x11-libs/gtk+-3.24.51/gtk+-3.24.36-update-icon-cache.patch b/x11-libs/gtk+-3.24.51/gtk+-3.24.36-update-icon-cache.patch new file mode 100644 index 0000000..19af75c --- /dev/null +++ b/x11-libs/gtk+-3.24.51/gtk+-3.24.36-update-icon-cache.patch @@ -0,0 +1,29 @@ +--- a/docs/reference/gtk/meson.build ++++ b/docs/reference/gtk/meson.build +@@ -500,7 +500,6 @@ + + man_files = [ + [ 'gtk-query-immodules-3.0', '1', ], +- [ 'gtk-update-icon-cache', '1', ], + [ 'gtk-encode-symbolic-svg', '1', ], + [ 'gtk-launch', '1', ], + [ 'gtk-builder-tool', '1', ], +--- a/gtk/meson.build ++++ b/gtk/meson.build +@@ -1109,16 +1109,6 @@ + extra_update_icon_cache_objs = import('windows').compile_resources(uac_rc) + endif + +-gtk_update_icon_cache = executable( +- 'gtk-update-icon-cache', +- 'updateiconcache.c', +- extra_update_icon_cache_objs, +- c_args: gtk_cargs, +- dependencies: libgtk_dep, +- install: true +-) +-gtk_tools += gtk_update_icon_cache +- + gtk_query_immodules = executable( + 'gtk-query-immodules-3.0', + 'queryimmodules.c', diff --git a/x11-libs/gtk+-3.24.51/gtk-query-immodules-3.0.HOOK b/x11-libs/gtk+-3.24.51/gtk-query-immodules-3.0.HOOK new file mode 100644 index 0000000..cca1d12 --- /dev/null +++ b/x11-libs/gtk+-3.24.51/gtk-query-immodules-3.0.HOOK @@ -0,0 +1,5 @@ +target=(/usr/lib/gtk-3.0/3.0.0/immodules/*.so) +triggers=("install" "remove") +operation() { + /usr/bin/gtk-query-immodules-3.0 --update-cache +}