Added
This commit is contained in:
1
gui-libs/gtk/Manifest
Normal file
1
gui-libs/gtk/Manifest
Normal file
@@ -0,0 +1 @@
|
||||
DIST gtk-4.19.4.tar.xz 15756072 BLAKE2B f3dae4e39a5f29d862411428911af339676d778848fe1db64e8b412137b2494065ab6a868d6ecf1171c1bf3cf0a4a022c9f2f7b440b13e96a5d60fbc4c91c317 SHA512 e2655fdeac584e5e55b5eb3f4c47ebc55eaaaa8ec233a1a98b3b46c0bdf52aafd0a2009ae0ef198ec4fbe1e90cbb78fbf488f45aaeaf30b6adb5024b7c765896
|
||||
@@ -0,0 +1,91 @@
|
||||
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_*
|
||||
|
||||
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 <eschwartz93@gmail.com>
|
||||
---
|
||||
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 d5b48f3184..22baab52ae 100644
|
||||
--- a/gdk/gdkconfig.h.meson
|
||||
+++ b/gdk/gdkconfig.h.meson
|
||||
@@ -10,10 +10,17 @@
|
||||
G_BEGIN_DECLS
|
||||
|
||||
|
||||
+#ifndef GENTOO_GTK_HIDE_X11
|
||||
#mesondefine GDK_WINDOWING_X11
|
||||
+#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_RENDERING_CAIRO
|
||||
diff --git a/gdk/wayland/gdkwayland.h b/gdk/wayland/gdkwayland.h
|
||||
index 846445910e..5d84619295 100644
|
||||
--- a/gdk/wayland/gdkwayland.h
|
||||
+++ b/gdk/wayland/gdkwayland.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."
|
||||
+#endif
|
||||
+
|
||||
#include <gdk/gdk.h>
|
||||
|
||||
#define __GDKWAYLAND_H_INSIDE__
|
||||
diff --git a/gdk/x11/gdkx.h b/gdk/x11/gdkx.h
|
||||
index 6bef6b6de8..d4f8b94550 100644
|
||||
--- a/gdk/x11/gdkx.h
|
||||
+++ b/gdk/x11/gdkx.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."
|
||||
+#endif
|
||||
+
|
||||
#include <gdk/gdk.h>
|
||||
|
||||
#include <X11/Xlib.h>
|
||||
--
|
||||
2.44.2
|
||||
|
||||
@@ -0,0 +1,93 @@
|
||||
From e00bc31abbc489f1787cd5b2d5c441dbb82ed03a 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_*
|
||||
|
||||
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 <eschwartz93@gmail.com>
|
||||
Signed-off-by: Lukas Schmelting <lschmelting@posteo.com>
|
||||
---
|
||||
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 17276e0..03cf61c 100644
|
||||
--- a/gdk/gdkconfig.h.meson
|
||||
+++ b/gdk/gdkconfig.h.meson
|
||||
@@ -10,11 +10,18 @@
|
||||
G_BEGIN_DECLS
|
||||
|
||||
|
||||
+#ifndef GENTOO_GTK_HIDE_X11
|
||||
#mesondefine GDK_WINDOWING_X11
|
||||
+#endif
|
||||
+
|
||||
#mesondefine GDK_WINDOWING_ANDROID
|
||||
#mesondefine GDK_WINDOWING_BROADWAY
|
||||
#mesondefine GDK_WINDOWING_MACOS
|
||||
+
|
||||
+#ifndef GENTOO_GTK_HIDE_WAYLAND
|
||||
#mesondefine GDK_WINDOWING_WAYLAND
|
||||
+#endif
|
||||
+
|
||||
#mesondefine GDK_WINDOWING_WIN32
|
||||
|
||||
#mesondefine GDK_RENDERING_CAIRO
|
||||
diff --git a/gdk/wayland/gdkwayland.h b/gdk/wayland/gdkwayland.h
|
||||
index 8464459..5d84619 100644
|
||||
--- a/gdk/wayland/gdkwayland.h
|
||||
+++ b/gdk/wayland/gdkwayland.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."
|
||||
+#endif
|
||||
+
|
||||
#include <gdk/gdk.h>
|
||||
|
||||
#define __GDKWAYLAND_H_INSIDE__
|
||||
diff --git a/gdk/x11/gdkx.h b/gdk/x11/gdkx.h
|
||||
index 6bef6b6..d4f8b94 100644
|
||||
--- a/gdk/x11/gdkx.h
|
||||
+++ b/gdk/x11/gdkx.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."
|
||||
+#endif
|
||||
+
|
||||
#include <gdk/gdk.h>
|
||||
|
||||
#include <X11/Xlib.h>
|
||||
--
|
||||
2.49.0
|
||||
|
||||
297
gui-libs/gtk/gtk-4.19.4.ebuild
Normal file
297
gui-libs/gtk/gtk-4.19.4.ebuild
Normal file
@@ -0,0 +1,297 @@
|
||||
# Copyright 2023-2025 Gentoo Authors
|
||||
# Distributed under the terms of the GNU General Public License v2
|
||||
|
||||
EAPI=8
|
||||
PYTHON_COMPAT=( python3_{11..14} )
|
||||
inherit flag-o-matic gnome.org gnome2-utils meson optfeature python-any-r1 toolchain-funcs virtualx xdg
|
||||
|
||||
DESCRIPTION="GTK is a multi-platform toolkit for creating graphical user interfaces"
|
||||
HOMEPAGE="https://www.gtk.org/ https://gitlab.gnome.org/GNOME/gtk/"
|
||||
|
||||
LICENSE="LGPL-2+"
|
||||
SLOT="4"
|
||||
REQUIRED_USE="
|
||||
|| ( aqua wayland X )
|
||||
gtk-doc? ( introspection )
|
||||
test? ( introspection )
|
||||
"
|
||||
KEYWORDS="~amd64 ~arm ~arm64 ~loong ~ppc ~ppc64 ~riscv ~sparc ~x86"
|
||||
IUSE="aqua broadway cloudproviders colord cups examples gstreamer gtk-doc +introspection sysprof test vulkan wayland +X cpu_flags_x86_f16c"
|
||||
|
||||
# librsvg for svg icons and "!8541 Use librsvg for symbolics that we
|
||||
# can't parse ourselves" (formerly a PDEPEND to avoid circular dep
|
||||
# on wd40 profiles with librsvg[tools]), bug #547710
|
||||
# NOTE: Support was added to build against both cups2 and cups3
|
||||
COMMON_DEPEND="
|
||||
>=dev-libs/glib-2.82:2
|
||||
>=x11-libs/cairo-1.18.2[aqua?,glib,svg(+),X?]
|
||||
>=x11-libs/pango-1.56.0[introspection?]
|
||||
>=dev-libs/fribidi-1.0.6
|
||||
>=media-libs/harfbuzz-8.4.0:=
|
||||
>=x11-libs/gdk-pixbuf-2.30:2[introspection?]
|
||||
media-libs/libpng:=
|
||||
media-libs/tiff:=
|
||||
media-libs/libjpeg-turbo:=
|
||||
>=gnome-base/librsvg-2.48:2
|
||||
>=media-libs/libepoxy-1.4[egl(+),X(+)?]
|
||||
>=media-libs/graphene-1.10.0[introspection?]
|
||||
app-text/iso-codes
|
||||
x11-misc/shared-mime-info
|
||||
|
||||
cloudproviders? ( net-libs/libcloudproviders )
|
||||
colord? ( >=x11-misc/colord-0.1.9:0= )
|
||||
cups? ( >=net-print/cups-2.0 )
|
||||
examples? ( gnome-base/librsvg:2 )
|
||||
gstreamer? (
|
||||
>=media-libs/gstreamer-1.24.0:1.0
|
||||
>=media-libs/gst-plugins-bad-1.24.0:1.0
|
||||
|| (
|
||||
>=media-libs/gst-plugins-base-1.24.0:1.0[gles2]
|
||||
>=media-libs/gst-plugins-base-1.24.0:1.0[opengl]
|
||||
)
|
||||
)
|
||||
introspection? ( >=dev-libs/gobject-introspection-1.84:= )
|
||||
vulkan? ( >=media-libs/vulkan-loader-1.3:=[wayland?,X?] )
|
||||
wayland? (
|
||||
>=dev-libs/wayland-1.24.0
|
||||
>=dev-libs/wayland-protocols-1.44
|
||||
media-libs/mesa[wayland]
|
||||
>=x11-libs/libxkbcommon-0.2
|
||||
)
|
||||
X? (
|
||||
media-libs/fontconfig
|
||||
media-libs/mesa[X(+)]
|
||||
x11-libs/libX11
|
||||
>=x11-libs/libXi-1.8
|
||||
x11-libs/libXext
|
||||
>=x11-libs/libXrandr-1.5
|
||||
x11-libs/libXcursor
|
||||
x11-libs/libXfixes
|
||||
x11-libs/libXdamage
|
||||
x11-libs/libXinerama
|
||||
)
|
||||
"
|
||||
DEPEND="${COMMON_DEPEND}
|
||||
kernel_linux? (
|
||||
x11-libs/libdrm
|
||||
sys-kernel/linux-headers
|
||||
)
|
||||
sysprof? ( >=dev-util/sysprof-capture-3.40.1:4 )
|
||||
X? ( x11-base/xorg-proto )
|
||||
"
|
||||
RDEPEND="${COMMON_DEPEND}
|
||||
>=dev-util/gtk-update-icon-cache-3
|
||||
"
|
||||
PDEPEND="
|
||||
>=x11-themes/adwaita-icon-theme-3.14
|
||||
"
|
||||
BDEPEND="
|
||||
>=dev-build/meson-1.5.0
|
||||
dev-libs/gobject-introspection-common
|
||||
introspection? (
|
||||
${PYTHON_DEPS}
|
||||
$(python_gen_any_dep '
|
||||
dev-python/pygobject:3[${PYTHON_USEDEP}]
|
||||
')
|
||||
)
|
||||
dev-python/docutils
|
||||
>=dev-libs/glib-2.82
|
||||
>=dev-util/gdbus-codegen-2.48
|
||||
dev-util/glib-utils
|
||||
>=sys-devel/gettext-0.19.7
|
||||
virtual/pkgconfig
|
||||
gtk-doc? ( dev-util/gi-docgen )
|
||||
vulkan? ( media-libs/shaderc )
|
||||
wayland? (
|
||||
dev-util/wayland-scanner
|
||||
)
|
||||
test? (
|
||||
dev-libs/glib:2
|
||||
media-fonts/cantarell
|
||||
wayland? ( dev-libs/weston[headless] )
|
||||
)
|
||||
"
|
||||
|
||||
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.
|
||||
# https://bugs.gentoo.org/624960
|
||||
"${FILESDIR}"/0001-gdk-add-a-poison-macro-to-hide-GDK_WINDOWING_ge_4.18.5.patch
|
||||
)
|
||||
|
||||
python_check_deps() {
|
||||
python_has_version "dev-python/pygobject:3[${PYTHON_USEDEP}]" || return
|
||||
}
|
||||
|
||||
pkg_setup() {
|
||||
use introspection && python-any-r1_pkg_setup
|
||||
}
|
||||
|
||||
src_prepare() {
|
||||
default
|
||||
xdg_environment_reset
|
||||
|
||||
# Nothing should use gtk4-update-icon-cache and an unversioned one is shipped by dev-util/gtk-update-icon-cache
|
||||
sed -i \
|
||||
-e '/gtk4-update-icon-cache/d' \
|
||||
docs/reference/gtk/meson.build \
|
||||
tools/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
|
||||
}
|
||||
|
||||
src_configure() {
|
||||
use x86 && append-flags -DDISABLE_X64=1 #943705 https://gitlab.gnome.org/GNOME/gtk/-/issues/4173
|
||||
|
||||
local emesonargs=(
|
||||
# GDK backends
|
||||
$(meson_use X x11-backend)
|
||||
$(meson_use wayland wayland-backend)
|
||||
$(meson_use broadway broadway-backend)
|
||||
-Dwin32-backend=false
|
||||
-Dandroid-backend=false
|
||||
$(meson_use aqua macos-backend)
|
||||
|
||||
# Media backends
|
||||
$(meson_feature gstreamer media-gstreamer)
|
||||
|
||||
# Print backends
|
||||
-Dprint-cpdb=disabled
|
||||
$(meson_feature cups print-cups)
|
||||
|
||||
# Optional dependencies
|
||||
$(meson_feature vulkan)
|
||||
$(meson_feature cloudproviders)
|
||||
$(meson_feature sysprof)
|
||||
-Dtracker=disabled # tracker3 is not packaged in Gentoo yet
|
||||
$(meson_feature colord)
|
||||
# Expected to fail with GCC < 11
|
||||
# See https://gcc.gnu.org/bugzilla/show_bug.cgi?id=71993
|
||||
$(meson_feature cpu_flags_x86_f16c f16c)
|
||||
-Dandroid-runtime=disabled
|
||||
# Introspection
|
||||
$(meson_feature introspection)
|
||||
|
||||
# Documentation
|
||||
$(meson_use gtk-doc documentation)
|
||||
-Dscreenshots=false
|
||||
-Dman-pages=true
|
||||
|
||||
# Demos, examples, and tests
|
||||
-Dprofile=default
|
||||
$(meson_use examples build-demos)
|
||||
$(meson_use test build-testsuite)
|
||||
$(meson_use examples build-examples)
|
||||
-Dbuild-tests=false
|
||||
)
|
||||
meson_src_configure
|
||||
}
|
||||
|
||||
src_test() {
|
||||
"${BROOT}${GLIB_COMPILE_SCHEMAS}" --allow-any-name "${S}/gtk" || die
|
||||
|
||||
addwrite /dev/dri
|
||||
|
||||
# Note that skipping gsk-compare entirely means we do run *far*
|
||||
# fewer tests, but a reliable testsuite for us is more important
|
||||
# than absolute-maximum coverage if we can't trust the results and
|
||||
# dismiss any failures as "probably font related" and so on.
|
||||
if use X; then
|
||||
einfo "Running tests under X"
|
||||
GSETTINGS_SCHEMA_DIR="${S}/gtk" virtx meson_src_test --timeout-multiplier=130 \
|
||||
--setup=x11 \
|
||||
--no-suite=failing \
|
||||
--no-suite=x11_failing \
|
||||
--no-suite=flaky \
|
||||
--no-suite=headless \
|
||||
--no-suite=gsk-compare \
|
||||
--no-suite=gsk-compare-broadway \
|
||||
--no-suite=needs-udmabuf \
|
||||
--no-suite=pango
|
||||
fi
|
||||
|
||||
if use wayland; then
|
||||
einfo "Running tests under Weston"
|
||||
|
||||
export XDG_RUNTIME_DIR="$(mktemp -p $(pwd) -d xdg-runtime-XXXXXX)"
|
||||
|
||||
weston --backend=headless-backend.so --socket=wayland-5 --idle-time=0 &
|
||||
compositor=$!
|
||||
export WAYLAND_DISPLAY=wayland-5
|
||||
|
||||
GSETTINGS_SCHEMA_DIR="${S}/gtk" meson_src_test --timeout-multiplier=130 \
|
||||
--setup=wayland \
|
||||
--no-suite=failing \
|
||||
--no-suite=wayland_failing \
|
||||
--no-suite=flaky \
|
||||
--no-suite=headless \
|
||||
--no-suite=gsk-compare \
|
||||
--no-suite=gsk-compare-broadway \
|
||||
--no-suite=needs-udmabuf
|
||||
|
||||
exit_code=$?
|
||||
kill ${compositor}
|
||||
fi
|
||||
}
|
||||
|
||||
src_install() {
|
||||
local i src
|
||||
|
||||
meson_src_install
|
||||
|
||||
if use gtk-doc; then
|
||||
mkdir -p "${ED}/usr/share/gtk-doc/html" || die
|
||||
|
||||
for dir in gdk4 gtk4 gsk4; do
|
||||
src="${ED}/usr/share/doc/${dir}"
|
||||
test -d "${src}" || die "Expected documentation directory ${src} not found"
|
||||
mv -v "${src}" "${ED}/usr/share/gtk-doc/html" || die
|
||||
done
|
||||
|
||||
if use X; then
|
||||
src="${ED}/usr/share/doc/gdk4-x11"
|
||||
test -d "${src}" || die "Expected X11 documentation ${src} not found"
|
||||
mv -v "${src}" "${ED}/usr/share/gtk-doc/html" || die
|
||||
fi
|
||||
|
||||
if use wayland; then
|
||||
src="${ED}/usr/share/doc/gdk4-wayland"
|
||||
test -d "${src}" || die "Expected Wayland documentation ${src} not found"
|
||||
mv -v "${src}" "${ED}/usr/share/gtk-doc/html" || die
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
pkg_preinst() {
|
||||
xdg_pkg_preinst
|
||||
gnome2_schemas_savelist
|
||||
}
|
||||
|
||||
pkg_postinst() {
|
||||
xdg_pkg_postinst
|
||||
gnome2_schemas_update
|
||||
|
||||
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
|
||||
|
||||
if use examples ; then
|
||||
optfeature "syntax highlighting in gtk4-demo" app-text/highlight
|
||||
fi
|
||||
}
|
||||
|
||||
pkg_postrm() {
|
||||
xdg_pkg_postrm
|
||||
gnome2_schemas_update
|
||||
}
|
||||
Reference in New Issue
Block a user