Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

gui-libs/gtk: add 4.15.0 #36610

Open
wants to merge 1 commit into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
1 change: 1 addition & 0 deletions gui-libs/gtk/Manifest
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
DIST gtk-4.12.5.tar.xz 17314760 BLAKE2B ce6a88d2c3ecfa2a9773682645ff00a61fd932b9a6de764794ef8abd10c5c75df386801143c32d10fec110029e997a16c4cdcb0ef050905562c6dd9fdc46039d SHA512 813758f4fe23b99b2ea1cf22156b86b22df30024717ae3b30bbe36111f9b1363bbd4da5fe8e5f69268c43794ea165e12c1c5bc52fd64bcbb1f9ccd3121540ac4
DIST gtk-4.14.3.tar.xz 18340444 BLAKE2B 20238e061c6500a8b253617010ac017e84ec2cacd9f10a7d2e982e9d72b72d78ee46abb3eb836d853d1d10736c697fc7468b2700b16ce5477a34400e8758e2b8 SHA512 2502fff3e98cb45f2293c94d86c32ff9b7c88d72eb7500a19fc9e589e1eda69af94c4eae78c044dcf5cf345cb99537d264250115d633034d9552cadc67f71e8e
DIST gtk-4.14.4.tar.xz 18306548 BLAKE2B 352831cb6373488593831e0d3489d425ca19b2b6c5541e269e251bb4f0455b435d73d24befef441fe09537838446eb773f33cbca746a9aeeed2204c413535ac0 SHA512 33a983f4ebac9088eaf9d3794a171d1619632bbcb27d9f46d894305dc15f83615a18443598b3c62a553b9596438b58226560ba17c41e539c76c3ee8a2b62c651
DIST gtk-4.15.0.tar.xz 18347832 BLAKE2B 8c7be855e3b927535657d23635397a6159a689b2beac41fa65b1527c8272b1477582120d8594be3da423b2f7a7d2085ae0cea4be09d01a8663f9841354856207 SHA512 cc1802fda5bbab3fb7414485ca6109ef379257e4a4345bda401baadad4186cb150d592e94ddd392883427cef76a5a7d8019eb5996ddadbe6d568da2e144d2f7f
230 changes: 230 additions & 0 deletions gui-libs/gtk/gtk-4.15.0.ebuild
Original file line number Diff line number Diff line change
@@ -0,0 +1,230 @@
# Copyright 2023-2024 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2

EAPI=8
PYTHON_COMPAT=( python3_{10..12} )
inherit 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"
IUSE="aqua broadway cloudproviders colord cups examples ffmpeg gstreamer +introspection sysprof test vulkan wayland +X cpu_flags_x86_f16c"
REQUIRED_USE="
|| ( aqua wayland X )
test? ( introspection )
"

KEYWORDS="~alpha amd64 arm arm64 ~ia64 ~loong ppc ppc64 ~riscv sparc x86"

COMMON_DEPEND="
>=dev-libs/glib-2.76.0:2
>=x11-libs/cairo-1.18.0[aqua?,glib,svg(+),X?]
>=x11-libs/pango-1.52.0[introspection?]
>=dev-libs/fribidi-1.0.6
>=media-libs/harfbuzz-2.6.0:=
>=x11-libs/gdk-pixbuf-2.30:2[introspection?]
media-libs/libpng:=
media-libs/tiff:=
media-libs/libjpeg-turbo:=
>=media-libs/libepoxy-1.4[X(+)?]
>=media-libs/graphene-1.10.0[introspection?]
app-text/iso-codes
x11-misc/shared-mime-info
cloudproviders? ( >=net-libs/libcloudproviders-0.3.1 )
colord? ( >=x11-misc/colord-0.1.9:0= )
cups? ( >=net-print/cups-2.0 )
ffmpeg? ( media-video/ffmpeg:= )
gstreamer? (
>=media-libs/gst-plugins-bad-1.12.3:1.0
>=media-libs/gst-plugins-base-1.12.3:1.0[opengl]
)
introspection? ( >=dev-libs/gobject-introspection-1.76:= )
vulkan? ( media-libs/vulkan-loader:= )
wayland? (
>=dev-libs/wayland-1.21.0
>=dev-libs/wayland-protocols-1.31
media-libs/mesa[wayland]
>=x11-libs/libxkbcommon-0.2
)
X? (
>=app-accessibility/at-spi2-core-2.46.0
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}
sysprof? ( >=dev-util/sysprof-capture-3.40.1:4 )
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
>=x11-themes/adwaita-icon-theme-3.14
"
BDEPEND="
dev-libs/gobject-introspection-common
introspection? (
${PYTHON_DEPS}
$(python_gen_any_dep '
dev-python/pygobject:3[${PYTHON_USEDEP}]
')
)
dev-python/docutils
dev-libs/glib
>=dev-util/gdbus-codegen-2.48
dev-util/glib-utils
>=sys-devel/gettext-0.19.7
virtual/pkgconfig
vulkan? ( media-libs/shaderc )
wayland? (
dev-util/wayland-scanner
)
test? (
dev-libs/glib:2
media-fonts/cantarell
wayland? ( dev-libs/weston[headless] )
)
"

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() {
local emesonargs=(
# GDK backends
$(meson_use X x11-backend)
$(meson_use wayland wayland-backend)
$(meson_use broadway broadway-backend)
-Dwin32-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)

# Introspection
$(meson_feature introspection)

# Documentation
-Ddocumentation=false # we ship pregenerated API docs from tarball
-Dscreenshots=false
-Dman-pages=true

# Demos, examples, and tests
$(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

if use X; then
einfo "Running tests under X"
GSETTINGS_SCHEMA_DIR="${S}/gtk" virtx meson_src_test --setup=x11 --timeout-multiplier=130
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 --setup=wayland --timeout-multiplier=130

exit_code=$?
kill ${compositor}
fi
}

src_install() {
meson_src_install

insinto /usr/share/gtk-doc/html
# This will install API docs specific to X11 and wayland regardless of USE flags, but this is intentional
doins -r "${S}"/docs/reference/{gtk/gtk4,gsk/gsk4,gdk/gdk4{,-wayland,-x11}}
}

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
}