From 2295182d1609bc0e1c781334ae046e1d2c8990f4 Mon Sep 17 00:00:00 2001 From: Eli Schwartz Date: Thu, 20 Jun 2024 00:06:03 -0400 Subject: x11-libs/gtk+: add a "poison" macro support to disable X/wayland 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 Part-of: https://github.com/gentoo/gentoo/pull/37259 Signed-off-by: Eli Schwartz --- ...add-a-poison-macro-to-hide-GDK_WINDOWING_.patch | 90 +++++++++ x11-libs/gtk+/gtk+-3.24.41-r1.ebuild | 205 ++++++++++++++++++++ x11-libs/gtk+/gtk+-3.24.42-r1.ebuild | 211 +++++++++++++++++++++ x11-libs/gtk+/gtk+-3.24.42.ebuild | 206 -------------------- 4 files changed, 506 insertions(+), 206 deletions(-) create mode 100644 x11-libs/gtk+/files/0001-gdk-add-a-poison-macro-to-hide-GDK_WINDOWING_.patch create mode 100644 x11-libs/gtk+/gtk+-3.24.41-r1.ebuild create mode 100644 x11-libs/gtk+/gtk+-3.24.42-r1.ebuild delete mode 100644 x11-libs/gtk+/gtk+-3.24.42.ebuild (limited to 'x11-libs/gtk+') diff --git a/x11-libs/gtk+/files/0001-gdk-add-a-poison-macro-to-hide-GDK_WINDOWING_.patch b/x11-libs/gtk+/files/0001-gdk-add-a-poison-macro-to-hide-GDK_WINDOWING_.patch new file mode 100644 index 000000000000..26c56b86fe89 --- /dev/null +++ b/x11-libs/gtk+/files/0001-gdk-add-a-poison-macro-to-hide-GDK_WINDOWING_.patch @@ -0,0 +1,90 @@ +From 25bdad805bb9e16032baf4480e9c1e432ddef49b Mon Sep 17 00:00:00 2001 +From: Eli Schwartz +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+/gtk+-3.24.41-r1.ebuild b/x11-libs/gtk+/gtk+-3.24.41-r1.ebuild new file mode 100644 index 000000000000..1bb71ee363f1 --- /dev/null +++ b/x11-libs/gtk+/gtk+-3.24.41-r1.ebuild @@ -0,0 +1,205 @@ +# Copyright 1999-2024 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +inherit gnome2 meson-multilib multilib toolchain-funcs virtualx + +DESCRIPTION="Gimp ToolKit +" +HOMEPAGE="https://www.gtk.org/" + +LICENSE="LGPL-2+" +SLOT="3" +IUSE="aqua broadway cloudproviders colord cups examples gtk-doc +introspection sysprof test vim-syntax wayland +X xinerama" +REQUIRED_USE=" + || ( aqua wayland X ) + test? ( X ) + xinerama? ( X ) +" +RESTRICT="!test? ( test )" + +KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~loong ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~amd64-linux ~x86-linux ~ppc-macos ~x64-solaris" + +COMMON_DEPEND=" + >=app-accessibility/at-spi2-core-2.46.0[introspection?,${MULTILIB_USEDEP}] + >=dev-libs/fribidi-0.19.7[${MULTILIB_USEDEP}] + >=dev-libs/glib-2.57.2:2[${MULTILIB_USEDEP}] + media-libs/fontconfig[${MULTILIB_USEDEP}] + >=media-libs/harfbuzz-2.2.0:= + >=media-libs/libepoxy-1.4[X(+)?,egl(+),${MULTILIB_USEDEP}] + virtual/libintl[${MULTILIB_USEDEP}] + >=x11-libs/cairo-1.14[aqua?,glib,svg(+),X?,${MULTILIB_USEDEP}] + >=x11-libs/gdk-pixbuf-2.30:2[introspection?,${MULTILIB_USEDEP}] + >=x11-libs/pango-1.44.0[introspection?,${MULTILIB_USEDEP}] + x11-misc/shared-mime-info + + cloudproviders? ( net-libs/libcloudproviders[${MULTILIB_USEDEP}] ) + colord? ( >=x11-misc/colord-0.1.9:0=[${MULTILIB_USEDEP}] ) + cups? ( >=net-print/cups-2.0[${MULTILIB_USEDEP}] ) + introspection? ( >=dev-libs/gobject-introspection-1.39:= ) + sysprof? ( >=dev-util/sysprof-capture-3.33.2:3[${MULTILIB_USEDEP}] ) + wayland? ( + >=dev-libs/wayland-1.14.91[${MULTILIB_USEDEP}] + >=dev-libs/wayland-protocols-1.32 + media-libs/mesa[wayland,${MULTILIB_USEDEP}] + >=x11-libs/libxkbcommon-0.2[${MULTILIB_USEDEP}] + ) + X? ( + media-libs/libglvnd[X(+),${MULTILIB_USEDEP}] + x11-libs/libX11[${MULTILIB_USEDEP}] + x11-libs/libXcomposite[${MULTILIB_USEDEP}] + x11-libs/libXcursor[${MULTILIB_USEDEP}] + x11-libs/libXdamage[${MULTILIB_USEDEP}] + x11-libs/libXext[${MULTILIB_USEDEP}] + x11-libs/libXfixes[${MULTILIB_USEDEP}] + >=x11-libs/libXi-1.8[${MULTILIB_USEDEP}] + >=x11-libs/libXrandr-1.5[${MULTILIB_USEDEP}] + xinerama? ( x11-libs/libXinerama[${MULTILIB_USEDEP}] ) + ) +" +DEPEND="${COMMON_DEPEND} + X? ( x11-base/xorg-proto ) +" +RDEPEND="${COMMON_DEPEND} + >=dev-util/gtk-update-icon-cache-3 +" +# librsvg for svg icons (PDEPEND to avoid circular dep), bug #547710 +PDEPEND=" + gnome-base/librsvg[${MULTILIB_USEDEP}] + >=x11-themes/adwaita-icon-theme-3.14 + vim-syntax? ( app-vim/gtk-syntax ) +" +BDEPEND=" + app-text/docbook-xml-dtd:4.1.2 + app-text/docbook-xsl-stylesheets + dev-libs/gobject-introspection-common + dev-libs/libxslt + >=dev-util/gdbus-codegen-2.48 + dev-util/glib-utils + >=dev-build/gtk-doc-am-1.20 + wayland? ( dev-util/wayland-scanner ) + >=sys-devel/gettext-0.19.7 + virtual/pkgconfig + x11-libs/gdk-pixbuf:2 + gtk-doc? ( + app-text/docbook-xml-dtd:4.3 + >=dev-util/gtk-doc-1.20 + ) + test? ( sys-apps/dbus ) +" + +MULTILIB_CHOST_TOOLS=( + /usr/bin/gtk-query-immodules-3.0$(get_exeext) +) + +PATCHES=( + # gtk-update-icon-cache is installed by dev-util/gtk-update-icon-cache + "${FILESDIR}"/${PN}-3.24.36-update-icon-cache.patch + # 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. + # https://bugs.gentoo.org/624960 + "${FILESDIR}"/0001-gdk-add-a-poison-macro-to-hide-GDK_WINDOWING_.patch +) + +src_prepare() { + default + + # The border-image-excess-size.ui test is known to fail on big-endian platforms + # See https://gitlab.gnome.org/GNOME/gtk/-/issues/5904 + if [[ $(tc-endian) == big ]]; then + sed -i \ + -e "/border-image-excess-size.ui/d" \ + -e "/^xfails =/a 'border-image-excess-size.ui'," \ + testsuite/reftests/meson.build || die + fi +} + +multilib_src_configure() { + local emesonargs=( + $(meson_use aqua quartz_backend) + $(meson_use broadway broadway_backend) + $(meson_use cloudproviders) + $(meson_use examples demos) + $(meson_use examples) + $(meson_native_use_bool gtk-doc gtk_doc) + $(meson_native_use_bool introspection) + $(meson_use sysprof profiler) + $(meson_use wayland wayland_backend) + $(meson_use X x11_backend) + -Dcolord=$(usex colord yes no) + -Dprint_backends=$(usex cups cups,file,lpr file,lpr) + -Dxinerama=$(usex xinerama yes no) + # Include backend immodules into gtk itself, to avoid problems like + # https://gitlab.gnome.org/GNOME/gnome-shell/issues/109 from a + # user overridden GTK_IM_MODULE envvar + -Dbuiltin_immodules=backend + -Dman=true + $(meson_use test tests) + -Dtracker3=false + ) + meson_src_configure +} + +multilib_src_compile() { + meson_src_compile +} + +multilib_src_test() { + virtx dbus-run-session meson test -C "${BUILD_DIR}" --timeout-multiplier 4 || die +} + +multilib_src_install() { + meson_src_install +} + +multilib_src_install_all() { + insinto /etc/gtk-3.0 + doins "${FILESDIR}"/settings.ini + # Skip README.win32.md that would get installed by default + DOCS=( NEWS README.md ) + einstalldocs +} + +pkg_preinst() { + gnome2_pkg_preinst + + multilib_pkg_preinst() { + # Make immodules.cache belongs to gtk+ alone + local cache="/usr/$(get_libdir)/gtk-3.0/3.0.0/immodules.cache" + + if [[ -e ${EROOT}${cache} ]]; then + cp "${EROOT}${cache}" "${ED}${cache}" || die + else + touch "${ED}${cache}" || die + fi + } + multilib_parallel_foreach_abi multilib_pkg_preinst +} + +pkg_postinst() { + gnome2_pkg_postinst + + multilib_pkg_postinst() { + gnome2_query_immodules_gtk3 \ + || die "Update immodules cache failed (for ${ABI})" + } + multilib_parallel_foreach_abi multilib_pkg_postinst + + if ! has_version "app-text/evince"; then + elog "Please install app-text/evince for print preview functionality." + elog "Alternatively, check \"gtk-print-preview-command\" documentation and" + elog "add it to your settings.ini file." + fi +} + +pkg_postrm() { + gnome2_pkg_postrm + + if [[ -z ${REPLACED_BY_VERSION} ]]; then + multilib_pkg_postrm() { + rm -f "${EROOT}/usr/$(get_libdir)/gtk-3.0/3.0.0/immodules.cache" + } + multilib_foreach_abi multilib_pkg_postrm + fi +} diff --git a/x11-libs/gtk+/gtk+-3.24.42-r1.ebuild b/x11-libs/gtk+/gtk+-3.24.42-r1.ebuild new file mode 100644 index 000000000000..b87f4ebae8bb --- /dev/null +++ b/x11-libs/gtk+/gtk+-3.24.42-r1.ebuild @@ -0,0 +1,211 @@ +# Copyright 1999-2024 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +inherit gnome2 meson-multilib multilib toolchain-funcs virtualx + +DESCRIPTION="Gimp ToolKit +" +HOMEPAGE="https://www.gtk.org/" + +LICENSE="LGPL-2+" +SLOT="3" +IUSE="aqua broadway cloudproviders colord cups examples gtk-doc +introspection sysprof test vim-syntax wayland +X xinerama" +REQUIRED_USE=" + || ( aqua wayland X ) + test? ( X ) + xinerama? ( X ) +" +RESTRICT="!test? ( test )" + +KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~loong ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~amd64-linux ~x86-linux ~ppc-macos ~x64-solaris" + +COMMON_DEPEND=" + >=app-accessibility/at-spi2-core-2.46.0[introspection?,${MULTILIB_USEDEP}] + >=dev-libs/fribidi-0.19.7[${MULTILIB_USEDEP}] + >=dev-libs/glib-2.57.2:2[${MULTILIB_USEDEP}] + media-libs/fontconfig[${MULTILIB_USEDEP}] + >=media-libs/harfbuzz-2.2.0:= + >=media-libs/libepoxy-1.4[X(+)?,egl(+),${MULTILIB_USEDEP}] + virtual/libintl[${MULTILIB_USEDEP}] + >=x11-libs/cairo-1.14[aqua?,glib,svg(+),X?,${MULTILIB_USEDEP}] + >=x11-libs/gdk-pixbuf-2.30:2[introspection?,${MULTILIB_USEDEP}] + >=x11-libs/pango-1.44.0[introspection?,${MULTILIB_USEDEP}] + x11-misc/shared-mime-info + + cloudproviders? ( net-libs/libcloudproviders[${MULTILIB_USEDEP}] ) + colord? ( >=x11-misc/colord-0.1.9:0=[${MULTILIB_USEDEP}] ) + cups? ( >=net-print/cups-2.0[${MULTILIB_USEDEP}] ) + introspection? ( >=dev-libs/gobject-introspection-1.39:= ) + wayland? ( + >=dev-libs/wayland-1.14.91[${MULTILIB_USEDEP}] + >=dev-libs/wayland-protocols-1.32 + media-libs/mesa[wayland,${MULTILIB_USEDEP}] + >=x11-libs/libxkbcommon-0.2[${MULTILIB_USEDEP}] + ) + X? ( + media-libs/libglvnd[X(+),${MULTILIB_USEDEP}] + x11-libs/libX11[${MULTILIB_USEDEP}] + x11-libs/libXcomposite[${MULTILIB_USEDEP}] + x11-libs/libXcursor[${MULTILIB_USEDEP}] + x11-libs/libXdamage[${MULTILIB_USEDEP}] + x11-libs/libXext[${MULTILIB_USEDEP}] + x11-libs/libXfixes[${MULTILIB_USEDEP}] + >=x11-libs/libXi-1.8[${MULTILIB_USEDEP}] + >=x11-libs/libXrandr-1.5[${MULTILIB_USEDEP}] + xinerama? ( x11-libs/libXinerama[${MULTILIB_USEDEP}] ) + ) +" +DEPEND="${COMMON_DEPEND} + sysprof? ( >=dev-util/sysprof-capture-3.33.2:4[${MULTILIB_USEDEP}] ) + X? ( x11-base/xorg-proto ) +" +RDEPEND="${COMMON_DEPEND} + >=dev-util/gtk-update-icon-cache-3 +" +# librsvg for svg icons (PDEPEND to avoid circular dep), bug #547710 +PDEPEND=" + gnome-base/librsvg[${MULTILIB_USEDEP}] + >=x11-themes/adwaita-icon-theme-3.14 + vim-syntax? ( app-vim/gtk-syntax ) +" +BDEPEND=" + app-text/docbook-xml-dtd:4.1.2 + app-text/docbook-xsl-stylesheets + dev-libs/gobject-introspection-common + dev-libs/libxslt + >=dev-util/gdbus-codegen-2.48 + dev-util/glib-utils + >=dev-build/gtk-doc-am-1.20 + wayland? ( dev-util/wayland-scanner ) + >=sys-devel/gettext-0.19.7 + virtual/pkgconfig + x11-libs/gdk-pixbuf:2 + gtk-doc? ( + app-text/docbook-xml-dtd:4.3 + >=dev-util/gtk-doc-1.20 + ) + test? ( sys-apps/dbus ) +" + +MULTILIB_CHOST_TOOLS=( + /usr/bin/gtk-query-immodules-3.0$(get_exeext) +) + +PATCHES=( + # gtk-update-icon-cache is installed by dev-util/gtk-update-icon-cache + "${FILESDIR}"/${PN}-3.24.36-update-icon-cache.patch + # 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. + # https://bugs.gentoo.org/624960 + "${FILESDIR}"/0001-gdk-add-a-poison-macro-to-hide-GDK_WINDOWING_.patch +) + +src_prepare() { + default + + # Force sysprof-capture-4 instead of checking sysprof-capture-3 first; either is + # fine as far as deps are concerned, as it static links, but sysprof-capture-3 + # links to glib which would be done statically if there's glib[static-libs], + # making the whole of gtk+ static link to glib instead of dynamic linking to glib. + sed -i -e "s/'sysprof-capture-3'/'sysprof-capture-4'/g" meson.build || die + + # The border-image-excess-size.ui test is known to fail on big-endian platforms + # See https://gitlab.gnome.org/GNOME/gtk/-/issues/5904 + if [[ $(tc-endian) == big ]]; then + sed -i \ + -e "/border-image-excess-size.ui/d" \ + -e "/^xfails =/a 'border-image-excess-size.ui'," \ + testsuite/reftests/meson.build || die + fi +} + +multilib_src_configure() { + local emesonargs=( + $(meson_use aqua quartz_backend) + $(meson_use broadway broadway_backend) + $(meson_use cloudproviders) + $(meson_use examples demos) + $(meson_use examples) + $(meson_native_use_bool gtk-doc gtk_doc) + $(meson_native_use_bool introspection) + $(meson_use sysprof profiler) + $(meson_use wayland wayland_backend) + $(meson_use X x11_backend) + -Dcolord=$(usex colord yes no) + -Dprint_backends=$(usex cups cups,file,lpr file,lpr) + -Dxinerama=$(usex xinerama yes no) + # Include backend immodules into gtk itself, to avoid problems like + # https://gitlab.gnome.org/GNOME/gnome-shell/issues/109 from a + # user overridden GTK_IM_MODULE envvar + -Dbuiltin_immodules=backend + -Dman=true + $(meson_use test tests) + -Dtracker3=false + ) + meson_src_configure +} + +multilib_src_compile() { + meson_src_compile +} + +multilib_src_test() { + virtx dbus-run-session meson test -C "${BUILD_DIR}" --timeout-multiplier 4 || die +} + +multilib_src_install() { + meson_src_install +} + +multilib_src_install_all() { + insinto /etc/gtk-3.0 + doins "${FILESDIR}"/settings.ini + # Skip README.win32.md that would get installed by default + DOCS=( NEWS README.md ) + einstalldocs +} + +pkg_preinst() { + gnome2_pkg_preinst + + multilib_pkg_preinst() { + # Make immodules.cache belongs to gtk+ alone + local cache="/usr/$(get_libdir)/gtk-3.0/3.0.0/immodules.cache" + + if [[ -e ${EROOT}${cache} ]]; then + cp "${EROOT}${cache}" "${ED}${cache}" || die + else + touch "${ED}${cache}" || die + fi + } + multilib_parallel_foreach_abi multilib_pkg_preinst +} + +pkg_postinst() { + gnome2_pkg_postinst + + multilib_pkg_postinst() { + gnome2_query_immodules_gtk3 \ + || die "Update immodules cache failed (for ${ABI})" + } + multilib_parallel_foreach_abi multilib_pkg_postinst + + if ! has_version "app-text/evince"; then + elog "Please install app-text/evince for print preview functionality." + elog "Alternatively, check \"gtk-print-preview-command\" documentation and" + elog "add it to your settings.ini file." + fi +} + +pkg_postrm() { + gnome2_pkg_postrm + + if [[ -z ${REPLACED_BY_VERSION} ]]; then + multilib_pkg_postrm() { + rm -f "${EROOT}/usr/$(get_libdir)/gtk-3.0/3.0.0/immodules.cache" + } + multilib_foreach_abi multilib_pkg_postrm + fi +} diff --git a/x11-libs/gtk+/gtk+-3.24.42.ebuild b/x11-libs/gtk+/gtk+-3.24.42.ebuild deleted file mode 100644 index 655c05a8a518..000000000000 --- a/x11-libs/gtk+/gtk+-3.24.42.ebuild +++ /dev/null @@ -1,206 +0,0 @@ -# Copyright 1999-2024 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI=8 - -inherit gnome2 meson-multilib multilib toolchain-funcs virtualx - -DESCRIPTION="Gimp ToolKit +" -HOMEPAGE="https://www.gtk.org/" - -LICENSE="LGPL-2+" -SLOT="3" -IUSE="aqua broadway cloudproviders colord cups examples gtk-doc +introspection sysprof test vim-syntax wayland +X xinerama" -REQUIRED_USE=" - || ( aqua wayland X ) - test? ( X ) - xinerama? ( X ) -" -RESTRICT="!test? ( test )" - -KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~loong ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~amd64-linux ~x86-linux ~ppc-macos ~x64-solaris" - -COMMON_DEPEND=" - >=app-accessibility/at-spi2-core-2.46.0[introspection?,${MULTILIB_USEDEP}] - >=dev-libs/fribidi-0.19.7[${MULTILIB_USEDEP}] - >=dev-libs/glib-2.57.2:2[${MULTILIB_USEDEP}] - media-libs/fontconfig[${MULTILIB_USEDEP}] - >=media-libs/harfbuzz-2.2.0:= - >=media-libs/libepoxy-1.4[X(+)?,egl(+),${MULTILIB_USEDEP}] - virtual/libintl[${MULTILIB_USEDEP}] - >=x11-libs/cairo-1.14[aqua?,glib,svg(+),X?,${MULTILIB_USEDEP}] - >=x11-libs/gdk-pixbuf-2.30:2[introspection?,${MULTILIB_USEDEP}] - >=x11-libs/pango-1.44.0[introspection?,${MULTILIB_USEDEP}] - x11-misc/shared-mime-info - - cloudproviders? ( net-libs/libcloudproviders[${MULTILIB_USEDEP}] ) - colord? ( >=x11-misc/colord-0.1.9:0=[${MULTILIB_USEDEP}] ) - cups? ( >=net-print/cups-2.0[${MULTILIB_USEDEP}] ) - introspection? ( >=dev-libs/gobject-introspection-1.39:= ) - wayland? ( - >=dev-libs/wayland-1.14.91[${MULTILIB_USEDEP}] - >=dev-libs/wayland-protocols-1.32 - media-libs/mesa[wayland,${MULTILIB_USEDEP}] - >=x11-libs/libxkbcommon-0.2[${MULTILIB_USEDEP}] - ) - X? ( - media-libs/libglvnd[X(+),${MULTILIB_USEDEP}] - x11-libs/libX11[${MULTILIB_USEDEP}] - x11-libs/libXcomposite[${MULTILIB_USEDEP}] - x11-libs/libXcursor[${MULTILIB_USEDEP}] - x11-libs/libXdamage[${MULTILIB_USEDEP}] - x11-libs/libXext[${MULTILIB_USEDEP}] - x11-libs/libXfixes[${MULTILIB_USEDEP}] - >=x11-libs/libXi-1.8[${MULTILIB_USEDEP}] - >=x11-libs/libXrandr-1.5[${MULTILIB_USEDEP}] - xinerama? ( x11-libs/libXinerama[${MULTILIB_USEDEP}] ) - ) -" -DEPEND="${COMMON_DEPEND} - sysprof? ( >=dev-util/sysprof-capture-3.33.2:4[${MULTILIB_USEDEP}] ) - X? ( x11-base/xorg-proto ) -" -RDEPEND="${COMMON_DEPEND} - >=dev-util/gtk-update-icon-cache-3 -" -# librsvg for svg icons (PDEPEND to avoid circular dep), bug #547710 -PDEPEND=" - gnome-base/librsvg[${MULTILIB_USEDEP}] - >=x11-themes/adwaita-icon-theme-3.14 - vim-syntax? ( app-vim/gtk-syntax ) -" -BDEPEND=" - app-text/docbook-xml-dtd:4.1.2 - app-text/docbook-xsl-stylesheets - dev-libs/gobject-introspection-common - dev-libs/libxslt - >=dev-util/gdbus-codegen-2.48 - dev-util/glib-utils - >=dev-build/gtk-doc-am-1.20 - wayland? ( dev-util/wayland-scanner ) - >=sys-devel/gettext-0.19.7 - virtual/pkgconfig - x11-libs/gdk-pixbuf:2 - gtk-doc? ( - app-text/docbook-xml-dtd:4.3 - >=dev-util/gtk-doc-1.20 - ) - test? ( sys-apps/dbus ) -" - -MULTILIB_CHOST_TOOLS=( - /usr/bin/gtk-query-immodules-3.0$(get_exeext) -) - -PATCHES=( - # gtk-update-icon-cache is installed by dev-util/gtk-update-icon-cache - "${FILESDIR}"/${PN}-3.24.36-update-icon-cache.patch -) - -src_prepare() { - default - - # Force sysprof-capture-4 instead of checking sysprof-capture-3 first; either is - # fine as far as deps are concerned, as it static links, but sysprof-capture-3 - # links to glib which would be done statically if there's glib[static-libs], - # making the whole of gtk+ static link to glib instead of dynamic linking to glib. - sed -i -e "s/'sysprof-capture-3'/'sysprof-capture-4'/g" meson.build || die - - # The border-image-excess-size.ui test is known to fail on big-endian platforms - # See https://gitlab.gnome.org/GNOME/gtk/-/issues/5904 - if [[ $(tc-endian) == big ]]; then - sed -i \ - -e "/border-image-excess-size.ui/d" \ - -e "/^xfails =/a 'border-image-excess-size.ui'," \ - testsuite/reftests/meson.build || die - fi -} - -multilib_src_configure() { - local emesonargs=( - $(meson_use aqua quartz_backend) - $(meson_use broadway broadway_backend) - $(meson_use cloudproviders) - $(meson_use examples demos) - $(meson_use examples) - $(meson_native_use_bool gtk-doc gtk_doc) - $(meson_native_use_bool introspection) - $(meson_use sysprof profiler) - $(meson_use wayland wayland_backend) - $(meson_use X x11_backend) - -Dcolord=$(usex colord yes no) - -Dprint_backends=$(usex cups cups,file,lpr file,lpr) - -Dxinerama=$(usex xinerama yes no) - # Include backend immodules into gtk itself, to avoid problems like - # https://gitlab.gnome.org/GNOME/gnome-shell/issues/109 from a - # user overridden GTK_IM_MODULE envvar - -Dbuiltin_immodules=backend - -Dman=true - $(meson_use test tests) - -Dtracker3=false - ) - meson_src_configure -} - -multilib_src_compile() { - meson_src_compile -} - -multilib_src_test() { - virtx dbus-run-session meson test -C "${BUILD_DIR}" --timeout-multiplier 4 || die -} - -multilib_src_install() { - meson_src_install -} - -multilib_src_install_all() { - insinto /etc/gtk-3.0 - doins "${FILESDIR}"/settings.ini - # Skip README.win32.md that would get installed by default - DOCS=( NEWS README.md ) - einstalldocs -} - -pkg_preinst() { - gnome2_pkg_preinst - - multilib_pkg_preinst() { - # Make immodules.cache belongs to gtk+ alone - local cache="/usr/$(get_libdir)/gtk-3.0/3.0.0/immodules.cache" - - if [[ -e ${EROOT}${cache} ]]; then - cp "${EROOT}${cache}" "${ED}${cache}" || die - else - touch "${ED}${cache}" || die - fi - } - multilib_parallel_foreach_abi multilib_pkg_preinst -} - -pkg_postinst() { - gnome2_pkg_postinst - - multilib_pkg_postinst() { - gnome2_query_immodules_gtk3 \ - || die "Update immodules cache failed (for ${ABI})" - } - multilib_parallel_foreach_abi multilib_pkg_postinst - - if ! has_version "app-text/evince"; then - elog "Please install app-text/evince for print preview functionality." - elog "Alternatively, check \"gtk-print-preview-command\" documentation and" - elog "add it to your settings.ini file." - fi -} - -pkg_postrm() { - gnome2_pkg_postrm - - if [[ -z ${REPLACED_BY_VERSION} ]]; then - multilib_pkg_postrm() { - rm -f "${EROOT}/usr/$(get_libdir)/gtk-3.0/3.0.0/immodules.cache" - } - multilib_foreach_abi multilib_pkg_postrm - fi -} -- cgit v1.2.3-65-gdbad