diff --git a/app-backup/insync/insync-3.9.6.60027.ebuild b/app-backup/insync/insync-3.9.6.60027.ebuild
new file mode 100644
index 00000000..ea81c376
--- /dev/null
+++ b/app-backup/insync/insync-3.9.6.60027.ebuild
@@ -0,0 +1,95 @@
+# Copyright 1999-2022 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit pax-utils rpm multilib xdg-utils
+
+DESCRIPTION="Advanced cross-platform Google Drive client"
+HOMEPAGE="https://www.insynchq.com/"
+NAUTILUSPV="3.9.5.60024"
+DOLPHINPV="3.9.5.60024"
+THUNARPV="3.9.5.60024"
+NEMOPV="3.9.5.60024"
+CAJAPV="3.9.5.60024"
+EMBLEMPV="3.4.2.40983"
+SRC_URI="
+ x86? ( http://s.insynchq.com/builds/insync-1.4.9.37127-fc25.i686.rpm )
+ amd64? ( https://cdn.insynchq.com/builds/linux/${PV}/insync-${PV}-fc41.x86_64.rpm
+ https://cdn.insynchq.com/builds/linux/${NAUTILUSPV}/insync-nautilus-${NAUTILUSPV}-1.noarch.rpm
+ https://cdn.insynchq.com/builds/linux/${DOLPHINPV}/insync-dolphin-${DOLPHINPV}-1.noarch.rpm
+ https://cdn.insynchq.com/builds/linux/${THUNARPV}/insync-thunar-${THUNARPV}-1.x86_64.rpm
+ https://cdn.insynchq.com/builds/linux/${NEMOPV}/insync-nemo-${NEMOPV}-1.noarch.rpm
+ https://cdn.insynchq.com/builds/linux/${CAJAPV}/insync-caja-${CAJAPV}-1.noarch.rpm
+ http://yum.insync.io/fedora/35/noarch/${EMBLEMPV}/insync-emblem-icons-${EMBLEMPV}-1.noarch.rpm )"
+
+
+LICENSE="no-source-code"
+SLOT="0"
+KEYWORDS="~amd64 ~x86"
+
+S="${WORKDIR}"
+#QA_PREBUILT=opt/skypeforlinux/skypeforlinux
+#QA_TEXTRELS=opt/skypeforlinux/resources/app.asar.unpacked/node_modules/slimcore/bin/slimcore.node
+#QA_EXECSTACK=opt/skypeforlinux/resources/app.asar.unpacked/node_modules/slimcore/bin/slimcore.node
+RESTRICT="mirror bindist strip" #299368
+RDEPEND="dev-qt/qtcore:5
+ dev-qt/qtdeclarative:5
+ dev-qt/qtgui:5
+ dev-qt/qtnetwork:5
+ dev-qt/qtpositioning:5
+ dev-qt/qtwebchannel:5
+ dev-qt/qtwebengine:5
+ dev-qt/qtvirtualkeyboard:5
+ dev-qt/qtcharts:5
+ dev-qt/qtlocation:5
+ dev-qt/qtsensors:5
+ dev-qt/qtbluetooth:5
+ sys-libs/zlib
+ || ( sys-devel/base-gcc sys-devel/gcc )
+ media-libs/libglvnd
+ sys-libs/glibc
+ dev-libs/libffi-compat
+ >=dev-lang/python-3"
+
+src_unpack() {
+ rpm_src_unpack
+}
+
+src_prepare() {
+ default
+ sed -e "s!/usr/lib/insync/insync!${EPREFIX}/opt/insync/insync!" \
+ -i usr/bin/insync || die
+ sed -e "s!^Exec=insync start!Exec=${EPREFIX}/opt/bin/insync start --ca-path=/etc/ssl/certs!" \
+ -i usr/share/applications/insync.desktop || die
+ sed -e "s!^Exec=insync!Exec=${EPREFIX}/opt/bin/insync!" \
+ -i usr/share/applications/insync-helper.desktop || die
+ sed -e "s!^Exec=insync!Exec=${EPREFIX}/opt/bin/insync!" \
+ -i usr/share/kservices5/fileitemactioninsyncplugin.desktop || die
+}
+
+src_install() {
+ dodir /opt
+ cp -a usr/lib/insync "${D}"/opt || die
+ rm "${D}"/opt/insync/libsndfile.so.1
+
+ dodir /usr
+ cp -a usr/share "${D}"/usr || die
+ cp -a usr/$(get_libdir) "${D}"/usr || die
+
+ into /opt
+ dobin usr/bin/insync
+
+ into /usr
+ dobin usr/bin/insync
+}
+
+pkg_postinst() {
+ xdg_desktop_database_update
+ xdg_mimeinfo_database_update
+}
+
+pkg_postrm() {
+ xdg_desktop_database_update
+ xdg_mimeinfo_database_update
+}
diff --git a/app-emulation/opencbm/Manifest b/app-emulation/opencbm/Manifest
index 6fc0950d..738699c7 100644
--- a/app-emulation/opencbm/Manifest
+++ b/app-emulation/opencbm/Manifest
@@ -1,5 +1,5 @@
AUX 001_opencbm-0.4.99.98-ncurses6-1.patch 698 BLAKE2B 3d126aca22c4c1aa7cf6df35c41f1d32c8117aebcbc0fd10c7bd007dbb5752155b703b6a4585ba0a1ac5c3744e95b4b5e412c0d7834c5fcf4aa74d758b3f198d SHA512 a4b017a8bcbd698c01c9e695758826a4768bd316634a585f746460ec35bcffe67a76cd3e8f2ebcabf2eddbbb5e5dc5db2533f8d4881b1030b314253fc22264dd
-AUX Makefile 1003 BLAKE2B 9e6363f8fb20826f380bae087f461b0f87a2f118be223ca809c84dba7154c6493b8937d7a46437a1773afaf5ba58179d33f9599b0fc063ae53bd5f9984128fa5 SHA512 a15c0d5a962d183f6753844aad38ef111ba4c34a4a3c8f947142b7cb5f71868ed77e965317c5aed10b9e3b5a8cb978fdffd505dbc11a6868615e5f11b19b7bd1
+AUX Makefile 1089 BLAKE2B b011c132af72138147a558303c787efe2f584adf3697f681a0ca594e9220ec3d384cceece1172550cfe96c8f267b34c4f1e32d9b3999590a82b02667c72e800c SHA512 f16d7cfc2fd8dcbef211cef44ed03c3c0edb0a047be82b1116f999d6cbee765e5ded884181077e39a2074d001113fc88a5bae2a819b4e314d33bd30719dd909a
DIST nibtools-20241120-source.tar.gz 119413 BLAKE2B c59a515147113865d3f75e1af2c54d9e08d93c95c389bbe9be71b0afb1079e3901cade612a6471af745826b5cd406694accc6d460e2e509b40d32f327f5f7b35 SHA512 5a8e34a379bf8ceeae80ba40a948b8c0577432122229ec3205e1829e8dfc041dfabead9e69919b15272a029ec82a91ef30025889ca0a6509ba28b1ec380a14c6
DIST opencbm-0.4.99.104-source.tar.gz 13417312 BLAKE2B 1ba6e88c8765a161d6cb7a1c313c2db6cc885c616ac110c0833f59c93e2b2081e67ce730a7ead123a59b83133ddc2edf448de694c72ca582c3a155a463175027 SHA512 1c5c09ed2fd37a6db152eb9739739edee8b2200a4e02b219e982337eeb935cdac1125f59f235b5c3d1203bcd0701c2e9e35da9de921797f1617014f723de0faa
EBUILD opencbm-0.4.99.104.ebuild 3360 BLAKE2B 48cfe65252d46ea862f88c9bf660d1da1ea4a97a729e164faed861a7e609f7f6f7cc33c57b2a3ad048047f142beac9dbf1545a469731cc474836815de615467a SHA512 b3b1e288737b9ab4e64d786b87cdba5d1db82a717a05794dbef398a80980a422d946ffcf57c0e3c4c4d6b0748e21f83db68ed9ac15f8e179a65aecf2652d4daa
diff --git a/app-emulation/opencbm/files/Makefile b/app-emulation/opencbm/files/Makefile
index fc115259..99db7357 100644
--- a/app-emulation/opencbm/files/Makefile
+++ b/app-emulation/opencbm/files/Makefile
@@ -15,7 +15,8 @@ $(MODULE_NAME)-objs = cbm_module.o
ifneq ($(KERNELRELEASE),)
obj-m := $(MODULE_NAME).o
-EXTRA_CFLAGS += -I$(PWD)/../include -I$(PWD)/../../include -I$(PWD)/../../include/LINUX
+#EXTRA_CFLAGS += -I$(PWD)/../include -I$(PWD)/../../include -I$(PWD)/../../include/LINUX
+ccflags-y += -I$(src)/../include -I$(src)/../../include -I$(src)/../../include/LINUX
# Second pass, the actual build.
else
diff --git a/app-emulation/vice/files/vice-3.9-dupe-symbols.patch b/app-emulation/vice/files/vice-3.9-dupe-symbols.patch
new file mode 100644
index 00000000..d96edd09
--- /dev/null
+++ b/app-emulation/vice/files/vice-3.9-dupe-symbols.patch
@@ -0,0 +1,214 @@
+https://sourceforge.net/p/vice-emu/code/45435/
+
+--- vice/src/Makefile.am
++++ vice/src/Makefile.am
+@@ -594,6 +594,7 @@
+ resid_lib = $(top_builddir)/src/resid/libresid.a
+ resid_dtv_lib = $(top_builddir)/src/resid-dtv/libresiddtv.a
+ rs232drv_lib = $(top_builddir)/src/rs232drv/librs232drv.a
++rs232drvpet_lib = $(top_builddir)/src/rs232drv/librs232drvpet.a
+ raster_lib = $(top_builddir)/src/raster/libraster.a
+ rtc_lib = $(top_builddir)/src/core/rtc/librtc.a
+ samplerdrv_lib = $(top_builddir)/src/samplerdrv/libsamplerdrv.a
+@@ -631,7 +632,7 @@
+ # external libraries required for all emulators
+ emu_extlibs = @UI_LIBS@ @SDL_EXTRA_LIBS@ @SOUND_LIBS@ @JOY_LIBS@ @GFXOUTPUT_LIBS@ @ZLIB_LIBS@ @DYNLIB_LIBS@ @ARCH_LIBS@ $(archdep_lib) $(linenoise_ng_lib)
+
+-driver_libs = $(joyport_lib) $(samplerdrv_lib) $(sounddrv_lib) $(mididrv_lib) $(socketdrv_lib) $(hwsiddrv_lib) $(gfxoutputdrv_lib) $(printerdrv_lib) $(rs232drv_lib) $(diskimage_lib) $(fsdevice_lib) $(tape_lib) $(fileio_lib) $(serial_lib) $(core_lib)
++driver_libs = $(joyport_lib) $(samplerdrv_lib) $(sounddrv_lib) $(mididrv_lib) $(socketdrv_lib) $(hwsiddrv_lib) $(gfxoutputdrv_lib) $(printerdrv_lib) $(diskimage_lib) $(fsdevice_lib) $(tape_lib) $(fileio_lib) $(serial_lib) $(core_lib)
+
+ if SUPPORT_X64
+ x64_bin = x64
+@@ -716,6 +717,7 @@
+ $(sid_lib) \
+ $(monitor_lib) \
+ $(driver_libs) \
++ $(rs232drv_lib) \
+ $(vicii_lib) \
+ $(raster_lib) \
+ $(userport_lib) \
+@@ -773,6 +775,7 @@
+ $(sid_lib) \
+ $(monitor_lib) \
+ $(driver_libs) \
++ $(rs232drv_lib) \
+ $(viciisc_lib) \
+ $(raster_lib) \
+ $(userport_lib) \
+@@ -895,6 +898,7 @@
+ $(sid_lib) \
+ $(monitor_lib) \
+ $(driver_libs) \
++ $(rs232drv_lib) \
+ $(viciisc_lib) \
+ $(raster_lib) \
+ $(userport_lib) \
+@@ -954,6 +958,7 @@
+ $(sid_lib) \
+ $(monitor_lib) \
+ $(driver_libs) \
++ $(rs232drv_lib) \
+ $(vicii_lib) \
+ $(vdc_lib) \
+ $(raster_lib) \
+@@ -1011,6 +1016,7 @@
+ $(monitor_lib) \
+ $(sid_lib) \
+ $(driver_libs) \
++ $(rs232drv_lib) \
+ $(raster_lib) \
+ $(userport_lib) \
+ $(diag_lib) \
+@@ -1063,6 +1069,7 @@
+ $(monitor_lib) \
+ $(sid_lib) \
+ $(driver_libs) \
++ $(rs232drvpet_lib) \
+ $(crtc_lib) \
+ $(raster_lib) \
+ $(video_lib) \
+@@ -1122,6 +1129,7 @@
+ $(monitor_lib) \
+ $(sid_lib) \
+ $(driver_libs) \
++ $(rs232drv_lib) \
+ $(raster_lib) \
+ $(rtc_lib) \
+ $(video_lib) \
+@@ -1180,6 +1188,7 @@
+ $(monitor_lib) \
+ $(sid_lib) \
+ $(driver_libs) \
++ $(rs232drvpet_lib) \
+ $(crtc_lib) \
+ $(raster_lib) \
+ $(video_lib) \
+@@ -1236,6 +1245,7 @@
+ $(xcbm5x0_lib) \
+ $(sid_lib) \
+ $(driver_libs) \
++ $(rs232drv_lib) \
+ $(vicii_lib) \
+ $(raster_lib) \
+ $(rtc_lib) \
+@@ -1540,8 +1550,11 @@
+ @echo "making all in printerdrv"
+ @(cd printerdrv && $(MAKE))
+ $(rs232drv_lib):
+- @echo "making all in rs232drv"
+- @(cd rs232drv && $(MAKE))
++ @echo "making librs232drv.a in rs232drv"
++ @(cd rs232drv && $(MAKE) librs232drv.a)
++$(rs232drvpet_lib):
++ @echo "making librs232drvpet.a in rs232drv"
++ @(cd rs232drv && $(MAKE) librs232drvpet.a)
+ $(raster_lib):
+ @echo "making libraster.a in raster"
+ @(cd raster && $(MAKE) libraster.a)
+--- vice/src/c64/Makefile.am
++++ vice/src/c64/Makefile.am
+@@ -216,8 +216,6 @@
+ c64fastiec.h \
+ c64keyboard.c \
+ c64keyboard.h \
+- c64parallel.c \
+- c64parallel.h \
+ c64rom.c \
+ c64rom.h \
+ c64romset.c \
+--- vice/src/c64dtv/c64dtv.c
++++ vice/src/c64dtv/c64dtv.c
+@@ -89,7 +89,6 @@
+ #include "protopad.h"
+ #include "ps2mouse.h"
+ #include "resources.h"
+-#include "rs232drv.h"
+ #include "rushware_keypad.h"
+ #include "sampler.h"
+ #include "sampler2bit.h"
+@@ -422,10 +421,12 @@
+ init_resource_fail("sid");
+ return -1;
+ }
++#if 0
+ if (rs232drv_resources_init() < 0) {
+ init_resource_fail("rs232drv");
+ return -1;
+ }
++#endif
+ if (serial_resources_init() < 0) {
+ init_resource_fail("serial");
+ return -1;
+@@ -528,7 +529,9 @@
+ flash_trap_resources_shutdown();
+ c64dtv_resources_shutdown();
+ c64dtvmem_resources_shutdown();
++#if 0
+ rs232drv_resources_shutdown();
++#endif
+ printer_resources_shutdown();
+ drive_resources_shutdown();
+ fsdevice_resources_shutdown();
+@@ -562,10 +565,12 @@
+ init_cmdline_options_fail("sid");
+ return -1;
+ }
++#if 0
+ if (rs232drv_cmdline_options_init() < 0) {
+ init_cmdline_options_fail("rs232drv");
+ return -1;
+ }
++#endif
+ if (serial_cmdline_options_init() < 0) {
+ init_cmdline_options_fail("serial");
+ return -1;
+@@ -712,8 +717,10 @@
+ return -1;
+ }
+
++#if 0
+ /* Initialize RS232 handler. */
+ rs232drv_init();
++#endif
+
+ /* Initialize print devices. */
+ printer_init();
+@@ -798,8 +805,9 @@
+ ciacore_reset(machine_context.cia2);
+ sid_reset();
+
++#if 0
+ rs232drv_reset();
+-
++#endif
+ printer_reset();
+
+ /* FIXME */
+--- vice/src/rs232drv/Makefile.am
++++ vice/src/rs232drv/Makefile.am
+@@ -14,7 +14,7 @@
+ AM_LDFLAGS = @VICE_LDFLAGS@
+
+
+-noinst_LIBRARIES = librs232drv.a
++noinst_LIBRARIES = librs232drv.a librs232drvpet.a
+
+ librs232drv_a_SOURCES = \
+ rs232dev.h \
+@@ -26,3 +26,16 @@
+ rs232net.h \
+ rsuser.c \
+ rsuser.h
++
++# Same as above, but without the userport bits, to avoid registering userport
++# resources and command line options with xpet and xcbm2 (these have stubs for
++# rsuser_resources_init() and rsuser_cmdline_init()
++librs232drvpet_a_SOURCES = \
++ rs232dev.h \
++ rs232.c \
++ rs232.h \
++ rs232drv.c \
++ rs232drv.h \
++ rs232net.c \
++ rs232net.h \
++ rsuser.h
diff --git a/app-emulation/vice/vice-3.9.ebuild b/app-emulation/vice/vice-3.9.ebuild
new file mode 100644
index 00000000..4c7396b3
--- /dev/null
+++ b/app-emulation/vice/vice-3.9.ebuild
@@ -0,0 +1,196 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit autotools multibuild toolchain-funcs xdg
+
+DESCRIPTION="Versatile Commodore Emulator"
+HOMEPAGE="https://vice-emu.sourceforge.io/"
+SRC_URI="https://downloads.sourceforge.net/vice-emu/releases/${P}.tar.gz"
+
+LICENSE="GPL-2+"
+SLOT="0"
+KEYWORDS="amd64 ~arm ~arm64 x86"
+IUSE="
+ alsa curl debug doc ethernet +evdev flac gif +gtk headless lame
+ mpg123 ogg openmp oss parport pci png portaudio pulseaudio sdl
+"
+REQUIRED_USE="|| ( gtk headless sdl )"
+
+RDEPEND="
+ sys-libs/zlib:=
+ app-emulation/opencbm
+ virtual/libintl
+ alsa? ( media-libs/alsa-lib )
+ curl? ( net-misc/curl )
+ ethernet? (
+ net-libs/libpcap
+ sys-libs/libcap
+ )
+ evdev? ( dev-libs/libevdev )
+ flac? ( media-libs/flac:= )
+ gif? ( media-libs/giflib:= )
+ gtk? (
+ >=app-accessibility/at-spi2-core-2.46:2
+ dev-libs/glib:2
+ media-libs/fontconfig:1.0
+ media-libs/glew:0=[-egl-only(-)]
+ media-libs/libglvnd[X]
+ x11-libs/cairo
+ x11-libs/gdk-pixbuf:2
+ x11-libs/gtk+:3[X]
+ x11-libs/libX11
+ x11-libs/pango
+ )
+ lame? ( media-sound/lame )
+ mpg123? ( media-sound/mpg123-base )
+ ogg? (
+ media-libs/libogg
+ media-libs/libvorbis
+ )
+ parport? ( sys-libs/libieee1284 )
+ pci? ( sys-apps/pciutils )
+ png? ( media-libs/libpng:= )
+ portaudio? ( media-libs/portaudio )
+ pulseaudio? ( media-libs/libpulse )
+ sdl? (
+ media-libs/libsdl2[video]
+ media-libs/sdl2-image
+ )
+"
+DEPEND="
+ ${RDEPEND}
+ x11-base/xorg-proto
+"
+BDEPEND="
+ app-alternatives/awk
+ app-alternatives/yacc
+ app-arch/unzip
+ app-text/dos2unix
+ dev-embedded/xa
+ dev-lang/perl
+ sys-apps/texinfo
+ app-alternatives/lex
+ sys-devel/gettext
+ virtual/pkgconfig
+ doc? ( virtual/texi2dvi )
+ gtk? ( x11-misc/xdg-utils )
+"
+
+PATCHES=(
+ "${FILESDIR}"/${P}-dupe-symbols.patch
+)
+
+pkg_pretend() {
+ [[ ${MERGE_TYPE} != binary ]] && use openmp && tc-check-openmp
+}
+
+pkg_setup() {
+ [[ ${MERGE_TYPE} != binary ]] && use openmp && tc-check-openmp
+}
+
+src_prepare() {
+ default
+ eautoreconf
+
+ # Strip the predefined C(XX)FLAGS.
+ sed -i -r 's:(VICE_C(XX)?FLAGS=)"[^$]+":\1:' configure || die
+
+ MULTIBUILD_VARIANTS=(
+ $(usev gtk)
+ $(usev headless)
+ $(usev sdl)
+ )
+
+ # Debug build currently broken without copy sources.
+ multibuild_copy_sources
+}
+
+src_configure() {
+ tc-export AR
+
+ multibuild_foreach_variant run_in_build_dir multibuild_src_configure
+}
+
+multibuild_src_configure() {
+ # Append ".variant" to x* programs if building multiple variants.
+ local xform
+ (( ${#MULTIBUILD_VARIANTS[@]} > 1 )) &&
+ xform="/^x/s/\$/.${MULTIBUILD_VARIANT}/"
+
+ vice-multi_enable() {
+ if [[ ${MULTIBUILD_VARIANT} == ${1} ]]; then
+ echo --enable-${2}
+ else
+ echo --disable-${2}
+ fi
+ }
+
+ local econfargs=(
+ --program-transform-name="${xform}"
+ $(vice-multi_enable gtk desktop-files)
+ $(vice-multi_enable gtk gtk3ui)
+ $(vice-multi_enable headless headlessui)
+ $(vice-multi_enable sdl sdl2ui)
+ $(usex debug $(vice-multi_enable gtk debug-gtk3ui) --disable-debug-gtk3ui)
+ $(use_enable debug)
+ $(use_enable doc pdf-docs)
+ $(use_enable ethernet)
+ $(use_enable openmp)
+ $(use_enable parport parsid)
+ $(use_with alsa)
+ $(use_with curl libcurl)
+ $(use_with evdev)
+ $(use_with flac)
+ $(use_with gif)
+ $(use_with lame)
+ $(use_with lame static-lame) # disables dlopen, uses shared still
+ $(use_with mpg123)
+ $(use_with ogg vorbis)
+ $(use_with oss)
+ $(use_with parport libieee1284)
+ $(use_with png)
+ $(use_with portaudio)
+ $(use_with pulseaudio pulse)
+ $(usex alsa --enable-midi $(use_enable oss midi))
+ $(usev !pci ac_cv_header_pci_pci_h=no)
+ --disable-arch
+ --disable-ffmpeg # deprecated in 3.8, also bug #834359
+ --disable-sdl1ui
+ --enable-realdevice
+ ac_cv_lib_ungif_EGifPutLine=no # ensure use giflib, not ungif
+ )
+
+ econf "${econfargs[@]}"
+}
+
+src_compile() {
+ # bug #924116 wrt SHELL
+ multibuild_foreach_variant run_in_build_dir emake SHELL="${BASH}"
+}
+
+src_install() {
+ # Get xdg-desktop-menu to play nicely while doing the install.
+ dodir /etc/xdg/menus /usr/share/{applications,desktop-directories}
+
+ XDG_UTILS_INSTALL_MODE=system \
+ XDG_DATA_DIRS="${ED}"/usr/share \
+ XDG_CONFIG_DIRS="${ED}"/etc/xdg \
+ multibuild_foreach_variant run_in_build_dir default
+
+ rm -f -- "${ED}"/usr/share/applications/*.cache || die
+
+ vice-install_extras() {
+ docinto html
+ dodoc doc/html/*.{html,css}
+ dodoc -r doc/html/images
+
+ insinto /usr/share/vim/vimfiles/ftdetect
+ doins doc/vim/ftdetect/*.vim
+
+ insinto /usr/share/vim/vimfiles/syntax
+ doins doc/vim/syntax/*.vim
+ }
+ multibuild_for_best_variant run_in_build_dir vice-install_extras
+}
diff --git a/app-emulation/virtualbox/Manifest b/app-emulation/virtualbox/Manifest
index 17c4e7b9..86e44072 100644
--- a/app-emulation/virtualbox/Manifest
+++ b/app-emulation/virtualbox/Manifest
@@ -15,14 +15,8 @@ AUX virtualbox-7.0.8-disable-rebuild-iPxeBiosBin.patch 843 BLAKE2B bd7fef7afc725
AUX virtualbox-7.1.0-disable-rebuild-iPxeBiosBin.patch 1007 BLAKE2B 8c3d806ed57170a9e6121df67e87c924ce77b71cdc1e2f3c812992456d3f2934875d82568e6dab8db4ab9bd531c28bded512db67b0f51cfb895ea7d1e204fc95 SHA512 32f3cbac5f4a6fb2f549ede7dcadf0f73b60d4cef77b84ded2ded82885a6226dadb4be829d86e0fee7866fd24f2a2219d49d344fc078715a5964115117e5b88e
AUX virtualbox-ose-6-wrapper 3578 BLAKE2B c150e578212435268de3c5fb0eea701bc843ec2241dc3839d3d1e33604fc01f6bdff6ed0425ba6917072f652b8c29d0df9a550a92900ca13306fcd36521afbee SHA512 315d981f3e92f2e0134946f6bbb8ad4ea4228afb8f73aaed7feead59b3f55cef01cec4285a7fdaf30ce0931d8b69bda4698baebd63d11f2cd9dfe9d0591a0f40
AUX virtualbox-vboxusb_tmpfilesd 35 BLAKE2B 56937e236a0e4d1a2aa085271e8ae0af9553fdf7c3b804af4d3fda3aa8dbc32d63762fee90bc949390cb9cd67f2f0111894c8af084731dab6920ae1675c69a64 SHA512 72e4602f5f214f8833486f5c787c263a10390e8bdf65b5615d67c35ec44048f02add12fe43b19f9c57a9d2f12d768c52e54fcfb9052c0611d06cc988a698c171
-DIST VirtualBox-7.1.4.tar.bz2 206218796 BLAKE2B 62a4f44b4eac2e1cb2c0bace5dfabf86c41b738d81aede3de75d88159a8d76158748eaae38ee3eedbc0f79b639a875f1ef6805a8ca7c95021f475935f54d7ef9 SHA512 97654339d509447e2604db01e29f9e810f59498a378e645f412cffb67022c4e547f205e8ebdac6ae33aaa8f7bc0f289bdca2e5a04b1fa31b4a05c191d7600a9c
-DIST VirtualBox-7.1.6a.tar.bz2 205777317 BLAKE2B 584a53df603311bb1d49c8564bb05015426c678d58578327a73e1bb5d8ed4f0563a4edfaea13f3d41acc6902567572e67225cc9ea797b15489fb3d786d35c3f9 SHA512 fbb9487d531db6bf176e73f307ef1b65cc5263c8e5f38755cdc6bed41fe2906ffbd64076d42b8b505183d0ae054d8f6bccc522e981edd5a815e440066327cd3b
-DIST VirtualBox-7.1.8.tar.bz2 215541146 BLAKE2B dbe8e432162ed29716e14a390be1fa14d13f861943bb2392f8de0cd8ec3dbb991588a8aafe47b2bd0884ca12932af78799d7b21a2b115d818702ccbed564dc97 SHA512 9c801309aac8eeea94279c6872892046cdf933dda0dc7493be5442a9dabbb6e5e513e116bb17d8fd225a6d6d37285f21c26e42daeb37c4335f3636b810f84dfb
-DIST virtualbox-help-7.1.4.tar.xz 1586108 BLAKE2B e8219ed67b1db9a5e4d0271e25980fbcbfb8c72316dc4bd3337080c81082bb8ecad9c9317b5b9be77db1eeac42c567512a64fe86ae9bb6371dea8632e7afc9ab SHA512 185249fe2bdf2138a034c53e23eedb88cf487e1fb26a8bd623f0d75ea0d2ff4dff3484564a5b317703fb3f302ec7037cb0a49c7c3845e229fe2ac9e2c8c96af6
-DIST virtualbox-help-7.1.6a.tar.xz 984912 BLAKE2B fe30248627e61f75c6486b7ff73b68027cf9804bfc2df9d331dfbcb93571fb6816d95a35a05719a136d6540035f3bb628f6c61a8ca6ed704d10738b4017f9ad8 SHA512 528b74c170b1ab13b05df03c104f735a67f79cce4d2c03f7094a3cf481f0a832586d07137cab746eeeaae475f671c17996cd3c3acd9f72b77d24bef9a9a403e6
-DIST virtualbox-help-7.1.8.tar.xz 8308340 BLAKE2B 74a553dcf72306ab5168c403862c872d7de917f090a559fc06fc9a6bb344601ab5a78196e5ae13a9daed9150fc3b29e700fe6dbb4e589f8b3636fec6e9bb9ed5 SHA512 00613dead921bff77b16369b0267d06d668be7b56a12885cff4d050a1120d51de8576472b2dc069e93bf7cefcf4837ebe13d2d8c147953ad4484669df93d3e1e
-DIST virtualbox-patches-7.1.4-r1.tar.bz2 6140 BLAKE2B dc84a0522629d06b72ff98e330e2c104e55185914238fed53d696399e43400a1c32979724c156479c3a67d2c64f7f8389d58a83242de559cf8dd89fbda0804e6 SHA512 3541ace61bd64f6ecb2f7b3aaa2383c33ae51682676eead78b267ff82d46e769117f074a534301e734408efa0e622d63e778085f06741223b35ed8caaacc003d
-EBUILD virtualbox-7.1.4.ebuild 21865 BLAKE2B c4ab6c32a2320a1f9a3bc4c82d1138deb6ceee83dd32533e51c03102ec0afdd43ce47f53a7f2133717216fa7fc0afc7ffc4c912896844ec40d479f9f91de8e5a SHA512 a4fc1eb8ad68f6d540f177b589ed776e14bf597d6791d0ac15c389821ca8cadb9ea19243f60ded1551981c0b751545fcfe4f91d9b94325d8f8e3efc5ce130d12
-EBUILD virtualbox-7.1.6a.ebuild 21877 BLAKE2B 2928931ce4299231947cdef1c5661ae28114a3f6101aeee76840aa27c35058bec128c7f2fd9bc4496730b9fb8b25c269deffd5c7b44943f722e08e33536062bb SHA512 bc95f07403c6191c41a18ab5c2baa64d07d7d31a9d0d300fcfd002d06b72b68cd38f58794e650aa2cdedced062586e24827e1991497e4dde42cee5da9dcb5e6a
-EBUILD virtualbox-7.1.8.ebuild 22019 BLAKE2B ebb4e32bd3c423ab11745eec869b05298492b458ae1db1202ee10bc4d23dc728eaa2542c5926a54f4e845230a9685ac46ea156a6681de92bd2a4b80396999e4c SHA512 6c707838bcaf991342a2c391ed922d4578f08be4f6935b753ab306151fec14643c608e05595347b88a6fc5a703bf2d4c1550a42350f0409fb57b9b6d2eb26b8a
-MISC metadata.xml 948 BLAKE2B c074e494d9affda91addd2355f8e71616602102b4cc151d2b45efd04754f1f92621ecd313dbe3baa44c3301f57b61e9cff780d445c2ea3d19ce3d9c8ae05213a SHA512 5338812da9334aedf08dd7a31a4a07c7bfa8232e8f0de6af9de9ac0f5585397cea16e66cb73d56632efa4cf21386782108182d803de6ff45c08082a13dc5fed9
+DIST VirtualBox-7.1.10.tar.bz2 233395034 BLAKE2B 8f451932a4b3cd5e4628f8dd45e9a2cfec6cfbc02fd4eeb7f4dedd473c9c022f57751e4ea78ab1edd6989c111a5c751da1c87662d24c971c3f673bedcf9d6f06 SHA512 841c539b30c964eec0e3a5eddc354bcec530aeed882507928c2f0a8675756c27a650cb3094a130d4f609e83a10f1273b40e9a765228586c3c8c90bb74d7872ad
+DIST virtualbox-help-7.1.10.tar.xz 8307956 BLAKE2B 7da5e31400431b19df136a16dcbb8a9307674ae3d25da6b4e546165f6d2d69b090f3f07ba356c2ac7efb7a6bf26d27751b70ce1a05d0e9bd081490a28135359a SHA512 f3d75ec4e5379c1ad99a24b2aebf9ad167020f2f59f9fcbd32fb41edfb283b6d26fcad82550223433d4f71b0df26d09ac56de906727faea6f25da9ad8c067ff6
+DIST virtualbox-patches-7.1.10.tar.bz2 5966 BLAKE2B cde325931ed2b41c74c9fa070980c5a6988a658608b2899473991e58ebf995f3cfd8efd295c98181d879104249ffc021643315ffe7801d30ded663a61e442488 SHA512 82de81a6e63bbaae8a1467fe0f4b84a6a71ee3f3d2190d53215f0b0913f6d2e53623709e5063ba629798a844c0c29fa0f48aca72efc96e775d7b18f75c1de79f
+EBUILD virtualbox-7.1.10.ebuild 22049 BLAKE2B c3b8ba98c2f9c40c3b761744fc84c4aa2333112bf6bbb92903fbdd307c9a0e9404fa0e9c158777c9ed29c70a22a61d5cf3ec1a09434916f51e26bd3f19458b78 SHA512 ff5355fc3192e2f12f5b1d01c5a211513d703158182d2afd292d79b179066dff9b42472b54b715ff7cb82a5eaa84bea0f3b32bb517707abce63aac9609ef7325
+MISC metadata.xml 890 BLAKE2B 1b37eab206d443d5c84581ce3582931c4dbb7ba0e811f7ae69a5685e382d355ded333ff28355abfb7675e0a0133dbdbf71bbb3476ac58e9ff92001ef9f871e64 SHA512 144b3dbcd5f3e45d1bc4e9db5bc7029f2bd66624c1cf476352b47221550653d322775fe5f3f61958a21b7583ff9348b4d65a197b628364b73d56c36f292583b7
diff --git a/app-emulation/virtualbox/metadata.xml b/app-emulation/virtualbox/metadata.xml
index 04d0c636..f625a142 100644
--- a/app-emulation/virtualbox/metadata.xml
+++ b/app-emulation/virtualbox/metadata.xml
@@ -7,13 +7,14 @@
+
+ VirtualBox/virtualbox
+
diff --git a/app-emulation/virtualbox/virtualbox-7.1.8.ebuild b/app-emulation/virtualbox/virtualbox-7.1.10.ebuild
similarity index 98%
rename from app-emulation/virtualbox/virtualbox-7.1.8.ebuild
rename to app-emulation/virtualbox/virtualbox-7.1.10.ebuild
index 88c34825..8187d0c2 100644
--- a/app-emulation/virtualbox/virtualbox-7.1.8.ebuild
+++ b/app-emulation/virtualbox/virtualbox-7.1.10.ebuild
@@ -15,7 +15,7 @@ EAPI=8
# trunk branch but not release branch.
#
# See bug #785835, bug #856121.
-PYTHON_COMPAT=( python3_{10..13} )
+PYTHON_COMPAT=( python3_{11..13} )
inherit desktop edo flag-o-matic java-pkg-opt-2 linux-info multilib optfeature pax-utils \
python-single-r1 tmpfiles toolchain-funcs udev xdg
@@ -25,10 +25,10 @@ MY_P=${MY_PN}-${PV}
HELP_PV=${PV}
DESCRIPTION="Family of powerful x86 virtualization products for enterprise and home use"
-HOMEPAGE="https://www.virtualbox.org/"
+HOMEPAGE="https://www.virtualbox.org/ https://github.com/VirtualBox/virtualbox"
SRC_URI="
https://download.virtualbox.org/virtualbox/${PV%*a}/${MY_P}.tar.bz2
- https://gitweb.gentoo.org/proj/virtualbox-patches.git/snapshot/virtualbox-patches-7.1.4-r1.tar.bz2
+ https://gitweb.gentoo.org/proj/virtualbox-patches.git/snapshot/virtualbox-patches-7.1.10.tar.bz2
gui? ( !doc? ( https://dev.gentoo.org/~ceamac/${CATEGORY}/${PN}/${PN}-help-${HELP_PV}.tar.xz ) )
"
S="${WORKDIR}/${MY_PN}-${PV%*a}"
@@ -46,7 +46,7 @@ COMMON_DEPEND="
app-arch/xz-utils
~app-emulation/virtualbox-modules-${PV%*a}
dev-libs/libtpms
- dev-libs/libxml2
+ dev-libs/libxml2:=
dev-libs/openssl:0=
media-libs/libpng:0=
media-libs/libvpx:0=
@@ -127,7 +127,6 @@ RDEPEND="
BDEPEND="
>=app-arch/tar-1.34-r2
>=dev-lang/yasm-0.6.2
- dev-libs/libIDL
dev-util/glslang
>=dev-build/kbuild-0.1.9998.3592
sys-apps/which
@@ -199,8 +198,7 @@ REQUIRED_USE="
PATCHES=(
# Downloaded patchset
- "${WORKDIR}"/virtualbox-patches-7.1.4-r1/patches
- "${FILESDIR}"/VirtualBox-python3.13.patch
+ "${WORKDIR}"/virtualbox-patches-7.1.10/patches
)
pkg_pretend() {
diff --git a/app-emulation/virtualbox/virtualbox-7.1.4.ebuild b/app-emulation/virtualbox/virtualbox-7.1.4.ebuild
deleted file mode 100644
index 1610ff83..00000000
--- a/app-emulation/virtualbox/virtualbox-7.1.4.ebuild
+++ /dev/null
@@ -1,776 +0,0 @@
-# Copyright 2022-2025 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-# To add a new Python here:
-# 1. Patch src/libs/xpcom18a4/python/Makefile.kmk (copy the previous impl's logic)
-# Do NOT skip this part. It'll end up silently not-building the Python extension
-# or otherwise misbehaving if you do.
-#
-# 2. Then update PYTHON_COMPAT & set PYTHON_SINGLE_TARGET for testing w/ USE=python.
-#
-# May need to look at other distros (e.g. Arch Linux) to find patches for newer
-# Python versions as upstream tends to lag. Upstream may have patches on their
-# trunk branch but not release branch.
-#
-# See bug #785835, bug #856121.
-PYTHON_COMPAT=( python3_{10..12} )
-
-inherit desktop edo flag-o-matic java-pkg-opt-2 linux-info multilib optfeature pax-utils \
- python-single-r1 tmpfiles toolchain-funcs udev xdg
-
-MY_PN="VirtualBox"
-MY_P=${MY_PN}-${PV}
-HELP_PV=${PV}
-
-DESCRIPTION="Family of powerful x86 virtualization products for enterprise and home use"
-HOMEPAGE="https://www.virtualbox.org/"
-SRC_URI="
- https://download.virtualbox.org/virtualbox/${PV}/${MY_P}.tar.bz2
- https://gitweb.gentoo.org/proj/virtualbox-patches.git/snapshot/virtualbox-patches-7.1.4-r1.tar.bz2
- gui? ( !doc? ( https://dev.gentoo.org/~ceamac/${CATEGORY}/${PN}/${PN}-help-${HELP_PV}.tar.xz ) )
-"
-S="${WORKDIR}/${MY_PN}-${PV}"
-
-LICENSE="GPL-2+ GPL-3 LGPL-2.1 MIT dtrace? ( CDDL )"
-SLOT="0/$(ver_cut 1-2)"
-KEYWORDS="amd64"
-IUSE="alsa dbus debug doc dtrace +gui java lvm nls pam pch pulseaudio +opengl python +sdk +sdl test +udev vboxwebsrv vde +vmmraw vnc"
-RESTRICT="!test? ( test )"
-
-unset WATCOM #856769
-
-COMMON_DEPEND="
- acct-group/vboxusers
- app-arch/xz-utils
- ~app-emulation/virtualbox-modules-${PV}
- dev-libs/libtpms
- dev-libs/libxml2
- dev-libs/openssl:0=
- media-libs/libpng:0=
- media-libs/libvpx:0=
- net-misc/curl
- sys-libs/zlib
- dbus? ( sys-apps/dbus )
- gui? (
- dev-qt/qtbase:6[widgets]
- dev-qt/qtscxml:6
- dev-qt/qttools:6[assistant]
- x11-libs/libX11
- x11-libs/libXt
- )
- lvm? ( sys-fs/lvm2 )
- opengl? (
- media-libs/libglvnd[X]
- media-libs/vulkan-loader
- x11-libs/libX11
- x11-libs/libXt
- )
- pam? ( sys-libs/pam )
- python? ( ${PYTHON_DEPS} )
- sdl? (
- media-libs/libsdl2[X,video]
- x11-libs/libX11
- x11-libs/libXt
- )
- vboxwebsrv? ( net-libs/gsoap[-gnutls(-),debug?] )
- vde? ( net-misc/vde )
- vnc? ( >=net-libs/libvncserver-0.9.9 )
-"
-# We're stuck on JDK (and JRE, I guess?) 1.8 because of need for wsimport
-# with USE="vboxwebsrv java". Note that we have to put things in DEPEND,
-# not (only, anyway) BDEPEND, as the eclass magic to set the environment variables
-# based on *DEPEND doesn't work for BDEPEND at least right now.
-#
-# There's a comment in Config.kmk about it
-# ("With Java 11 wsimport was removed, usually part of a separate install now.")
-# but it needs more investigation.
-#
-# See bug #878299 to track this issue.
-DEPEND="
- ${COMMON_DEPEND}
- >=dev-libs/libxslt-1.1.19
- virtual/libcrypt:=
- x11-libs/libXt
- alsa? ( >=media-libs/alsa-lib-1.0.13 )
- gui? (
- x11-base/xorg-proto
- x11-libs/libxcb:=
- x11-libs/libXcursor
- x11-libs/libXext
- x11-libs/libXinerama
- x11-libs/libXmu
- x11-libs/libXrandr
- )
- java? ( virtual/jdk:1.8 )
- opengl? (
- x11-base/xorg-proto
- x11-libs/libXcursor
- x11-libs/libXinerama
- x11-libs/libXmu
- x11-libs/libXrandr
- virtual/glu
- )
- sdl? (
- x11-libs/libXcursor
- x11-libs/libXinerama
- )
- pulseaudio? ( media-libs/libpulse )
- udev? ( >=virtual/udev-171 )
-"
-RDEPEND="
- ${COMMON_DEPEND}
- gui? ( x11-libs/libxcb:= )
- java? ( virtual/jre:1.8 )
-"
-BDEPEND="
- >=app-arch/tar-1.34-r2
- >=dev-lang/yasm-0.6.2
- dev-libs/libIDL
- dev-util/glslang
- >=dev-build/kbuild-0.1.9998.3592
- sys-apps/which
- sys-devel/bin86
- sys-libs/libcap
- sys-power/iasl
- virtual/pkgconfig
- doc? (
- app-doc/dita-ot-bin
- app-text/docbook-sgml-dtd:4.4
- app-text/docbook-xsl-ns-stylesheets
- dev-texlive/texlive-basic
- dev-texlive/texlive-latex
- dev-texlive/texlive-latexrecommended
- dev-texlive/texlive-latexextra
- dev-texlive/texlive-fontsrecommended
- dev-texlive/texlive-fontsextra
- dev-qt/qttools:6[assistant]
- sys-libs/nss_wrapper
- )
- gui? ( dev-qt/qttools:6[linguist] )
- nls? ( dev-qt/qttools:6[linguist] )
- java? ( virtual/jdk:1.8 )
- python? (
- ${PYTHON_DEPS}
- test? (
- $(python_gen_cond_dep '
- dev-python/pytest[${PYTHON_USEDEP}]
- ')
- )
- )
-"
-
-QA_FLAGS_IGNORED="
- usr/lib64/virtualbox/VBoxDDR0.r0
- usr/lib64/virtualbox/VMMR0.r0
- usr/lib64/virtualbox/ExtensionPacks/Oracle_VBoxDTrace_Extension_Pack/linux.amd64/VBoxDTraceR0.r0
- usr/lib64/virtualbox/ExtensionPacks/Oracle_VBoxDTrace_Extension_Pack/linux.amd64/VBoxDTraceR0.debug
-"
-
-QA_TEXTRELS="
- usr/lib64/virtualbox/VMMR0.r0
- usr/lib64/virtualbox/ExtensionPacks/Oracle_VBoxDTrace_Extension_Pack/linux.amd64/VBoxDTraceR0.r0
-"
-
-QA_EXECSTACK="
- usr/lib64/virtualbox/iPxeBaseBin
- usr/lib64/virtualbox/VMMR0.r0
- usr/lib64/virtualbox/VBoxDDR0.r0
- usr/lib64/virtualbox/ExtensionPacks/Oracle_VBoxDTrace_Extension_Pack/linux.amd64/VBoxDTraceR0.r0
- usr/lib64/virtualbox/ExtensionPacks/Oracle_VBoxDTrace_Extension_Pack/linux.amd64/VBoxDTraceR0.debug
-"
-
-QA_WX_LOAD="
- usr/lib64/virtualbox/iPxeBaseBin
-"
-
-QA_PRESTRIPPED="
- usr/lib64/virtualbox/VMMR0.r0
- usr/lib64/virtualbox/VBoxDDR0.r0
- usr/lib64/virtualbox/ExtensionPacks/Oracle_VBoxDTrace_Extension_Pack/linux.amd64/VBoxDTraceR0.r0
-"
-
-REQUIRED_USE="
- java? ( sdk )
- python? ( sdk ${PYTHON_REQUIRED_USE} )
- vboxwebsrv? ( java )
-"
-
-PATCHES=(
- # Downloaded patchset
- "${WORKDIR}"/virtualbox-patches-7.1.4-r1/patches
-)
-
-pkg_pretend() {
- if ! use gui; then
- einfo "No USE=\"gui\" selected, this build will not include any Qt frontend."
- fi
-
- if ! use opengl; then
- einfo "No USE=\"opengl\" selected, this build will lack"
- einfo "the OpenGL feature."
- fi
- if ! use nls && use gui; then
- einfo "USE=\"gui\" also selects USE=\"nls\". This build"
- einfo "will have NLS support."
- fi
-
- # 749273
- local d=${ROOT}
- for i in usr "$(get_libdir)"; do
- d="${d}/$i"
- if [[ "$(stat -L -c "%g %u" "${d}")" != "0 0" ]]; then
- die "${d} should be owned by root, VirtualBox will not start otherwise"
- fi
- done
-}
-
-pkg_setup() {
- java-pkg-opt-2_pkg_setup
- use python && python-single-r1_pkg_setup
-}
-
-src_prepare() {
- default
-
- if use python; then
- mkdir test
- cp "${FILESDIR}"/test_python.py test/
- python_fix_shebang test/test_python.py
- fi
-
- # Only add nopie patch when we're on hardened
- if gcc-specs-pie; then
- eapply "${FILESDIR}"/050_virtualbox-5.2.8-nopie.patch
- fi
-
- # Remove shipped binaries (kBuild, yasm) and tools, see bug #232775
- rm -r kBuild/bin || die
- # Remove everything in tools except kBuildUnits
- find tools -mindepth 1 -maxdepth 1 -name kBuildUnits -prune -o -exec rm -r {} \+ || die
-
- # Disable things unused or split into separate ebuilds
- sed -e "s@MY_LIBDIR@$(get_libdir)@" \
- "${FILESDIR}"/${PN}-5-localconfig > LocalConfig.kmk || die
-
- if ! use pch; then
- # bug #753323
- printf '\n%s\n' "VBOX_WITHOUT_PRECOMPILED_HEADERS=1" \
- >> LocalConfig.kmk || die
- fi
-
- # bug #916002, #488176, #925347
- tc-ld-is-mold || tc-ld-force-bfd
-
- # Respect LDFLAGS
- sed -e "s@_LDFLAGS\.${ARCH}*.*=@& ${LDFLAGS}@g" \
- -i Config.kmk src/libs/xpcom18a4/Config.kmk || die
-
- # Do not use hard-coded ld (related to bug #488176)
- sed -e '/QUIET)ld /s@ld @$(LD) @' \
- -i src/VBox/Devices/PC/ipxe/Makefile.kmk || die
-
- # Use PAM only when pam USE flag is enbaled (bug #376531)
- if ! use pam; then
- einfo "Disabling PAM removes the possibility to use the VRDP features."
- sed -i 's@^.*VBOX_WITH_PAM@#VBOX_WITH_PAM@' Config.kmk || die
- sed -i 's@\(.*/auth/Makefile.kmk.*\)@#\1@' \
- src/VBox/HostServices/Makefile.kmk || die
- echo -e "\nIPRT_WITHOUT_PAM=1" >> LocalConfig.kmk || die
- fi
-
- # add correct java path
- if use java; then
- sed "s@/usr/lib/jvm/java-6-sun@$(java-config -O)@" \
- -i "${S}"/Config.kmk || die
- java-pkg-opt-2_src_prepare
- fi
-
- # bug #940482
- filter-flags -fno-plt
-
- # bug #908814
- filter-lto
-
- # bug #843437
- cat >> LocalConfig.kmk <<-EOF || die
- CXXFLAGS=${CXXFLAGS}
- CFLAGS=${CFLAGS}
- EOF
-
- if use sdl; then
- sed -i 's/sdl-config/sdl2-config/' configure || die
- echo -e "\nVBOX_WITH_VBOXSDL=1" >> LocalConfig.kmk || die
- fi
-
- #443830
- echo -e "\nVBOX_WITH_VBOX_IMG=1" >> LocalConfig.kmk || die
-
- if tc-is-clang; then
- # clang does not support this extension
- eapply "${FILESDIR}"/${PN}-7.1.0-disable-rebuild-iPxeBiosBin.patch
- fi
-
- # fix doc generation
- echo -e "\nVBOX_PATH_DOCBOOK=/usr/share/sgml/docbook/xsl-ns-stylesheets" >> LocalConfig.kmk || die
- # replace xhtml names with numeric equivalents
- find doc/manual -name \*.xml -exec sed -i \
- -e 's/ /\ /g' \
- -e 's/–/\–/g' \
- -e 's/←/\←/g' \
- -e 's/→/\→/g' \
- -e 's/↔/\↔/g' {} \+ || die
-
- # fix help path #891879
- echo -e "\nVBOX_PATH_PACKAGE_DOCS=/usr/share/doc/${PF}" >> LocalConfig.kmk || die
-
- # 489208
- # Cannot patch the whole text, many translations. Use sed instead to replace the command
- find src/VBox/Frontends/VirtualBox/nls -name \*.ts -exec sed -i \
- 's/'[^&]*\(vboxdrv setup\|vboxconfig\)'/\'emerge -1 virtualbox-modules\'/' {} \+ || die
- sed -i "s:'/sbin/vboxconfig':'emerge -1 virtualbox-modules':" \
- src/VBox/Frontends/VirtualBox/src/main.cpp \
- src/VBox/VMM/VMMR3/VM.cpp || die
-
- # 890561
- echo -e "\nVBOX_GTAR=gtar" >> LocalConfig.kmk || die
-
- if ! use nls && ! use gui; then
- cat >> LocalConfig.kmk <<-EOF || die
- VBOX_WITH_NLS :=
- VBOX_WITH_MAIN_NLS :=
- VBOX_WITH_PUEL_NLS :=
- VBOX_WITH_VBOXMANAGE_NLS :=
- EOF
- fi
-}
-
-src_configure() {
- tc-export AR CC CXX LD RANLIB
- export HOST_CC="$(tc-getBUILD_CC)"
-
- local myconf=(
- --with-gcc="$(tc-getCC)"
- --with-g++="$(tc-getCXX)"
-
- --disable-kmods
-
- $(usev !alsa --disable-alsa)
- $(usev !dbus --disable-dbus)
- $(usev debug --build-debug)
- $(usev !doc --disable-docs)
- $(usev !java --disable-java)
- $(usev !lvm --disable-devmapper)
- $(usev !pulseaudio --disable-pulse)
- $(usev !python --disable-python)
- $(usev vboxwebsrv --enable-webservice)
- $(usev vde --enable-vde)
- $(usev !vmmraw --disable-vmmraw)
- $(usev vnc --enable-vnc)
- )
-
- if use gui || use sdl || use opengl; then
- myconf+=(
- $(usev !opengl --disable-opengl)
- $(usev !gui --disable-qt)
- $(usev !sdl --disable-sdl)
- )
- else
- myconf+=(
- --build-headless
- )
- fi
-
- if use amd64 && ! has_multilib_profile; then
- myconf+=( --disable-vmmraw )
- fi
-
- # not an autoconf script
- edo ./configure "${myconf[@]}"
-
- # Force usage of chosen Python implementation
- # bug #856121, bug #785835
- sed -i \
- -e '/VBOX_WITH_PYTHON.*=/d' \
- -e '/VBOX_PATH_PYTHON_INC.*=/d' \
- -e '/VBOX_LIB_PYTHON.*=/d' \
- AutoConfig.kmk || die
-
- if use python; then
- cat >> AutoConfig.kmk <<-EOF || die
- VBOX_WITH_PYTHON=$(usev python 1)
- VBOX_PATH_PYTHON_INC=$(python_get_includedir)
- VBOX_LIB_PYTHON=$(python_get_library_path)
- EOF
-
- local mangled_python="${EPYTHON#python}"
- mangled_python="${mangled_python/.}"
-
- # Stub out the script which defines what the Makefile ends up
- # building for. gen_python_deps.py gets called by the Makefile
- # with some args and it spits out a bunch of paths for a hardcoded
- # list of Pythons. We just override it with what we're actually using.
- # This minimises the amount of patching we have to do for new Pythons.
- cat > src/libs/xpcom18a4/python/gen_python_deps.py <<-EOF || die
- print("VBOX_PYTHON${mangled_python}_INC=$(python_get_includedir)")
- print("VBOX_PYTHON${mangled_python}_LIB=$(python_get_library_path)")
- print("VBOX_PYTHONDEF_INC=$(python_get_includedir)")
- print("VBOX_PYTHONDEF_LIB=$(python_get_library_path)")
- EOF
-
- chmod +x src/libs/xpcom18a4/python/gen_python_deps.py || die
- else
- cat >> AutoConfig.kmk <<-EOF || die
- VBOX_WITH_PYTHON:=
- EOF
- fi
-}
-
-src_compile() {
- source ./env.sh || die
-
- # Force kBuild to respect C[XX]FLAGS and MAKEOPTS (bug #178529)
- MAKEJOBS=$(grep -Eo '(\-j|\-\-jobs)(=?|[[:space:]]*)[[:digit:]]+' <<< ${MAKEOPTS})
- MAKELOAD=$(grep -Eo '(\-l|\-\-load-average)(=?|[[:space:]]*)[[:digit:]]+' <<< ${MAKEOPTS})
- MAKEOPTS="${MAKEJOBS} ${MAKELOAD}"
-
- local myemakeargs=(
- VBOX_BUILD_PUBLISHER=_Gentoo
- VBOX_WITH_VBOXIMGMOUNT=1
-
- KBUILD_VERBOSE=2
-
- AS="$(tc-getCC)"
- CC="$(tc-getCC)"
- CXX="$(tc-getCXX)"
-
- TOOL_GCC3_CC="$(tc-getCC)"
- TOOL_GCC3_LD="$(tc-getCC)"
- TOOL_GCC3_AS="$(tc-getCC)"
- TOOL_GCC3_AR="$(tc-getAR)"
- TOOL_GCC3_OBJCOPY="$(tc-getOBJCOPY)"
-
- TOOL_GXX3_CC="$(tc-getCC)"
- TOOL_GXX3_CXX="$(tc-getCXX)"
- TOOL_GXX3_LD="$(tc-getCXX)"
- TOOL_GXX3_AS="$(tc-getCXX)"
- TOOL_GXX3_AR="$(tc-getAR)"
- TOOL_GXX3_OBJCOPY="$(tc-getOBJCOPY)"
-
- TOOL_GCC3_CFLAGS="${CFLAGS}"
- TOOL_GCC3_CXXFLAGS="${CXXFLAGS}"
- VBOX_GCC_OPT="${CXXFLAGS}"
- VBOX_NM="$(tc-getNM)"
-
- TOOL_YASM_AS=yasm
- )
-
- if use amd64 && has_multilib_profile; then
- myemakeargs+=(
- CC32="$(tc-getCC) -m32"
- CXX32="$(tc-getCXX) -m32"
-
- TOOL_GCC32_CC="$(tc-getCC) -m32"
- TOOL_GCC32_CXX="$(tc-getCXX) -m32"
- TOOL_GCC32_LD="$(tc-getCC) -m32"
- TOOL_GCC32_AS="$(tc-getCC) -m32"
- TOOL_GCC32_AR="$(tc-getAR)"
- TOOL_GCC32_OBJCOPY="$(tc-getOBJCOPY)"
-
- TOOL_GXX32_CC="$(tc-getCC) -m32"
- TOOL_GXX32_CXX="$(tc-getCXX) -m32"
- TOOL_GXX32_LD="$(tc-getCXX) -m32"
- TOOL_GXX32_AS="$(tc-getCXX) -m32"
- TOOL_GXX32_AR="$(tc-getAR)"
- TOOL_GXX32_OBJCOPY="$(tc-getOBJCOPY)"
- )
- fi
-
- if use doc; then
- # dita needs to write to ~/.fop and ~/.java
- # but it ignores ${HOME} and tries to write to the real home of user portage
- # resulting in a sandbox violation
- # -Duser.home= does not work
- # force using the temporary homedir with nss_wrapper
- echo "${LOGNAME}::$(id -u):$(id -g):${USER}:${HOME}:/bin/bash" >> ~/passwd
- echo "${LOGNAME}::$(id -g):" >> ~/group
-
- local -x LD_PRELOAD=libnss_wrapper.so
- local -x NSS_WRAPPER_PASSWD="${HOME}"/passwd
- local -x NSS_WRAPPER_GROUP="${HOME}"/group
- fi
-
- MAKE="kmk" emake "${myemakeargs[@]}" all
-}
-
-src_test() {
- if use python; then
- local -x VBOX_APP_HOME="${S}"/out/linux.${ARCH}/$(usex debug debug release)
- local -x VBOX_INSTALL_PATH="${VBOX_APP_HOME}"
- local -x VBOX_PROGRAM_PATH="${VBOX_APP_HOME}"/bin
- local -x VBOX_SDK_PATH="${VBOX_PROGRAM_PATH}"/sdk
- local -x PYTHONPATH="${VBOX_SDK_PATH}"/installer/python/vboxapi/src
- einfo "VBOX_APP_HOME ${VBOX_APP_HOME}"
- einfo "VBOX_PROGRAM_PATH ${VBOX_PROGRAM_PATH}"
- einfo "VBOX_SDK_PATH ${VBOX_SDK_PATH}"
- einfo "PYTHONPATH ${PYTHONPATH}"
- LD_LIBRARY_PATH="${VBOX_PROGRAM_PATH}" epytest test/
- fi
-}
-
-src_install() {
- cd "${S}"/out/linux.${ARCH}/$(usex debug debug release)/bin || die
-
- local vbox_inst_path="/usr/$(get_libdir)/${PN}" each size ico icofile
-
- vbox_inst() {
- local binary="${1}"
- local perms="${2:-0750}"
- local path="${3:-${vbox_inst_path}}"
-
- [[ -n "${binary}" ]] || die "vbox_inst: No binary given!"
- [[ ${perms} =~ ^[[:digit:]]+{4}$ ]] || die "vbox_inst: perms must consist of four digits."
-
- insinto ${path}
- doins ${binary}
- fowners root:vboxusers ${path}/${binary}
- fperms ${perms} ${path}/${binary}
- }
-
- # Create configuration files
- insinto /etc/vbox
- newins "${FILESDIR}/${PN}-4-config" vbox.cfg
-
- # Set the correct libdir
- sed \
- -e "s@MY_LIBDIR@$(get_libdir)@" \
- -i "${ED}"/etc/vbox/vbox.cfg || die "vbox.cfg sed failed"
-
- # Install the wrapper script
- exeinto ${vbox_inst_path}
- newexe "${FILESDIR}/${PN}-ose-6-wrapper" "VBox"
- fowners root:vboxusers ${vbox_inst_path}/VBox
- fperms 0750 ${vbox_inst_path}/VBox
-
- # Install binaries and libraries
- insinto ${vbox_inst_path}
- doins -r components
-
- for each in VBox{Autostart,BalloonCtrl,BugReport,CpuReport,ExtPackHelperApp,Manage,SVC,VMMPreload} \
- vboximg-mount vbox-img *so *r0; do
- vbox_inst ${each}
- done
-
- # These binaries need to be suid root.
- for each in VBox{Headless,Net{AdpCtl,DHCP,NAT}} ; do
- vbox_inst ${each} 4750
- done
-
- # Install EFI Firmware files (bug #320757)
- for each in VBoxEFI{32,64}.fd ; do
- vbox_inst ${each} 0644
- done
-
- # VBoxSVC and VBoxManage need to be pax-marked (bug #403453)
- # VBoxXPCOMIPCD (bug #524202)
- for each in VBox{Headless,Manage,SVC,XPCOMIPCD} ; do
- pax-mark -m "${ED}"${vbox_inst_path}/${each}
- done
-
- # Symlink binaries to the shipped wrapper
- for each in vbox{autostart,balloonctrl,bugreport,headless,manage} \
- VBox{Autostart,BalloonCtrl,BugReport,Headless,Manage,VRDP} ; do
- dosym ${vbox_inst_path}/VBox /usr/bin/${each}
- done
- dosym ${vbox_inst_path}/vboximg-mount /usr/bin/vboximg-mount
- dosym ${vbox_inst_path}/vbox-img /usr/bin/vbox-img
-
- if use pam; then
- # VRDPAuth only works with this (bug #351949)
- dosym VBoxAuth.so ${vbox_inst_path}/VRDPAuth.so
- fi
-
- # set an env-variable for 3rd party tools
- echo "VBOX_APP_HOME=${vbox_inst_path}" > "${T}/90virtualbox"
- # environment variables used during SDK binding installation
- echo "VBOX_SDK_PATH=${vbox_inst_path}/sdk" >> "${T}/90virtualbox"
- echo "VBOX_INSTALL_PATH=${vbox_inst_path}" >> "${T}/90virtualbox"
- doenvd "${T}/90virtualbox"
-
- if use sdl; then
- vbox_inst VBoxSDL 4750
- pax-mark -m "${ED}"${vbox_inst_path}/VBoxSDL
-
- for each in vboxsdl VBoxSDL ; do
- dosym ${vbox_inst_path}/VBox /usr/bin/${each}
- done
- fi
-
- if use gui; then
- vbox_inst VirtualBox
- vbox_inst VirtualBoxVM 4750
- for each in VirtualBox{,VM} ; do
- pax-mark -m "${ED}"${vbox_inst_path}/${each}
- done
-
- for each in virtualbox{,vm} VirtualBox{,VM} ; do
- dosym ${vbox_inst_path}/VBox /usr/bin/${each}
- done
-
- insinto /usr/share/${PN}
- doins -r nls
- doins -r UnattendedTemplates
-
- domenu ${PN}.desktop
-
- pushd "${S}"/src/VBox/Artwork/OSE &>/dev/null || die
- for size in 16 32 48 64 128 ; do
- newicon -s ${size} ${PN}-${size}px.png ${PN}.png
- done
- newicon ${PN}-48px.png ${PN}.png
- doicon -s scalable ${PN}.svg
- popd &>/dev/null || die
- pushd "${S}"/src/VBox/Artwork/other &>/dev/null || die
- for size in 16 24 32 48 64 72 96 128 256 512 ; do
- for ico in hdd ova ovf vbox{,-extpack} vdi vdh vmdk ; do
- icofile="${PN}-${ico}-${size}px.png"
- if [[ -f "${icofile}" ]]; then
- newicon -s ${size} ${icofile} ${PN}-${ico}.png
- fi
- done
- done
- popd &>/dev/null || die
- fi
-
- if use lvm; then
- vbox_inst VBoxVolInfo 4750
- dosym ${vbox_inst_path}/VBoxVolInfo /usr/bin/VBoxVolInfo
- fi
-
- if use sdk; then
- insinto ${vbox_inst_path}
- doins -r sdk
-
- if use java; then
- java-pkg_regjar "${ED}/${vbox_inst_path}/sdk/bindings/xpcom/java/vboxjxpcom.jar"
- java-pkg_regso "${ED}/${vbox_inst_path}/libvboxjxpcom.so"
- fi
- fi
-
- if use udev; then
- local udevdir="$(get_udevdir)"
- local udev_file="VBoxCreateUSBNode.sh"
- local rules_file="10-virtualbox.rules"
-
- insinto ${udevdir}
- doins ${udev_file}
- fowners root:vboxusers ${udevdir}/${udev_file}
- fperms 0750 ${udevdir}/${udev_file}
-
- insinto ${udevdir}/rules.d
- sed "s@%UDEVDIR%@${udevdir}@" "${FILESDIR}"/${rules_file} \
- > "${T}"/${rules_file} || die
- doins "${T}"/${rules_file}
- fi
-
- if use vboxwebsrv; then
- vbox_inst vboxwebsrv
- dosym ${vbox_inst_path}/VBox /usr/bin/vboxwebsrv
- newinitd "${FILESDIR}"/vboxwebsrv-initd vboxwebsrv
- newconfd "${FILESDIR}"/vboxwebsrv-confd vboxwebsrv
- fi
-
- # Remove dead symlinks (bug #715338)
- find "${ED}"/usr/$(get_libdir)/${PN} -xtype l -delete || die
-
- # Fix version string in extensions or else they don't get accepted
- # by the virtualbox host process (see bug #438930)
- find ExtensionPacks -type f -name "ExtPack.xml" -exec sed -i '/Version/s@_Gentoo@@' {} \+ || die
-
- local extensions_dir="${vbox_inst_path}/ExtensionPacks"
-
- if use vnc; then
- insinto ${extensions_dir}
- doins -r ExtensionPacks/VNC
- fi
-
- if use dtrace; then
- insinto ${extensions_dir}
- doins -r ExtensionPacks/Oracle_VBoxDTrace_Extension_Pack
- fi
-
- if use doc; then
- dodoc UserManual.pdf UserManual.q{ch,hc}
- docompress -x /usr/share/doc/${PF}
- elif use gui; then
- dodoc "${WORKDIR}"/${PN}-help-${HELP_PV}/UserManual.q{ch,hc}
- docompress -x /usr/share/doc/${PF}
- fi
-
- if use python; then
- local python_path_ext="${ED}/usr/$(get_libdir)/virtualbox/VBoxPython3.so"
- if [[ ! -x "${python_path_ext}" ]]; then
- eerror "Couldn't find ${python_path_ext}! Bindings were requested with USE=python"
- eerror "but none were installed. This may happen if support for a Python target"
- eerror "(listed in PYTHON_COMPAT in the ebuild) is incomplete within the Makefiles."
- die "Incomplete installation of Python bindings! File a bug with Gentoo!"
- fi
-
- # 378871
- local installer_dir="${ED}/usr/$(get_libdir)/virtualbox/sdk/installer/python/vboxapi/src"
- pushd "${installer_dir}" &> /dev/null || die
- sed -e "s;%VBOX_INSTALL_PATH%;${vbox_inst_path};" \
- -e "s;%VBOX_SDK_PATH%;${vbox_inst_path}/sdk;" \
- -i vboxapi/__init__.py || die
- # insert shebang, the files come without one
- find vboxapi -name \*.py -exec sed -e "1 i\#! ${PYTHON}" -i {} \+ || die
- python_domodule vboxapi
- popd &> /dev/null || die
-
- # upstream added a /bin/sh stub here
- # use /usr/bin/python3, python_doscript will take care of it
- sed -e '1 i #! /usr/bin/python3' -i vboxshell.py
- python_doscript vboxshell.py
-
- # do not install the installer
- rm -r "${installer_dir%vboxapi*}" || die
- fi
-
- newtmpfiles "${FILESDIR}"/${PN}-vboxusb_tmpfilesd ${PN}-vboxusb.conf
-}
-
-pkg_postinst() {
- xdg_pkg_postinst
-
- if use udev; then
- udev_reload
- udevadm trigger --subsystem-match=usb
- fi
-
- tmpfiles_process virtualbox-vboxusb.conf
-
- if use gui; then
- elog "To launch VirtualBox just type: \"virtualbox\"."
- fi
-
- elog "You must be in the vboxusers group to use VirtualBox."
- elog ""
- elog "The latest user manual is available for download at:"
- elog "https://download.virtualbox.org/virtualbox/${PV}/UserManual.pdf"
- elog ""
-
- optfeature "Advanced networking setups" net-misc/bridge-utils sys-apps/usermode-utilities
- optfeature "USB2, USB3, PXE boot, and VRDP support" app-emulation/virtualbox-extpack-oracle
- optfeature "Guest additions ISO" app-emulation/virtualbox-additions
-
- if ! use udev; then
- ewarn "Without USE=udev, USB devices will likely not work in ${PN}."
- fi
-}
-
-pkg_postrm() {
- xdg_pkg_postrm
-
- use udev && udev_reload
-}
diff --git a/app-emulation/virtualbox/virtualbox-7.1.6a.ebuild b/app-emulation/virtualbox/virtualbox-7.1.6a.ebuild
deleted file mode 100644
index 9dc47be1..00000000
--- a/app-emulation/virtualbox/virtualbox-7.1.6a.ebuild
+++ /dev/null
@@ -1,776 +0,0 @@
-# Copyright 2022-2025 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-# To add a new Python here:
-# 1. Patch src/libs/xpcom18a4/python/Makefile.kmk (copy the previous impl's logic)
-# Do NOT skip this part. It'll end up silently not-building the Python extension
-# or otherwise misbehaving if you do.
-#
-# 2. Then update PYTHON_COMPAT & set PYTHON_SINGLE_TARGET for testing w/ USE=python.
-#
-# May need to look at other distros (e.g. Arch Linux) to find patches for newer
-# Python versions as upstream tends to lag. Upstream may have patches on their
-# trunk branch but not release branch.
-#
-# See bug #785835, bug #856121.
-PYTHON_COMPAT=( python3_{10..12} )
-
-inherit desktop edo flag-o-matic java-pkg-opt-2 linux-info multilib optfeature pax-utils \
- python-single-r1 tmpfiles toolchain-funcs udev xdg
-
-MY_PN="VirtualBox"
-MY_P=${MY_PN}-${PV}
-HELP_PV=${PV}
-
-DESCRIPTION="Family of powerful x86 virtualization products for enterprise and home use"
-HOMEPAGE="https://www.virtualbox.org/"
-SRC_URI="
- https://download.virtualbox.org/virtualbox/${PV%*a}/${MY_P}.tar.bz2
- https://gitweb.gentoo.org/proj/virtualbox-patches.git/snapshot/virtualbox-patches-7.1.4-r1.tar.bz2
- gui? ( !doc? ( https://dev.gentoo.org/~ceamac/${CATEGORY}/${PN}/${PN}-help-${HELP_PV}.tar.xz ) )
-"
-S="${WORKDIR}/${MY_PN}-${PV%*a}"
-
-LICENSE="GPL-2+ GPL-3 LGPL-2.1 MIT dtrace? ( CDDL )"
-SLOT="0/$(ver_cut 1-2)"
-KEYWORDS="~amd64"
-IUSE="alsa dbus debug doc dtrace +gui java lvm nls pam pch pulseaudio +opengl python +sdk +sdl test +udev vboxwebsrv vde +vmmraw vnc"
-RESTRICT="!test? ( test )"
-
-unset WATCOM #856769
-
-COMMON_DEPEND="
- acct-group/vboxusers
- app-arch/xz-utils
- ~app-emulation/virtualbox-modules-${PV%*a}
- dev-libs/libtpms
- dev-libs/libxml2
- dev-libs/openssl:0=
- media-libs/libpng:0=
- media-libs/libvpx:0=
- net-misc/curl
- sys-libs/zlib
- dbus? ( sys-apps/dbus )
- gui? (
- dev-qt/qtbase:6[X,widgets]
- dev-qt/qtscxml:6
- dev-qt/qttools:6[assistant]
- x11-libs/libX11
- x11-libs/libXt
- )
- lvm? ( sys-fs/lvm2 )
- opengl? (
- media-libs/libglvnd[X]
- media-libs/vulkan-loader
- x11-libs/libX11
- x11-libs/libXt
- )
- pam? ( sys-libs/pam )
- python? ( ${PYTHON_DEPS} )
- sdl? (
- media-libs/libsdl2[X,video]
- x11-libs/libX11
- x11-libs/libXt
- )
- vboxwebsrv? ( net-libs/gsoap[-gnutls(-),debug?] )
- vde? ( net-misc/vde )
- vnc? ( >=net-libs/libvncserver-0.9.9 )
-"
-# We're stuck on JDK (and JRE, I guess?) 1.8 because of need for wsimport
-# with USE="vboxwebsrv java". Note that we have to put things in DEPEND,
-# not (only, anyway) BDEPEND, as the eclass magic to set the environment variables
-# based on *DEPEND doesn't work for BDEPEND at least right now.
-#
-# There's a comment in Config.kmk about it
-# ("With Java 11 wsimport was removed, usually part of a separate install now.")
-# but it needs more investigation.
-#
-# See bug #878299 to track this issue.
-DEPEND="
- ${COMMON_DEPEND}
- >=dev-libs/libxslt-1.1.19
- virtual/libcrypt:=
- x11-libs/libXt
- alsa? ( >=media-libs/alsa-lib-1.0.13 )
- gui? (
- x11-base/xorg-proto
- x11-libs/libxcb:=
- x11-libs/libXcursor
- x11-libs/libXext
- x11-libs/libXinerama
- x11-libs/libXmu
- x11-libs/libXrandr
- )
- java? ( virtual/jdk:1.8 )
- opengl? (
- x11-base/xorg-proto
- x11-libs/libXcursor
- x11-libs/libXinerama
- x11-libs/libXmu
- x11-libs/libXrandr
- virtual/glu
- )
- sdl? (
- x11-libs/libXcursor
- x11-libs/libXinerama
- )
- pulseaudio? ( media-libs/libpulse )
- udev? ( >=virtual/udev-171 )
-"
-RDEPEND="
- ${COMMON_DEPEND}
- gui? ( x11-libs/libxcb:= )
- java? ( virtual/jre:1.8 )
-"
-BDEPEND="
- >=app-arch/tar-1.34-r2
- >=dev-lang/yasm-0.6.2
- dev-libs/libIDL
- dev-util/glslang
- >=dev-build/kbuild-0.1.9998.3592
- sys-apps/which
- sys-devel/bin86
- sys-libs/libcap
- sys-power/iasl
- virtual/pkgconfig
- doc? (
- app-doc/dita-ot-bin
- app-text/docbook-sgml-dtd:4.4
- app-text/docbook-xsl-ns-stylesheets
- dev-texlive/texlive-basic
- dev-texlive/texlive-latex
- dev-texlive/texlive-latexrecommended
- dev-texlive/texlive-latexextra
- dev-texlive/texlive-fontsrecommended
- dev-texlive/texlive-fontsextra
- dev-qt/qttools:6[assistant]
- sys-libs/nss_wrapper
- )
- gui? ( dev-qt/qttools:6[linguist] )
- nls? ( dev-qt/qttools:6[linguist] )
- java? ( virtual/jdk:1.8 )
- python? (
- ${PYTHON_DEPS}
- test? (
- $(python_gen_cond_dep '
- dev-python/pytest[${PYTHON_USEDEP}]
- ')
- )
- )
-"
-
-QA_FLAGS_IGNORED="
- usr/lib64/virtualbox/VBoxDDR0.r0
- usr/lib64/virtualbox/VMMR0.r0
- usr/lib64/virtualbox/ExtensionPacks/Oracle_VBoxDTrace_Extension_Pack/linux.amd64/VBoxDTraceR0.r0
- usr/lib64/virtualbox/ExtensionPacks/Oracle_VBoxDTrace_Extension_Pack/linux.amd64/VBoxDTraceR0.debug
-"
-
-QA_TEXTRELS="
- usr/lib64/virtualbox/VMMR0.r0
- usr/lib64/virtualbox/ExtensionPacks/Oracle_VBoxDTrace_Extension_Pack/linux.amd64/VBoxDTraceR0.r0
-"
-
-QA_EXECSTACK="
- usr/lib64/virtualbox/iPxeBaseBin
- usr/lib64/virtualbox/VMMR0.r0
- usr/lib64/virtualbox/VBoxDDR0.r0
- usr/lib64/virtualbox/ExtensionPacks/Oracle_VBoxDTrace_Extension_Pack/linux.amd64/VBoxDTraceR0.r0
- usr/lib64/virtualbox/ExtensionPacks/Oracle_VBoxDTrace_Extension_Pack/linux.amd64/VBoxDTraceR0.debug
-"
-
-QA_WX_LOAD="
- usr/lib64/virtualbox/iPxeBaseBin
-"
-
-QA_PRESTRIPPED="
- usr/lib64/virtualbox/VMMR0.r0
- usr/lib64/virtualbox/VBoxDDR0.r0
- usr/lib64/virtualbox/ExtensionPacks/Oracle_VBoxDTrace_Extension_Pack/linux.amd64/VBoxDTraceR0.r0
-"
-
-REQUIRED_USE="
- java? ( sdk )
- python? ( sdk ${PYTHON_REQUIRED_USE} )
- vboxwebsrv? ( java )
-"
-
-PATCHES=(
- # Downloaded patchset
- "${WORKDIR}"/virtualbox-patches-7.1.4-r1/patches
-)
-
-pkg_pretend() {
- if ! use gui; then
- einfo "No USE=\"gui\" selected, this build will not include any Qt frontend."
- fi
-
- if ! use opengl; then
- einfo "No USE=\"opengl\" selected, this build will lack"
- einfo "the OpenGL feature."
- fi
- if ! use nls && use gui; then
- einfo "USE=\"gui\" also selects USE=\"nls\". This build"
- einfo "will have NLS support."
- fi
-
- # 749273
- local d=${ROOT}
- for i in usr "$(get_libdir)"; do
- d="${d}/$i"
- if [[ "$(stat -L -c "%g %u" "${d}")" != "0 0" ]]; then
- die "${d} should be owned by root, VirtualBox will not start otherwise"
- fi
- done
-}
-
-pkg_setup() {
- java-pkg-opt-2_pkg_setup
- use python && python-single-r1_pkg_setup
-}
-
-src_prepare() {
- default
-
- if use python; then
- mkdir test
- cp "${FILESDIR}"/test_python.py test/
- python_fix_shebang test/test_python.py
- fi
-
- # Only add nopie patch when we're on hardened
- if gcc-specs-pie; then
- eapply "${FILESDIR}"/050_virtualbox-5.2.8-nopie.patch
- fi
-
- # Remove shipped binaries (kBuild, yasm) and tools, see bug #232775
- rm -r kBuild/bin || die
- # Remove everything in tools except kBuildUnits
- find tools -mindepth 1 -maxdepth 1 -name kBuildUnits -prune -o -exec rm -r {} \+ || die
-
- # Disable things unused or split into separate ebuilds
- sed -e "s@MY_LIBDIR@$(get_libdir)@" \
- "${FILESDIR}"/${PN}-5-localconfig > LocalConfig.kmk || die
-
- if ! use pch; then
- # bug #753323
- printf '\n%s\n' "VBOX_WITHOUT_PRECOMPILED_HEADERS=1" \
- >> LocalConfig.kmk || die
- fi
-
- # bug #916002, #488176, #925347
- tc-ld-is-mold || tc-ld-force-bfd
-
- # Respect LDFLAGS
- sed -e "s@_LDFLAGS\.${ARCH}*.*=@& ${LDFLAGS}@g" \
- -i Config.kmk src/libs/xpcom18a4/Config.kmk || die
-
- # Do not use hard-coded ld (related to bug #488176)
- sed -e '/QUIET)ld /s@ld @$(LD) @' \
- -i src/VBox/Devices/PC/ipxe/Makefile.kmk || die
-
- # Use PAM only when pam USE flag is enbaled (bug #376531)
- if ! use pam; then
- einfo "Disabling PAM removes the possibility to use the VRDP features."
- sed -i 's@^.*VBOX_WITH_PAM@#VBOX_WITH_PAM@' Config.kmk || die
- sed -i 's@\(.*/auth/Makefile.kmk.*\)@#\1@' \
- src/VBox/HostServices/Makefile.kmk || die
- echo -e "\nIPRT_WITHOUT_PAM=1" >> LocalConfig.kmk || die
- fi
-
- # add correct java path
- if use java; then
- sed "s@/usr/lib/jvm/java-6-sun@$(java-config -O)@" \
- -i "${S}"/Config.kmk || die
- java-pkg-opt-2_src_prepare
- fi
-
- # bug #940482
- filter-flags -fno-plt
-
- # bug #908814
- filter-lto
-
- # bug #843437
- cat >> LocalConfig.kmk <<-EOF || die
- CXXFLAGS=${CXXFLAGS}
- CFLAGS=${CFLAGS}
- EOF
-
- if use sdl; then
- sed -i 's/sdl-config/sdl2-config/' configure || die
- echo -e "\nVBOX_WITH_VBOXSDL=1" >> LocalConfig.kmk || die
- fi
-
- #443830
- echo -e "\nVBOX_WITH_VBOX_IMG=1" >> LocalConfig.kmk || die
-
- if tc-is-clang; then
- # clang does not support this extension
- eapply "${FILESDIR}"/${PN}-7.1.0-disable-rebuild-iPxeBiosBin.patch
- fi
-
- # fix doc generation
- echo -e "\nVBOX_PATH_DOCBOOK=/usr/share/sgml/docbook/xsl-ns-stylesheets" >> LocalConfig.kmk || die
- # replace xhtml names with numeric equivalents
- find doc/manual -name \*.xml -exec sed -i \
- -e 's/ /\ /g' \
- -e 's/–/\–/g' \
- -e 's/←/\←/g' \
- -e 's/→/\→/g' \
- -e 's/↔/\↔/g' {} \+ || die
-
- # fix help path #891879
- echo -e "\nVBOX_PATH_PACKAGE_DOCS=/usr/share/doc/${PF}" >> LocalConfig.kmk || die
-
- # 489208
- # Cannot patch the whole text, many translations. Use sed instead to replace the command
- find src/VBox/Frontends/VirtualBox/nls -name \*.ts -exec sed -i \
- 's/'[^&]*\(vboxdrv setup\|vboxconfig\)'/\'emerge -1 virtualbox-modules\'/' {} \+ || die
- sed -i "s:'/sbin/vboxconfig':'emerge -1 virtualbox-modules':" \
- src/VBox/Frontends/VirtualBox/src/main.cpp \
- src/VBox/VMM/VMMR3/VM.cpp || die
-
- # 890561
- echo -e "\nVBOX_GTAR=gtar" >> LocalConfig.kmk || die
-
- if ! use nls && ! use gui; then
- cat >> LocalConfig.kmk <<-EOF || die
- VBOX_WITH_NLS :=
- VBOX_WITH_MAIN_NLS :=
- VBOX_WITH_PUEL_NLS :=
- VBOX_WITH_VBOXMANAGE_NLS :=
- EOF
- fi
-}
-
-src_configure() {
- tc-export AR CC CXX LD RANLIB
- export HOST_CC="$(tc-getBUILD_CC)"
-
- local myconf=(
- --with-gcc="$(tc-getCC)"
- --with-g++="$(tc-getCXX)"
-
- --disable-kmods
-
- $(usev !alsa --disable-alsa)
- $(usev !dbus --disable-dbus)
- $(usev debug --build-debug)
- $(usev !doc --disable-docs)
- $(usev !java --disable-java)
- $(usev !lvm --disable-devmapper)
- $(usev !pulseaudio --disable-pulse)
- $(usev !python --disable-python)
- $(usev vboxwebsrv --enable-webservice)
- $(usev vde --enable-vde)
- $(usev !vmmraw --disable-vmmraw)
- $(usev vnc --enable-vnc)
- )
-
- if use gui || use sdl || use opengl; then
- myconf+=(
- $(usev !opengl --disable-opengl)
- $(usev !gui --disable-qt)
- $(usev !sdl --disable-sdl)
- )
- else
- myconf+=(
- --build-headless
- )
- fi
-
- if use amd64 && ! has_multilib_profile; then
- myconf+=( --disable-vmmraw )
- fi
-
- # not an autoconf script
- edo ./configure "${myconf[@]}"
-
- # Force usage of chosen Python implementation
- # bug #856121, bug #785835
- sed -i \
- -e '/VBOX_WITH_PYTHON.*=/d' \
- -e '/VBOX_PATH_PYTHON_INC.*=/d' \
- -e '/VBOX_LIB_PYTHON.*=/d' \
- AutoConfig.kmk || die
-
- if use python; then
- cat >> AutoConfig.kmk <<-EOF || die
- VBOX_WITH_PYTHON=$(usev python 1)
- VBOX_PATH_PYTHON_INC=$(python_get_includedir)
- VBOX_LIB_PYTHON=$(python_get_library_path)
- EOF
-
- local mangled_python="${EPYTHON#python}"
- mangled_python="${mangled_python/.}"
-
- # Stub out the script which defines what the Makefile ends up
- # building for. gen_python_deps.py gets called by the Makefile
- # with some args and it spits out a bunch of paths for a hardcoded
- # list of Pythons. We just override it with what we're actually using.
- # This minimises the amount of patching we have to do for new Pythons.
- cat > src/libs/xpcom18a4/python/gen_python_deps.py <<-EOF || die
- print("VBOX_PYTHON${mangled_python}_INC=$(python_get_includedir)")
- print("VBOX_PYTHON${mangled_python}_LIB=$(python_get_library_path)")
- print("VBOX_PYTHONDEF_INC=$(python_get_includedir)")
- print("VBOX_PYTHONDEF_LIB=$(python_get_library_path)")
- EOF
-
- chmod +x src/libs/xpcom18a4/python/gen_python_deps.py || die
- else
- cat >> AutoConfig.kmk <<-EOF || die
- VBOX_WITH_PYTHON:=
- EOF
- fi
-}
-
-src_compile() {
- source ./env.sh || die
-
- # Force kBuild to respect C[XX]FLAGS and MAKEOPTS (bug #178529)
- MAKEJOBS=$(grep -Eo '(\-j|\-\-jobs)(=?|[[:space:]]*)[[:digit:]]+' <<< ${MAKEOPTS})
- MAKELOAD=$(grep -Eo '(\-l|\-\-load-average)(=?|[[:space:]]*)[[:digit:]]+' <<< ${MAKEOPTS})
- MAKEOPTS="${MAKEJOBS} ${MAKELOAD}"
-
- local myemakeargs=(
- VBOX_BUILD_PUBLISHER=_Gentoo
- VBOX_WITH_VBOXIMGMOUNT=1
-
- KBUILD_VERBOSE=2
-
- AS="$(tc-getCC)"
- CC="$(tc-getCC)"
- CXX="$(tc-getCXX)"
-
- TOOL_GCC3_CC="$(tc-getCC)"
- TOOL_GCC3_LD="$(tc-getCC)"
- TOOL_GCC3_AS="$(tc-getCC)"
- TOOL_GCC3_AR="$(tc-getAR)"
- TOOL_GCC3_OBJCOPY="$(tc-getOBJCOPY)"
-
- TOOL_GXX3_CC="$(tc-getCC)"
- TOOL_GXX3_CXX="$(tc-getCXX)"
- TOOL_GXX3_LD="$(tc-getCXX)"
- TOOL_GXX3_AS="$(tc-getCXX)"
- TOOL_GXX3_AR="$(tc-getAR)"
- TOOL_GXX3_OBJCOPY="$(tc-getOBJCOPY)"
-
- TOOL_GCC3_CFLAGS="${CFLAGS}"
- TOOL_GCC3_CXXFLAGS="${CXXFLAGS}"
- VBOX_GCC_OPT="${CXXFLAGS}"
- VBOX_NM="$(tc-getNM)"
-
- TOOL_YASM_AS=yasm
- )
-
- if use amd64 && has_multilib_profile; then
- myemakeargs+=(
- CC32="$(tc-getCC) -m32"
- CXX32="$(tc-getCXX) -m32"
-
- TOOL_GCC32_CC="$(tc-getCC) -m32"
- TOOL_GCC32_CXX="$(tc-getCXX) -m32"
- TOOL_GCC32_LD="$(tc-getCC) -m32"
- TOOL_GCC32_AS="$(tc-getCC) -m32"
- TOOL_GCC32_AR="$(tc-getAR)"
- TOOL_GCC32_OBJCOPY="$(tc-getOBJCOPY)"
-
- TOOL_GXX32_CC="$(tc-getCC) -m32"
- TOOL_GXX32_CXX="$(tc-getCXX) -m32"
- TOOL_GXX32_LD="$(tc-getCXX) -m32"
- TOOL_GXX32_AS="$(tc-getCXX) -m32"
- TOOL_GXX32_AR="$(tc-getAR)"
- TOOL_GXX32_OBJCOPY="$(tc-getOBJCOPY)"
- )
- fi
-
- if use doc; then
- # dita needs to write to ~/.fop and ~/.java
- # but it ignores ${HOME} and tries to write to the real home of user portage
- # resulting in a sandbox violation
- # -Duser.home= does not work
- # force using the temporary homedir with nss_wrapper
- echo "${LOGNAME}::$(id -u):$(id -g):${USER}:${HOME}:/bin/bash" >> ~/passwd
- echo "${LOGNAME}::$(id -g):" >> ~/group
-
- local -x LD_PRELOAD=libnss_wrapper.so
- local -x NSS_WRAPPER_PASSWD="${HOME}"/passwd
- local -x NSS_WRAPPER_GROUP="${HOME}"/group
- fi
-
- MAKE="kmk" emake "${myemakeargs[@]}" all
-}
-
-src_test() {
- if use python; then
- local -x VBOX_APP_HOME="${S}"/out/linux.${ARCH}/$(usex debug debug release)
- local -x VBOX_INSTALL_PATH="${VBOX_APP_HOME}"
- local -x VBOX_PROGRAM_PATH="${VBOX_APP_HOME}"/bin
- local -x VBOX_SDK_PATH="${VBOX_PROGRAM_PATH}"/sdk
- local -x PYTHONPATH="${VBOX_SDK_PATH}"/installer/python/vboxapi/src
- einfo "VBOX_APP_HOME ${VBOX_APP_HOME}"
- einfo "VBOX_PROGRAM_PATH ${VBOX_PROGRAM_PATH}"
- einfo "VBOX_SDK_PATH ${VBOX_SDK_PATH}"
- einfo "PYTHONPATH ${PYTHONPATH}"
- LD_LIBRARY_PATH="${VBOX_PROGRAM_PATH}" epytest test/
- fi
-}
-
-src_install() {
- cd "${S}"/out/linux.${ARCH}/$(usex debug debug release)/bin || die
-
- local vbox_inst_path="/usr/$(get_libdir)/${PN}" each size ico icofile
-
- vbox_inst() {
- local binary="${1}"
- local perms="${2:-0750}"
- local path="${3:-${vbox_inst_path}}"
-
- [[ -n "${binary}" ]] || die "vbox_inst: No binary given!"
- [[ ${perms} =~ ^[[:digit:]]+{4}$ ]] || die "vbox_inst: perms must consist of four digits."
-
- insinto ${path}
- doins ${binary}
- fowners root:vboxusers ${path}/${binary}
- fperms ${perms} ${path}/${binary}
- }
-
- # Create configuration files
- insinto /etc/vbox
- newins "${FILESDIR}/${PN}-4-config" vbox.cfg
-
- # Set the correct libdir
- sed \
- -e "s@MY_LIBDIR@$(get_libdir)@" \
- -i "${ED}"/etc/vbox/vbox.cfg || die "vbox.cfg sed failed"
-
- # Install the wrapper script
- exeinto ${vbox_inst_path}
- newexe "${FILESDIR}/${PN}-ose-6-wrapper" "VBox"
- fowners root:vboxusers ${vbox_inst_path}/VBox
- fperms 0750 ${vbox_inst_path}/VBox
-
- # Install binaries and libraries
- insinto ${vbox_inst_path}
- doins -r components
-
- for each in VBox{Autostart,BalloonCtrl,BugReport,CpuReport,ExtPackHelperApp,Manage,SVC,VMMPreload} \
- vboximg-mount vbox-img *so *r0; do
- vbox_inst ${each}
- done
-
- # These binaries need to be suid root.
- for each in VBox{Headless,Net{AdpCtl,DHCP,NAT}} ; do
- vbox_inst ${each} 4750
- done
-
- # Install EFI Firmware files (bug #320757)
- for each in VBoxEFI{32,64}.fd ; do
- vbox_inst ${each} 0644
- done
-
- # VBoxSVC and VBoxManage need to be pax-marked (bug #403453)
- # VBoxXPCOMIPCD (bug #524202)
- for each in VBox{Headless,Manage,SVC,XPCOMIPCD} ; do
- pax-mark -m "${ED}"${vbox_inst_path}/${each}
- done
-
- # Symlink binaries to the shipped wrapper
- for each in vbox{autostart,balloonctrl,bugreport,headless,manage} \
- VBox{Autostart,BalloonCtrl,BugReport,Headless,Manage,VRDP} ; do
- dosym ${vbox_inst_path}/VBox /usr/bin/${each}
- done
- dosym ${vbox_inst_path}/vboximg-mount /usr/bin/vboximg-mount
- dosym ${vbox_inst_path}/vbox-img /usr/bin/vbox-img
-
- if use pam; then
- # VRDPAuth only works with this (bug #351949)
- dosym VBoxAuth.so ${vbox_inst_path}/VRDPAuth.so
- fi
-
- # set an env-variable for 3rd party tools
- echo "VBOX_APP_HOME=${vbox_inst_path}" > "${T}/90virtualbox"
- # environment variables used during SDK binding installation
- echo "VBOX_SDK_PATH=${vbox_inst_path}/sdk" >> "${T}/90virtualbox"
- echo "VBOX_INSTALL_PATH=${vbox_inst_path}" >> "${T}/90virtualbox"
- doenvd "${T}/90virtualbox"
-
- if use sdl; then
- vbox_inst VBoxSDL 4750
- pax-mark -m "${ED}"${vbox_inst_path}/VBoxSDL
-
- for each in vboxsdl VBoxSDL ; do
- dosym ${vbox_inst_path}/VBox /usr/bin/${each}
- done
- fi
-
- if use gui; then
- vbox_inst VirtualBox
- vbox_inst VirtualBoxVM 4750
- for each in VirtualBox{,VM} ; do
- pax-mark -m "${ED}"${vbox_inst_path}/${each}
- done
-
- for each in virtualbox{,vm} VirtualBox{,VM} ; do
- dosym ${vbox_inst_path}/VBox /usr/bin/${each}
- done
-
- insinto /usr/share/${PN}
- doins -r nls
- doins -r UnattendedTemplates
-
- domenu ${PN}.desktop
-
- pushd "${S}"/src/VBox/Artwork/OSE &>/dev/null || die
- for size in 16 32 48 64 128 ; do
- newicon -s ${size} ${PN}-${size}px.png ${PN}.png
- done
- newicon ${PN}-48px.png ${PN}.png
- doicon -s scalable ${PN}.svg
- popd &>/dev/null || die
- pushd "${S}"/src/VBox/Artwork/other &>/dev/null || die
- for size in 16 24 32 48 64 72 96 128 256 512 ; do
- for ico in hdd ova ovf vbox{,-extpack} vdi vdh vmdk ; do
- icofile="${PN}-${ico}-${size}px.png"
- if [[ -f "${icofile}" ]]; then
- newicon -s ${size} ${icofile} ${PN}-${ico}.png
- fi
- done
- done
- popd &>/dev/null || die
- fi
-
- if use lvm; then
- vbox_inst VBoxVolInfo 4750
- dosym ${vbox_inst_path}/VBoxVolInfo /usr/bin/VBoxVolInfo
- fi
-
- if use sdk; then
- insinto ${vbox_inst_path}
- doins -r sdk
-
- if use java; then
- java-pkg_regjar "${ED}/${vbox_inst_path}/sdk/bindings/xpcom/java/vboxjxpcom.jar"
- java-pkg_regso "${ED}/${vbox_inst_path}/libvboxjxpcom.so"
- fi
- fi
-
- if use udev; then
- local udevdir="$(get_udevdir)"
- local udev_file="VBoxCreateUSBNode.sh"
- local rules_file="10-virtualbox.rules"
-
- insinto ${udevdir}
- doins ${udev_file}
- fowners root:vboxusers ${udevdir}/${udev_file}
- fperms 0750 ${udevdir}/${udev_file}
-
- insinto ${udevdir}/rules.d
- sed "s@%UDEVDIR%@${udevdir}@" "${FILESDIR}"/${rules_file} \
- > "${T}"/${rules_file} || die
- doins "${T}"/${rules_file}
- fi
-
- if use vboxwebsrv; then
- vbox_inst vboxwebsrv
- dosym ${vbox_inst_path}/VBox /usr/bin/vboxwebsrv
- newinitd "${FILESDIR}"/vboxwebsrv-initd vboxwebsrv
- newconfd "${FILESDIR}"/vboxwebsrv-confd vboxwebsrv
- fi
-
- # Remove dead symlinks (bug #715338)
- find "${ED}"/usr/$(get_libdir)/${PN} -xtype l -delete || die
-
- # Fix version string in extensions or else they don't get accepted
- # by the virtualbox host process (see bug #438930)
- find ExtensionPacks -type f -name "ExtPack.xml" -exec sed -i '/Version/s@_Gentoo@@' {} \+ || die
-
- local extensions_dir="${vbox_inst_path}/ExtensionPacks"
-
- if use vnc; then
- insinto ${extensions_dir}
- doins -r ExtensionPacks/VNC
- fi
-
- if use dtrace; then
- insinto ${extensions_dir}
- doins -r ExtensionPacks/Oracle_VBoxDTrace_Extension_Pack
- fi
-
- if use doc; then
- dodoc UserManual.pdf UserManual.q{ch,hc}
- docompress -x /usr/share/doc/${PF}
- elif use gui; then
- dodoc "${WORKDIR}"/${PN}-help-${HELP_PV}/UserManual.q{ch,hc}
- docompress -x /usr/share/doc/${PF}
- fi
-
- if use python; then
- local python_path_ext="${ED}/usr/$(get_libdir)/virtualbox/VBoxPython3.so"
- if [[ ! -x "${python_path_ext}" ]]; then
- eerror "Couldn't find ${python_path_ext}! Bindings were requested with USE=python"
- eerror "but none were installed. This may happen if support for a Python target"
- eerror "(listed in PYTHON_COMPAT in the ebuild) is incomplete within the Makefiles."
- die "Incomplete installation of Python bindings! File a bug with Gentoo!"
- fi
-
- # 378871
- local installer_dir="${ED}/usr/$(get_libdir)/virtualbox/sdk/installer/python/vboxapi/src"
- pushd "${installer_dir}" &> /dev/null || die
- sed -e "s;%VBOX_INSTALL_PATH%;${vbox_inst_path};" \
- -e "s;%VBOX_SDK_PATH%;${vbox_inst_path}/sdk;" \
- -i vboxapi/__init__.py || die
- # insert shebang, the files come without one
- find vboxapi -name \*.py -exec sed -e "1 i\#! ${PYTHON}" -i {} \+ || die
- python_domodule vboxapi
- popd &> /dev/null || die
-
- # upstream added a /bin/sh stub here
- # use /usr/bin/python3, python_doscript will take care of it
- sed -e '1 i #! /usr/bin/python3' -i vboxshell.py
- python_doscript vboxshell.py
-
- # do not install the installer
- rm -r "${installer_dir%vboxapi*}" || die
- fi
-
- newtmpfiles "${FILESDIR}"/${PN}-vboxusb_tmpfilesd ${PN}-vboxusb.conf
-}
-
-pkg_postinst() {
- xdg_pkg_postinst
-
- if use udev; then
- udev_reload
- udevadm trigger --subsystem-match=usb
- fi
-
- tmpfiles_process virtualbox-vboxusb.conf
-
- if use gui; then
- elog "To launch VirtualBox just type: \"virtualbox\"."
- fi
-
- elog "You must be in the vboxusers group to use VirtualBox."
- elog ""
- elog "The latest user manual is available for download at:"
- elog "https://download.virtualbox.org/virtualbox/${PV}/UserManual.pdf"
- elog ""
-
- optfeature "Advanced networking setups" net-misc/bridge-utils sys-apps/usermode-utilities
- optfeature "USB2, USB3, PXE boot, and VRDP support" app-emulation/virtualbox-extpack-oracle
- optfeature "Guest additions ISO" app-emulation/virtualbox-additions
-
- if ! use udev; then
- ewarn "Without USE=udev, USB devices will likely not work in ${PN}."
- fi
-}
-
-pkg_postrm() {
- xdg_pkg_postrm
-
- use udev && udev_reload
-}
diff --git a/app-misc/syncterm/files/make_order.patch b/app-misc/syncterm/files/make_order.patch
new file mode 100644
index 00000000..0bee6e5c
--- /dev/null
+++ b/app-misc/syncterm/files/make_order.patch
@@ -0,0 +1,102 @@
+diff '--color=auto' -uNr syncterm-1.6.orig/src/build/Common.gmake syncterm-1.6/src/build/Common.gmake
+--- syncterm-1.6.orig/src/build/Common.gmake 2025-06-07 17:22:14.756859064 +0200
++++ syncterm-1.6/src/build/Common.gmake 2025-06-07 17:24:48.011474332 +0200
+@@ -533,6 +533,50 @@
+ endif
+ CFLAGS += -fno-delete-null-pointer-checks
+
++$(XPDEV_LIB): xpdev
++xpdev:
++ $(MAKE) -C $(XPDEV_SRC) lib
++
++$(XPDEV-MT_LIB): xpdev-mt
++xpdev-mt:
++ $(MAKE) -C $(XPDEV_SRC) mtlib
++
++$(ENCODE_LIB): encode
++encode:
++ $(MAKE) -C $(ENCODE_SRC) lib
++
++$(HASH_LIB): hash
++hash:
++ $(MAKE) -C $(HASH_SRC) lib
++
++$(SMBLIB): smblib
++smblib:
++ $(MAKE) -C $(SMBLIB_SRC) lib
++
++$(CIOLIB-MT): ciolib-mt
++ciolib-mt:
++ $(MAKE) -C $(CIOLIB_SRC) mtlib
++
++$(UIFCLIB): uifc
++uifc:
++ $(MAKE) -C $(UIFC_SRC) lib
++
++$(UIFCLIB-MT): uifc-mt
++uifc-mt:
++ $(MAKE) -C $(UIFC_SRC) mtlib
++
++$(JS_LIB): $(JS_DEPS)
++js:
++ $(MAKE) -C $(3RDPBUILDDIR) jslib
++
++$(CRYPT_LIB): $(CRYPT_DEPS)
++cl:
++ $(MAKE) -C $(3RDPBUILDDIR) cryptlib
++
++$(SFTPLIB-MT): sftp-mt
++sftp-mt:
++ $(MAKE) -C $(SFTP_SRC) mtlib
++
+ -include targets.mk
+ -include $(SRC_ROOT)/build/rules.mk
+ -include objects.mk # defines $(OBJS)
+@@ -592,47 +636,3 @@
+ -include $(LIBODIR)/*.d
+ -include $(EXEODIR)/*.d
+ -include $(SRCODIR)/*.d
+-
+-$(XPDEV_LIB): xpdev
+-xpdev:
+- $(MAKE) -C $(XPDEV_SRC) lib
+-
+-$(XPDEV-MT_LIB): xpdev-mt
+-xpdev-mt:
+- $(MAKE) -C $(XPDEV_SRC) mtlib
+-
+-$(ENCODE_LIB): encode
+-encode:
+- $(MAKE) -C $(ENCODE_SRC) lib
+-
+-$(HASH_LIB): hash
+-hash:
+- $(MAKE) -C $(HASH_SRC) lib
+-
+-$(SMBLIB): smblib
+-smblib:
+- $(MAKE) -C $(SMBLIB_SRC) lib
+-
+-$(CIOLIB-MT): ciolib-mt
+-ciolib-mt:
+- $(MAKE) -C $(CIOLIB_SRC) mtlib
+-
+-$(UIFCLIB): uifc
+-uifc:
+- $(MAKE) -C $(UIFC_SRC) lib
+-
+-$(UIFCLIB-MT): uifc-mt
+-uifc-mt:
+- $(MAKE) -C $(UIFC_SRC) mtlib
+-
+-$(JS_LIB): $(JS_DEPS)
+-js:
+- $(MAKE) -C $(3RDPBUILDDIR) jslib
+-
+-$(CRYPT_LIB): $(CRYPT_DEPS)
+-cl:
+- $(MAKE) -C $(3RDPBUILDDIR) cryptlib
+-
+-$(SFTPLIB-MT): sftp-mt
+-sftp-mt:
+- $(MAKE) -C $(SFTP_SRC) mtlib
diff --git a/app-misc/syncterm/files/webget.patch b/app-misc/syncterm/files/webget.patch
new file mode 100644
index 00000000..70fb104c
--- /dev/null
+++ b/app-misc/syncterm/files/webget.patch
@@ -0,0 +1,12 @@
+diff '--color=auto' -uNr syncterm-1.6.orig/src/syncterm/webget.c syncterm-1.6/src/syncterm/webget.c
+--- syncterm-1.6.orig/src/syncterm/webget.c 2025-06-07 17:28:16.006999190 +0200
++++ syncterm-1.6/src/syncterm/webget.c 2025-06-07 17:31:11.641227829 +0200
+@@ -3,7 +3,7 @@
+ #include
+
+ #ifndef WITHOUT_CRYPTLIB
+-#include
++#include "../../3rdp/src/cl/cryptlib.h"
+ #endif
+
+ #include "bbslist.h"
diff --git a/app-misc/syncterm/syncterm-1.6.ebuild b/app-misc/syncterm/syncterm-1.6.ebuild
new file mode 100644
index 00000000..070d10a6
--- /dev/null
+++ b/app-misc/syncterm/syncterm-1.6.ebuild
@@ -0,0 +1,43 @@
+# Copyright 1999-2022 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit toolchain-funcs
+
+DESCRIPTION="A BBS terminal program, supporting ANSI music and IBM charset."
+HOMEPAGE="http://syncterm.bbsdev.net"
+SRC_URI="https://downloads.sourceforge.net/project/syncterm/syncterm/syncterm-${PV}/syncterm-${PV}-src.tgz"
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="amd64"
+
+RDEPEND="sys-libs/ncurses"
+DEPEND="${RDEPEND}"
+
+PATCHES=(
+ "${FILESDIR}"/make_order.patch
+ "${FILESDIR}"/webget.patch
+)
+
+#S=${WORKDIR}/syncterm-${PV}/src/syncterm
+
+src_prepare() {
+ cp "${FILESDIR}"/cl-linux-yield.patch ${WORKDIR}/syncterm-${PV}/3rdp/build/cl-linux-yield.patch
+ default
+}
+
+src_compile() {
+# CPPFLAGS="${CPPFLAGS}" \
+# CFLAGS="${CFLAGS}" \
+# LDFLAGS="${LDFLAGS}" \
+
+ emake -C src/syncterm CC="$(tc-getCC)" \
+ PREFIX="/usr" MANPREFIX="/usr/share" RELEASE=1
+}
+
+src_install() {
+ emake -C src/syncterm CC="$(tc-getCC)" \
+ PREFIX="${ED}/usr" MANPREFIX="${ED}/usr/share" RELEASE=1 install
+}
diff --git a/dev-embedded/rpi-imager/Manifest b/dev-embedded/rpi-imager/Manifest
new file mode 100644
index 00000000..052b4f51
--- /dev/null
+++ b/dev-embedded/rpi-imager/Manifest
@@ -0,0 +1,2 @@
+DIST rpi-imager-1.9.4.tar.xz 9481200 BLAKE2B fdaa997560f258a698dd046cbad7c0c40a3f00118daf630cc9ae7a3e263934e8e24dd45e2ab8efc38b6f5403eac3bda7b83ebac3fecb84b161adf4d1159088cc SHA512 4596843729129284b4413e91a6cd127e30e35d1876261c24af60d196c2b9dc9f6128c9de4608a7a540418c1ba18daa16b45260698eb5767549254038ec1315ff
+EBUILD rpi-imager-1.9.4.ebuild 436 BLAKE2B 8430b793a9acf2e5b7696bb6f39173bfc013917c23e02e0b2f5c39e4e76d5d4915ee969014aaefd90929c932cd6e94ad6cb6ef040d1aa9fa1b5d21933515d3d3 SHA512 aa4b79270de41cb1aee487647c7c2503e18450c89c896380a6fa90ecc69b4d1fc78df2725f3b83793528558497b0801f972d99cb4061f1eddf65b7c150164575
diff --git a/dev-embedded/rpi-imager/rpi-imager-1.9.4.ebuild b/dev-embedded/rpi-imager/rpi-imager-1.9.4.ebuild
new file mode 100644
index 00000000..f7258358
--- /dev/null
+++ b/dev-embedded/rpi-imager/rpi-imager-1.9.4.ebuild
@@ -0,0 +1,22 @@
+EAPI=8
+
+inherit cmake
+
+DESCRIPTION="Raspberry Pi Imaging Utility"
+HOMEPAGE=https://www.raspberrypi.com/software/
+SRC_URI="https://github.com/raspberrypi/${PN}/releases/download/v${PV}/${PN}_${PV}.tar.xz -> ${P}.tar.xz"
+
+LICENSE=Apache-2.0
+SLOT=0
+KEYWORDS="amd64 aarch64"
+S=$WORKDIR/$PN/src
+RESTRICT=network-sandbox
+
+DEPEND="
+ dev-qt/qtbase
+ dev-qt/qtdbus
+ sys-libs/zlib
+ app-arch/lzma
+ || ( net-libs/gnutls dev-libs/openssl )
+ "
+
diff --git a/dev-qt/qtwebengine/Manifest b/dev-qt/qtwebengine/Manifest
index 73162f54..2e4c865b 100644
--- a/dev-qt/qtwebengine/Manifest
+++ b/dev-qt/qtwebengine/Manifest
@@ -8,5 +8,5 @@ AUX qtwebengine-5.15.16_p20241115-py3.13-pipes.patch 848 BLAKE2B 7696eaf565511ad
AUX qtwebengine-5.15.17-py3.13-pipes.patch 848 BLAKE2B 7696eaf565511adcac5e74f7788633d1e83a88079548f1069c840da40e3ec5fef5fbfa0c019234a40dde14f6f43249792ad1bfc3d2ee8e5669d7fde7234a7ad2 SHA512 79588891105d8dce27e273d4113c31352c6b1035762ea6b1211be5f58299d9e2852b0b98bad34492d9af85e3ae1ca87407ffbf190159d64b0c6d7ba49e842bf8
AUX qtwebengine-5.15.2_p20210521-clang-libc++.patch 358 BLAKE2B a03de632ac4e01cf56c52af3a3bd5ff5bcfd525c67bf2e5d960904a9f3b53e1fa18f0e0df380c0cf84f17914fb313a028e26efaefe6ab5057f0d9a9cf2f6f0fd SHA512 6dc3864064d6084e70d4696fda744701c293ee62e9c9088e3247988ffb8085f30c632e94ac19aef715cbd211b21dfcb98691d5809e21cffd9f04bbb8b04cf0da
DIST qtwebengine-5.15.14_p20240510-patchset.tar.xz 20780 BLAKE2B 516d4c628c4b027ab3a7159da006a57173be91de3eb4b7f308029953d4fd19fb3e790ca38e79d17fef75d8d9b392676650acb9285d5913f9ebecaa4136575c47 SHA512 492979d118d6bd9165ee194724e38b627d19c89dbe1daa6b2f55e4a8fc7676748a1eacb9623ee05e09140c2c4a2ac82ddafaef5c45630a117ce0ed14b240a474
-DIST qtwebengine-everywhere-opensource-src-5.15.17.tar.xz 319675412 BLAKE2B eca642f2fe3dc0a648f1645aa3ae7ca86dee8abd3cb8853a6ad7e200171f7c45d88dbdba05f820771de7607647b7626267f4e1af17d8e2bc4f0184899c2c09a6 SHA512 4ca5ac97e35f195350da6485a7e53e648723ef5a4e91acf58985eb6957b89acc7f9bac53035eee228fd6a4144a2ba7f93a1a96fd0a501e817b2460fe8faf6bd7
+DIST qtwebengine-everywhere-opensource-src-5.15.17.tar.xz 319707540 BLAKE2B cab83868e938dea46ccb89dc75694c800723857a458e23e28032729dff6dc0701c06af2d983dee5675ce43a7e028421044dbfa0733984264a2195f4530024552 SHA512 f3f8a6e9b43e9a58a0b44777fd3333a621365f7cfe323207dfafdefe41f572a58b03ae9c00ab57cbd554d9d71c09d071b93841557099205d4b6dc474921bbfdf
EBUILD qtwebengine-5.15.17.ebuild 8143 BLAKE2B 869eb1f18cf28280d178a4723b133b876d67770ea13d1d49d4a0beb1bfe07f53f44ac95ddc8f9d4535300bb815618a02de90282c85c774697a7163e97b56633e SHA512 800b5b84a6601573119048a303bbfcb056675e6675d22d8b0bf46c8049fb8de8b6f0f95e027ac3870e875f5fc6833c31fee96f89c512ab9113dd9e5fd28394eb
diff --git a/dev-util/xpipe/xpipe-16.5.ebuild b/dev-util/xpipe/xpipe-16.5.ebuild
new file mode 100644
index 00000000..29566fee
--- /dev/null
+++ b/dev-util/xpipe/xpipe-16.5.ebuild
@@ -0,0 +1,54 @@
+# Copyright 1999-2022 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit desktop unpacker xdg
+
+DESCRIPTION="Your entire server infrastructure at your fingertips"
+HOMEPAGE="https://xpipe.io/"
+#SRC_URI="https://github.com/${PN}-io/${PN}/releases/download/${PV}/${PN}-installer-linux-x86_64.deb -> ${PN}-installer-linux-${PV}-x86_64.deb"
+SRC_URI="https://github.com/${PN}-io/${PN}/releases/download/${PV}/${PN}-portable-linux-x86_64.tar.gz -> ${PN}-portable-linux-${PV}-x86_64.tar.gz"
+
+LICENSE="Apache-2.0"
+SLOT="0"
+KEYWORDS="-* ~amd64"
+RESTRICT="bindist mirror splitdebug test"
+#IUSE="swiftshader system-ffmpeg"
+IUSE=""
+
+QA_PREBUILT="*"
+
+RDEPEND="
+"
+
+S="${WORKDIR}"
+
+src_install() {
+
+ mv xpipe-${PV} xpipe
+ dodir /opt
+ cp -a xpipe "${ED}"/opt || die
+
+ dosym ../../opt/xpipe/cli/bin/xpipe usr/bin/xpipe
+
+ dosym ../../opt/xpipe/cli/xpipe_completion etc/bash_completion.d/xpipe
+
+ domenu ${FILESDIR}/${PN}.desktop
+ doicon ${FILESDIR}/${PN}.png
+
+ doman xpipe/cli/man/*
+
+}
+
+pkg_preinst() {
+ xdg_pkg_preinst
+}
+
+pkg_postinst() {
+ xdg_pkg_postinst
+}
+
+pkg_postrm() {
+ xdg_pkg_postrm
+}
diff --git a/net-fs/ncpfs-modules/Manifest b/net-fs/ncpfs-modules/Manifest
index 26b88551..3ed3e2d4 100644
--- a/net-fs/ncpfs-modules/Manifest
+++ b/net-fs/ncpfs-modules/Manifest
@@ -1 +1 @@
-EBUILD ncpfs-modules-9999.ebuild 1427 BLAKE2B 42130c0fe71b0d479863d14034375bd7c09158bfdb94b007398f132983f99d39b2621de47f9a5d12e7ae86dfd77bcafef1bb4a7920af39dcdae28f1f4e107a18 SHA512 874dbf06f1029e8fb1f4a7010c6913a981242f165dd890c440462b416f9332e988b248c47709637daaa31aeb8f89e3f834f7ba971333e0c1c0efc679de897b91
+EBUILD ncpfs-modules-9999.ebuild 1493 BLAKE2B a9ad1d939acf6705080c537c8164e1233e2a02218847bb2f021041045749077e4a07adbf9b1be2cb97dc7299b653a51fd7d40a34ff773031f2b3f596c8f2bfad SHA512 7cd5fa79f3d2d7976aaf6c2d5a64165cdb05b7f50a31687bb58840850493afeea525054f13d2c02299d04e5da612e4d2cbcb1d2327402eae582b478f3d481c81
diff --git a/net-fs/ncpfs-modules/ncpfs-modules-9999.ebuild b/net-fs/ncpfs-modules/ncpfs-modules-9999.ebuild
index cc424cd4..ea8e6908 100644
--- a/net-fs/ncpfs-modules/ncpfs-modules-9999.ebuild
+++ b/net-fs/ncpfs-modules/ncpfs-modules-9999.ebuild
@@ -8,7 +8,7 @@ inherit git-r3 linux-info linux-mod
DESCRIPTION="ncpfs kernel module for Linux 4.18+"
HOMEPAGE="https://github.com/EnzephaloN/ncpfs-module"
EGIT_REPO_URI="https://github.com/EnzephaloN/ncpfs-module.git"
-EGIT_REPO_URI="https://github.com/hundertzwei/ncpfs-module.git"
+#EGIT_REPO_URI="https://github.com/hundertzwei/ncpfs-module.git"
LICENSE="GPL-2"
SLOT="0"
@@ -54,6 +54,9 @@ src_unpack() {
EGIT_BRANCH="kernel_6.8"
fi
if kernel_is gt 6 12 0; then
+ EGIT_BRANCH="kernel_6.12"
+ fi
+ if kernel_is gt 6 13 0; then
EGIT_BRANCH="master"
fi
diff --git a/net-fs/ncpfs/Manifest b/net-fs/ncpfs/Manifest
index 3c305003..691a1300 100644
--- a/net-fs/ncpfs/Manifest
+++ b/net-fs/ncpfs/Manifest
@@ -21,4 +21,4 @@ AUX ncpfs-2.2.6-servername-array-fix.patch 523 BLAKE2B 6cf9c27ae7bda17722a74f550
AUX ncpfs-2.2.6-usr-merge.patch 514 BLAKE2B 44873b8731d062b2fe802f9ecc145509d12625be4e62b1025738a6076cb003d5577c2d5c21e338ff5fade6e0bea844a254509287a82aabc0bb92db20b0c7ec5d SHA512 cf05a0b2e41c45a8215bf1b150b79a16cdaa040c4e41ab6f361fffaa2a937fb792b464b1a9b49ecde18ae5df8e58e1887b1e965ff39adf1f05a2418f89efca11
AUX ncpfs-2.2.6-zend_function_entry.patch 296 BLAKE2B 3bb6db87517e0fb086e95462e9b567628ede7fbeef77b5d6e101dec8a316f2a5185cad8846bbaf37dada789acfedf6f6bbc75dafa92f3eb140cfde4eb038e1eb SHA512 c96723a840cb1b0cdddb91ebe74620b87a32350be084f21b741bda4e399a7648fd00522e9f2ec8404d5a98835d3f5a343dd588f4279848cc031de5bed01680e0
DIST ncpfs-2.2.6.tar.gz 2100545 BLAKE2B b95c8c0b097227c7b9e526e978efdca2234cdd0833468be99abaa68b0feba09794be26ebcb3a1c3371bc99f6c9d007eee164fa5f918aaee3eca44aeb1420211f SHA512 51f85eaae85deb66cea2ff434974699f6aa45ed1ed75217ef6176ac0b7d0f9f1c4fb186afc64c1b495474d5bad9ac7614033128c0bec39c05de723a9b29c8602
-EBUILD ncpfs-2.2.6-r5.ebuild 2570 BLAKE2B 4b0e38187dbc11d4e36b83e5c5af94adcc13eff3f5cf226d09d484c750b38a4776773cde8b34c60f73dd01498397a1cf735415859c87780e1065fdb4faed61d2 SHA512 33acfe1c75df6b5d293234623405bee48264c97d285e31eb5b7ca3fdecb71d62103b3dfcd2e25ec97389554d43910ed2e24b20e7cd3a9d37e89ec029ff701665
+EBUILD ncpfs-2.2.6-r5.ebuild 2671 BLAKE2B 9a73640d055ff00d469fc6eea0fc08d44f98a6791ea830cbe5fb01422ecd99c68f7ce1ce1df51b6020877696fb5954fac40e88957772fd2c02758112f9383c6f SHA512 aaab51e16b38f753b164e3f4deed8b6d475e6ac54c43a109b5e8d7979215d5e7370729fec889cce89f4cf7ec8d595d93c29aa1bec8b1eaa4167b657a2f1ade35
diff --git a/net-fs/ncpfs/ncpfs-2.2.6-r5.ebuild b/net-fs/ncpfs/ncpfs-2.2.6-r5.ebuild
index 6830780d..cf4a64fe 100644
--- a/net-fs/ncpfs/ncpfs-2.2.6-r5.ebuild
+++ b/net-fs/ncpfs/ncpfs-2.2.6-r5.ebuild
@@ -7,7 +7,8 @@ inherit pam
DESCRIPTION="Provides access to Netware services using the NCP protocol"
HOMEPAGE="ftp://platan.vc.cvut.cz/pub/linux/ncpfs/"
-SRC_URI="ftp://platan.vc.cvut.cz/pub/linux/${PN}/${P}.tar.gz"
+SRC_URI="ftp://platan.vc.cvut.cz/pub/linux/${PN}/${P}.tar.gz
+ https://old-releases.ubuntu.com/ubuntu/pool/universe/n/ncpfs/ncpfs_${PV}.orig.tar.gz -> ${P}.tar.gz"
LICENSE="GPL-2"
SLOT="0"
diff --git a/net-libs/webkit-gtk/Manifest b/net-libs/webkit-gtk/Manifest
new file mode 100644
index 00000000..5c3d015f
--- /dev/null
+++ b/net-libs/webkit-gtk/Manifest
@@ -0,0 +1,10 @@
+AUX 2.44.1-non-unified-build-fixes.patch 11799 BLAKE2B 6928f61428c4bc6594a46f7427e644143b071c39cc7405b143d693f956631519860efd958dd928f55c1e6139334966fd6bb92e42594c7b7b9b11236d5b0154f2 SHA512 c3ee1b48bebe8c6e504b6d15277b67261cceffa9790a212972f2d0ffd32d68c60c96373a2fecc0af9c6400114ecc84130bb23d81d03e08473b60eaadc3df9802
+AUX 2.44.4-fix-icu76.1.patch 1215 BLAKE2B 0d4aa869b52eb6579ff58421982e80f02077e064988b30887af9d7da5a1c31bb652fdc406fbfe4e0895cd4c4e0e67b2cc4e363e8d8c60aac5d5683808fd52080 SHA512 356051853ce56e040aed620a6cb68dba75c2387ed396cfea85c2fcd5e51998a31ea2e2eca5305d9aa99b66f6f8ea7e8983851c77ca654a97ec3b3ecce8bd651c
+AUX 2.48.3-fix-ftbfs-riscv64.patch 1469 BLAKE2B c6e74307539730b31e3c67f8d80b54c5b8ae39fadfd6623d0bb964553510a3f6c0797183d89589ef0a29ab843adea341b3a00ced422f72352ca9aaa29dcda42b SHA512 2835d3b4093f1c0fe369494d401f75645df166eb60da97a983a2396407b71ef7485646d7e7f7c2d7cc2d15e7160e45fb62b6bcfcf0e08197c7c0ff93b52011f7
+DIST webkitgtk-2.44.4.tar.xz 35858056 BLAKE2B 9e3d016bfb2b4e80d2ebeda95e75f8ec8b909b41b17a879d3e1119ed66e3bf4d590a22ed814bb1572dac8d8a8838bb37b5ab1372121b276e02ee8925f6c5b00c SHA512 037ef6a9faca68b68dc62927a475134450493129043ea6cc03595cd4a684d590f80a1e9c3ed40a9176874ba43fc9efbc5065a264dfe131ebd72e272756612db9
+DIST webkitgtk-2.46.5.tar.xz 42898600 BLAKE2B 04f824f9864749c13810318c06e5da90265025062a706030bece73661cf89b8d972040c508ca5b4267d476f9dac8fcdaa82943409f6ae45ab84801d899a1ed7f SHA512 9a0eb018361d407f13b303f66babcdc9960075bf69b83cf2ee8f708e5396cfa9e0a720f77695aea216072392e0603c2dc8ad50e6d56f962d4a52e9cdadf38275
+DIST webkitgtk-2.48.3.tar.xz 44171964 BLAKE2B d07afd02ca3159e2a8998167818614eb586754f6485ea5b998a10686df44a16c99c5890b6fc7ccb3c1aa4aef82f1626be39cd67a4e60dbbe9eda466fd17aa002 SHA512 0724e0d22403552409d0f621d9ed3a6404813ca63d445b9ac8f99682a544c95a3cf8108ac880cb3bcadc0ecd5a772db40e68f753c286700ffc7f2851bba12e84
+EBUILD webkit-gtk-2.44.4-r1.ebuild 7887 BLAKE2B 0e91fad933488cb8897529be1460b428f5587c1e5ad917855440d65e616282bd11dd7db5155064636edb9df8e1c998ff79a7d32dc8178bd9c9a178eab0d15812 SHA512 b9e5a868b8062e9b21b1d16ad63476b241dc2e578d10467e1b1e98f7b0b2433f305b6ef5b8e3050d96d634d0a63f687e2becdbd721e4f88822e7cf535c027c41
+EBUILD webkit-gtk-2.46.5-r1.ebuild 8037 BLAKE2B abea5ce78fd795ea34f9394a2e3d87860e9a32a2a44652be73112d82fcc3c0d27d4ab619c861baee5632d34207122f08011a1f5f7643c3ebc1b18b76998b88e3 SHA512 21e9d8e5f1c1313ce76b1da5b2b0375097ee375d6a4d8c9e383d9181751ee90b39d9e61bce94e71c7b3c5ce41e4c97fd8ea5616add14d09c6a68044b187f37e8
+EBUILD webkit-gtk-2.48.3.ebuild 8175 BLAKE2B 51debd76cbf21da952517119e85b4e9d53f047f8d6c673f0d89201b76dec2db4e4b6a3e6b64334fc0ab1a830a5674b9c229b7dbbb09b39f5d13a69a79495eef2 SHA512 546bc6a2a119fd099867d5eacd6a7936e39035abbc0caa9c2c602795eccfb77bfaff4446a5441b4a7c4ff8a8a5657887e9f96c533179a0aef55cb7000581aaa6
+MISC metadata.xml 790 BLAKE2B cc1db6c1cd6771cafe9b2690790b12a34a7ea49f3dd00c9439ad05a18099c96dd1c5a6575c884c55d09e34f6dc247ca05256a52facb35a54376e61640eececd0 SHA512 b9e123a69e0353a20661ce817ead87b61370d0a68ef175cdf1ced00afacf67204c67bb549aac2006326d8aab7d6e41a841b00d16fc4431626e7ad7782f6158db
diff --git a/net-libs/webkit-gtk/files/2.44.1-non-unified-build-fixes.patch b/net-libs/webkit-gtk/files/2.44.1-non-unified-build-fixes.patch
new file mode 100644
index 00000000..ee5a1c22
--- /dev/null
+++ b/net-libs/webkit-gtk/files/2.44.1-non-unified-build-fixes.patch
@@ -0,0 +1,322 @@
+From 211b73efb2a416f3b464d9d74da0aa8f93abe016 Mon Sep 17 00:00:00 2001
+From: Don Olmstead
+Date: Fri, 8 Mar 2024 17:27:09 -0800
+Subject: [PATCH] Non-unified build fixes, early March 2024 edition
+ https://bugs.webkit.org/show_bug.cgi?id=270719
+
+Unreviewed non-unified build fix.
+
+* Source/JavaScriptCore/jit/JITSizeStatistics.cpp:
+* Source/WebCore/Modules/model-element/ModelPlayerClient.h:
+* Source/WebCore/css/CSSCrossfadeValue.h:
+* Source/WebCore/css/CSSImageSetOptionValue.cpp:
+* Source/WebCore/css/CSSImageSetOptionValue.h:
+* Source/WebCore/css/CSSReflectValue.cpp:
+* Source/WebCore/css/CSSReflectValue.h:
+* Source/WebCore/css/CSSShadowValue.h:
+* Source/WebCore/css/CSSValuePair.cpp:
+* Source/WebCore/css/CSSValuePair.h:
+* Source/WebCore/dom/SlotAssignment.h:
+* Source/WebCore/dom/TrustedType.cpp:
+* Source/WebCore/rendering/svg/RenderSVGPath.cpp:
+* Source/WebCore/rendering/svg/RenderSVGResourceLinearGradient.cpp:
+* Source/WebCore/rendering/svg/RenderSVGResourceMarker.cpp:
+* Source/WebCore/rendering/svg/RenderSVGResourceMasker.cpp:
+* Source/WebCore/rendering/svg/RenderSVGResourceRadialGradient.cpp:
+* Source/WebKit/GPUProcess/graphics/RemoteImageBufferSet.cpp:
+* Source/WebKit/Shared/WebGPU/WebGPURenderPassDepthStencilAttachment.cpp:
+* Source/WebKit/UIProcess/BrowsingContextGroup.cpp:
+* Source/WebKit/UIProcess/FrameProcess.cpp:
+* Source/WebKit/UIProcess/ProvisionalPageProxy.cpp:
+
+Canonical link: https://commits.webkit.org/275863@main
+
+(cherry picked from commit 38c6ecad0ea32e80cb3e811c3ff759074006791f)
+---
+ Source/JavaScriptCore/jit/JITSizeStatistics.cpp | 1 +
+ Source/WebCore/Modules/model-element/ModelPlayerClient.h | 1 +
+ Source/WebCore/css/CSSCrossfadeValue.h | 3 ++-
+ Source/WebCore/css/CSSImageSetOptionValue.cpp | 1 -
+ Source/WebCore/css/CSSImageSetOptionValue.h | 4 ++--
+ Source/WebCore/css/CSSReflectValue.cpp | 2 --
+ Source/WebCore/css/CSSReflectValue.h | 4 ++--
+ Source/WebCore/css/CSSShadowValue.h | 4 ++--
+ Source/WebCore/css/CSSValuePair.cpp | 1 +
+ Source/WebCore/css/CSSValuePair.h | 1 +
+ Source/WebCore/dom/SlotAssignment.h | 1 +
+ Source/WebCore/rendering/svg/RenderSVGPath.cpp | 2 ++
+ .../WebCore/rendering/svg/RenderSVGResourceLinearGradient.cpp | 2 ++
+ Source/WebCore/rendering/svg/RenderSVGResourceMarker.cpp | 2 ++
+ Source/WebCore/rendering/svg/RenderSVGResourceMasker.cpp | 2 ++
+ .../WebCore/rendering/svg/RenderSVGResourceRadialGradient.cpp | 2 ++
+ .../Shared/WebGPU/WebGPURenderPassDepthStencilAttachment.cpp | 1 +
+ Source/WebKit/UIProcess/ProvisionalPageProxy.cpp | 1 +
+ 18 files changed, 25 insertions(+), 10 deletions(-)
+
+diff --git a/Source/JavaScriptCore/jit/JITSizeStatistics.cpp b/Source/JavaScriptCore/jit/JITSizeStatistics.cpp
+index f1bc2780343a..b2ffd81ee34d 100644
+--- a/Source/JavaScriptCore/jit/JITSizeStatistics.cpp
++++ b/Source/JavaScriptCore/jit/JITSizeStatistics.cpp
+@@ -29,6 +29,7 @@
+ #if ENABLE(JIT)
+
+ #include "CCallHelpers.h"
++#include "JITPlan.h"
+ #include "LinkBuffer.h"
+ #include
+ #include
+diff --git a/Source/WebCore/Modules/model-element/ModelPlayerClient.h b/Source/WebCore/Modules/model-element/ModelPlayerClient.h
+index 9343d5102015..b9cf2857eee2 100644
+--- a/Source/WebCore/Modules/model-element/ModelPlayerClient.h
++++ b/Source/WebCore/Modules/model-element/ModelPlayerClient.h
+@@ -25,6 +25,7 @@
+
+ #pragma once
+
++#include "LayerHostingContextIdentifier.h"
+ #include "PlatformLayerIdentifier.h"
+ #include
+ #include
+diff --git a/Source/WebCore/css/CSSCrossfadeValue.h b/Source/WebCore/css/CSSCrossfadeValue.h
+index eafa3bb5e828..86b87be608fe 100644
+--- a/Source/WebCore/css/CSSCrossfadeValue.h
++++ b/Source/WebCore/css/CSSCrossfadeValue.h
+@@ -25,11 +25,12 @@
+
+ #pragma once
+
++#include "CSSPrimitiveValue.h"
+ #include "CSSValue.h"
++#include
+
+ namespace WebCore {
+
+-class CSSPrimitiveValue;
+ class StyleImage;
+
+ namespace Style {
+diff --git a/Source/WebCore/css/CSSImageSetOptionValue.cpp b/Source/WebCore/css/CSSImageSetOptionValue.cpp
+index 9becc5444e10..2b7812e419a2 100644
+--- a/Source/WebCore/css/CSSImageSetOptionValue.cpp
++++ b/Source/WebCore/css/CSSImageSetOptionValue.cpp
+@@ -27,7 +27,6 @@
+ #include "CSSImageSetOptionValue.h"
+
+ #include "CSSImageValue.h"
+-#include "CSSPrimitiveValue.h"
+
+ namespace WebCore {
+
+diff --git a/Source/WebCore/css/CSSImageSetOptionValue.h b/Source/WebCore/css/CSSImageSetOptionValue.h
+index 60ef16534b24..c65ddccc04b5 100644
+--- a/Source/WebCore/css/CSSImageSetOptionValue.h
++++ b/Source/WebCore/css/CSSImageSetOptionValue.h
+@@ -25,13 +25,13 @@
+
+ #pragma once
+
++#include "CSSPrimitiveValue.h"
+ #include "CSSValue.h"
++#include
+ #include
+
+ namespace WebCore {
+
+-class CSSPrimitiveValue;
+-
+ class CSSImageSetOptionValue final : public CSSValue {
+ public:
+ static Ref create(Ref&&);
+diff --git a/Source/WebCore/css/CSSReflectValue.cpp b/Source/WebCore/css/CSSReflectValue.cpp
+index 371e6ed16087..6049d4af7d2d 100644
+--- a/Source/WebCore/css/CSSReflectValue.cpp
++++ b/Source/WebCore/css/CSSReflectValue.cpp
+@@ -26,8 +26,6 @@
+ #include "config.h"
+ #include "CSSReflectValue.h"
+
+-#include "CSSPrimitiveValue.h"
+-
+ namespace WebCore {
+
+ CSSReflectValue::CSSReflectValue(CSSValueID direction, Ref offset, RefPtr mask)
+diff --git a/Source/WebCore/css/CSSReflectValue.h b/Source/WebCore/css/CSSReflectValue.h
+index c67d2ad0dc4b..84f7b1d0e7e1 100644
+--- a/Source/WebCore/css/CSSReflectValue.h
++++ b/Source/WebCore/css/CSSReflectValue.h
+@@ -25,12 +25,12 @@
+
+ #pragma once
+
++#include "CSSPrimitiveValue.h"
+ #include "CSSValue.h"
++#include
+
+ namespace WebCore {
+
+-class CSSPrimitiveValue;
+-
+ class CSSReflectValue final : public CSSValue {
+ public:
+ static Ref create(CSSValueID direction, Ref offset, RefPtr mask);
+diff --git a/Source/WebCore/css/CSSShadowValue.h b/Source/WebCore/css/CSSShadowValue.h
+index 26857028cf36..7d6d25980f72 100644
+--- a/Source/WebCore/css/CSSShadowValue.h
++++ b/Source/WebCore/css/CSSShadowValue.h
+@@ -20,13 +20,13 @@
+
+ #pragma once
+
++#include "CSSPrimitiveValue.h"
+ #include "CSSValue.h"
++#include
+ #include
+
+ namespace WebCore {
+
+-class CSSPrimitiveValue;
+-
+ // Used for text-shadow and box-shadow
+ class CSSShadowValue final : public CSSValue {
+ public:
+diff --git a/Source/WebCore/css/CSSValuePair.cpp b/Source/WebCore/css/CSSValuePair.cpp
+index 7c64d5a9e353..a3e169a697c7 100644
+--- a/Source/WebCore/css/CSSValuePair.cpp
++++ b/Source/WebCore/css/CSSValuePair.cpp
+@@ -25,6 +25,7 @@
+
+ #include "config.h"
+ #include "CSSValuePair.h"
++
+ #include
+ #include
+
+diff --git a/Source/WebCore/css/CSSValuePair.h b/Source/WebCore/css/CSSValuePair.h
+index 0fc85298ca62..44c4d97c01ab 100644
+--- a/Source/WebCore/css/CSSValuePair.h
++++ b/Source/WebCore/css/CSSValuePair.h
+@@ -26,6 +26,7 @@
+ #pragma once
+
+ #include "CSSValue.h"
++#include
+
+ namespace WebCore {
+
+diff --git a/Source/WebCore/dom/SlotAssignment.h b/Source/WebCore/dom/SlotAssignment.h
+index 9f9e1159e10a..478ca88bfca6 100644
+--- a/Source/WebCore/dom/SlotAssignment.h
++++ b/Source/WebCore/dom/SlotAssignment.h
+@@ -30,6 +30,7 @@
+ #include
+ #include
+ #include
++#include
+ #include
+ #include
+ #include
+diff --git a/Source/WebCore/rendering/svg/RenderSVGPath.cpp b/Source/WebCore/rendering/svg/RenderSVGPath.cpp
+index e9977db1c8b6..eba99e3a49d3 100644
+--- a/Source/WebCore/rendering/svg/RenderSVGPath.cpp
++++ b/Source/WebCore/rendering/svg/RenderSVGPath.cpp
+@@ -30,12 +30,14 @@
+ #include "RenderSVGPath.h"
+
+ #if ENABLE(LAYER_BASED_SVG_ENGINE)
++
+ #include "Gradient.h"
+ #include "ReferencedSVGResources.h"
+ #include "RenderLayer.h"
+ #include "RenderSVGResourceMarkerInlines.h"
+ #include "RenderSVGShapeInlines.h"
+ #include "RenderStyleInlines.h"
++#include "SVGElementTypeHelpers.h"
+ #include "SVGMarkerElement.h"
+ #include "SVGPathElement.h"
+ #include "SVGSubpathData.h"
+diff --git a/Source/WebCore/rendering/svg/RenderSVGResourceLinearGradient.cpp b/Source/WebCore/rendering/svg/RenderSVGResourceLinearGradient.cpp
+index 85f79031ed4e..2b379fa4ebfe 100644
+--- a/Source/WebCore/rendering/svg/RenderSVGResourceLinearGradient.cpp
++++ b/Source/WebCore/rendering/svg/RenderSVGResourceLinearGradient.cpp
+@@ -23,8 +23,10 @@
+ #include "RenderSVGResourceLinearGradient.h"
+
+ #if ENABLE(LAYER_BASED_SVG_ENGINE)
++
+ #include "RenderSVGModelObjectInlines.h"
+ #include "RenderSVGResourceLinearGradientInlines.h"
++#include "SVGElementTypeHelpers.h"
+ #include
+
+ namespace WebCore {
+diff --git a/Source/WebCore/rendering/svg/RenderSVGResourceMarker.cpp b/Source/WebCore/rendering/svg/RenderSVGResourceMarker.cpp
+index d65a81f773eb..27abd9b6e0f7 100644
+--- a/Source/WebCore/rendering/svg/RenderSVGResourceMarker.cpp
++++ b/Source/WebCore/rendering/svg/RenderSVGResourceMarker.cpp
+@@ -24,6 +24,7 @@
+ #include "RenderSVGResourceMarker.h"
+
+ #if ENABLE(LAYER_BASED_SVG_ENGINE)
++
+ #include "Element.h"
+ #include "ElementIterator.h"
+ #include "FloatPoint.h"
+@@ -34,6 +35,7 @@
+ #include "RenderLayerInlines.h"
+ #include "RenderSVGModelObjectInlines.h"
+ #include "RenderSVGResourceMarkerInlines.h"
++#include "SVGElementTypeHelpers.h"
+ #include "SVGGraphicsElement.h"
+ #include "SVGLengthContext.h"
+ #include "SVGRenderStyle.h"
+diff --git a/Source/WebCore/rendering/svg/RenderSVGResourceMasker.cpp b/Source/WebCore/rendering/svg/RenderSVGResourceMasker.cpp
+index 81321523d0e4..86c59ca6fab6 100644
+--- a/Source/WebCore/rendering/svg/RenderSVGResourceMasker.cpp
++++ b/Source/WebCore/rendering/svg/RenderSVGResourceMasker.cpp
+@@ -22,6 +22,7 @@
+ #include "RenderSVGResourceMasker.h"
+
+ #if ENABLE(LAYER_BASED_SVG_ENGINE)
++
+ #include "Element.h"
+ #include "ElementIterator.h"
+ #include "FloatPoint.h"
+@@ -33,6 +34,7 @@
+ #include "RenderSVGModelObjectInlines.h"
+ #include "RenderSVGResourceMaskerInlines.h"
+ #include "SVGContainerLayout.h"
++#include "SVGElementTypeHelpers.h"
+ #include "SVGGraphicsElement.h"
+ #include "SVGLengthContext.h"
+ #include "SVGRenderStyle.h"
+diff --git a/Source/WebCore/rendering/svg/RenderSVGResourceRadialGradient.cpp b/Source/WebCore/rendering/svg/RenderSVGResourceRadialGradient.cpp
+index 7d70fd721d73..25a9b293468e 100644
+--- a/Source/WebCore/rendering/svg/RenderSVGResourceRadialGradient.cpp
++++ b/Source/WebCore/rendering/svg/RenderSVGResourceRadialGradient.cpp
+@@ -23,9 +23,11 @@
+ #include "RenderSVGResourceRadialGradient.h"
+
+ #if ENABLE(LAYER_BASED_SVG_ENGINE)
++
+ #include "RenderSVGModelObjectInlines.h"
+ #include "RenderSVGResourceRadialGradientInlines.h"
+ #include "RenderSVGShape.h"
++#include "SVGElementTypeHelpers.h"
+ #include
+
+ namespace WebCore {
+diff --git a/Source/WebKit/Shared/WebGPU/WebGPURenderPassDepthStencilAttachment.cpp b/Source/WebKit/Shared/WebGPU/WebGPURenderPassDepthStencilAttachment.cpp
+index a0c521a767f1..3d4c130de7fa 100644
+--- a/Source/WebKit/Shared/WebGPU/WebGPURenderPassDepthStencilAttachment.cpp
++++ b/Source/WebKit/Shared/WebGPU/WebGPURenderPassDepthStencilAttachment.cpp
+@@ -31,6 +31,7 @@
+ #include "WebGPUConvertFromBackingContext.h"
+ #include "WebGPUConvertToBackingContext.h"
+ #include
++#include
+
+ namespace WebKit::WebGPU {
+
+--
+2.43.0
+
diff --git a/net-libs/webkit-gtk/files/2.44.4-fix-icu76.1.patch b/net-libs/webkit-gtk/files/2.44.4-fix-icu76.1.patch
new file mode 100644
index 00000000..f60c1651
--- /dev/null
+++ b/net-libs/webkit-gtk/files/2.44.4-fix-icu76.1.patch
@@ -0,0 +1,31 @@
+https://bugs.gentoo.org/943213
+https://bugs.webkit.org/show_bug.cgi?id=282120
+https://github.com/WebKit/WebKit/commit/63f7badbada070ebaadd318b2801818ecf7e7ea0
+https://github.com/WebKit/WebKit/pull/35743
+https://unicode-org.atlassian.net/jira/software/c/projects/ICU/issues/ICU-22954
+
+From 63f7badbada070ebaadd318b2801818ecf7e7ea0 Mon Sep 17 00:00:00 2001
+From: Don Olmstead
+Date: Sat, 26 Oct 2024 08:27:01 -0700
+Subject: [PATCH] Support ICU 76.1 build
+ https://bugs.webkit.org/show_bug.cgi?id=282120
+
+Reviewed by Yusuke Suzuki.
+
+In ICU 76.1 an additional macro `U_SHOW_CPLUSPLUS_HEADER_API` was added to
+control visibility of the C++ API within ICU. Set this value to `0` since WebKit
+wants to only use the C API.
+
+* Source/WTF/wtf/Platform.h:
+
+Canonical link: https://commits.webkit.org/285727@main
+--- a/Source/WTF/wtf/Platform.h
++++ b/Source/WTF/wtf/Platform.h
+@@ -115,6 +115,7 @@
+ /* ICU configuration. Some of these match ICU defaults on some platforms, but we would like them consistently set everywhere we build WebKit. */
+ #define U_HIDE_DEPRECATED_API 1
+ #define U_SHOW_CPLUSPLUS_API 0
++#define U_SHOW_CPLUSPLUS_HEADER_API 0
+ #ifdef __cplusplus
+ #define UCHAR_TYPE char16_t
+ #endif
diff --git a/net-libs/webkit-gtk/files/2.48.3-fix-ftbfs-riscv64.patch b/net-libs/webkit-gtk/files/2.48.3-fix-ftbfs-riscv64.patch
new file mode 100644
index 00000000..2cefee4d
--- /dev/null
+++ b/net-libs/webkit-gtk/files/2.48.3-fix-ftbfs-riscv64.patch
@@ -0,0 +1,40 @@
+From: Alberto Garcia
+Description: Use WTF_CPU_UNKNOWN when building for riscv64
+ WebKitGTK doesn't build on riscv64 even with the JIT disabled.
+ Treating the CPU as unknown is perhaps a bit severe, but it allows us
+ to get the build done until someone steps up to maintain this
+ properly.
+Bug: https://bugs.webkit.org/show_bug.cgi?id=271371
+Forwarded: no
+Index: webkitgtk/Source/WTF/wtf/PlatformCPU.h
+===================================================================
+--- webkitgtk.orig/Source/WTF/wtf/PlatformCPU.h
++++ webkitgtk/Source/WTF/wtf/PlatformCPU.h
+@@ -285,14 +285,6 @@
+
+ #endif /* ARM */
+
+-/* CPU(RISCV64) - RISC-V 64-bit */
+-#if defined(__riscv) \
+- && defined(__riscv_xlen) \
+- && (__riscv_xlen == 64)
+-#define WTF_CPU_RISCV64 1
+-#define WTF_CPU_KNOWN 1
+-#endif
+-
+ #if !CPU(KNOWN)
+ #define WTF_CPU_UNKNOWN 1
+ #endif
+Index: webkitgtk/Source/cmake/WebKitCommon.cmake
+===================================================================
+--- webkitgtk.orig/Source/cmake/WebKitCommon.cmake
++++ webkitgtk/Source/cmake/WebKitCommon.cmake
+@@ -125,8 +125,6 @@ if (NOT HAS_RUN_WEBKIT_COMMON)
+ set(WTF_CPU_PPC64 1)
+ elseif (LOWERCASE_CMAKE_SYSTEM_PROCESSOR MATCHES "ppc64le")
+ set(WTF_CPU_PPC64LE 1)
+- elseif (LOWERCASE_CMAKE_SYSTEM_PROCESSOR MATCHES "^riscv64")
+- set(WTF_CPU_RISCV64 1)
+ elseif (LOWERCASE_CMAKE_SYSTEM_PROCESSOR MATCHES "^loongarch64")
+ set(WTF_CPU_LOONGARCH64 1)
+ else ()
diff --git a/net-libs/webkit-gtk/metadata.xml b/net-libs/webkit-gtk/metadata.xml
new file mode 100644
index 00000000..a6ca1028
--- /dev/null
+++ b/net-libs/webkit-gtk/metadata.xml
@@ -0,0 +1,19 @@
+
+
+
+
+ gnome@gentoo.org
+ Gentoo GNOME Desktop
+
+
+
+ https://bugs.webkit.org
+ https://www.webkitgtk.org/news.html
+ https://webkitgtk.org/reference/webkitgtk/stable/
+ WebKit/WebKit
+
+
diff --git a/net-libs/webkit-gtk/webkit-gtk-2.44.4-r1.ebuild b/net-libs/webkit-gtk/webkit-gtk-2.44.4-r1.ebuild
new file mode 100644
index 00000000..8fb23183
--- /dev/null
+++ b/net-libs/webkit-gtk/webkit-gtk-2.44.4-r1.ebuild
@@ -0,0 +1,254 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+PYTHON_REQ_USE="xml(+)"
+PYTHON_COMPAT=( python3_{10..12} )
+USE_RUBY="ruby31 ruby32 ruby33"
+
+inherit check-reqs flag-o-matic gnome2 optfeature python-any-r1 ruby-single toolchain-funcs cmake
+
+MY_P="webkitgtk-${PV}"
+DESCRIPTION="Open source web browser engine"
+HOMEPAGE="https://www.webkitgtk.org"
+SRC_URI="https://www.webkitgtk.org/releases/${MY_P}.tar.xz"
+
+S="${WORKDIR}/${MY_P}"
+
+LICENSE="LGPL-2+ BSD"
+SLOT="4/37" # soname version of libwebkit2gtk-4.0
+KEYWORDS="amd64 arm arm64 ~loong ppc ppc64 ~riscv ~sparc x86"
+
+IUSE="aqua avif examples gamepad keyring +gstreamer +introspection pdf jpegxl +jumbo-build lcms seccomp spell systemd wayland X"
+REQUIRED_USE="|| ( aqua wayland X )"
+
+# Tests do not run when built from tarballs
+# https://bugs.webkit.org/show_bug.cgi?id=215986
+RESTRICT="test"
+
+# Dependencies found at Source/cmake/OptionsGTK.cmake
+# Missing WebRTC support, but ENABLE_WEB_RTC is experimental upstream
+# media-libs/mesa dep is for libgbm
+# >=gst-plugins-opus-1.14.4-r1 for opusparse (required by MSE)
+# TODO: gst-plugins-base[X] is only needed when build configuration ends up
+# with GLX set, but that's a bit automagic too to fix
+RDEPEND="
+ >=x11-libs/cairo-1.16.0[X?]
+ >=media-libs/fontconfig-2.13.0:1.0
+ >=media-libs/freetype-2.9.0:2
+ >=dev-libs/libgcrypt-1.7.0:0=
+ dev-libs/libtasn1:=
+ >=x11-libs/gtk+-3.22.0:3[aqua?,introspection?,wayland?,X?]
+ >=media-libs/harfbuzz-1.4.2:=[icu(+)]
+ >=dev-libs/icu-61.2:=
+ media-libs/libjpeg-turbo:0=
+ >=media-libs/libepoxy-1.5.4[egl(+)]
+ >=net-libs/libsoup-2.54:2.4[introspection?]
+ >=dev-libs/libxml2-2.8.0:2=
+ >=media-libs/libpng-1.4:0=
+ dev-db/sqlite:3
+ sys-libs/zlib:0
+ media-libs/libwebp:=
+ >=app-accessibility/at-spi2-core-2.46.0:2
+
+ >=dev-libs/glib-2.70.0:2
+ >=dev-libs/libxslt-1.1.7
+ media-libs/woff2
+ keyring? ( app-crypt/libsecret )
+ introspection? ( >=dev-libs/gobject-introspection-1.59.1:= )
+ x11-libs/libdrm
+ media-libs/mesa
+ spell? ( >=app-text/enchant-0.22:2 )
+ gstreamer? (
+ >=media-libs/gstreamer-1.20:1.0
+ >=media-libs/gst-plugins-base-1.20:1.0[egl,X?]
+ media-libs/gst-plugins-base:1.0[opengl]
+ >=media-plugins/gst-plugins-opus-1.20:1.0
+ >=media-libs/gst-plugins-bad-1.20:1.0
+ )
+
+ X? ( x11-libs/libX11 )
+
+ dev-libs/hyphen
+ jpegxl? ( >=media-libs/libjxl-0.7.0:= )
+ avif? ( >=media-libs/libavif-0.9.0:= )
+ lcms? ( media-libs/lcms:2 )
+
+ media-libs/libglvnd
+ wayland? (
+ >=dev-libs/wayland-1.20
+ >=dev-libs/wayland-protocols-1.24
+ )
+
+ seccomp? (
+ >=sys-apps/bubblewrap-0.3.1
+ sys-libs/libseccomp
+ sys-apps/xdg-dbus-proxy
+ )
+
+ systemd? ( sys-apps/systemd:= )
+ gamepad? ( >=dev-libs/libmanette-0.2.4 )
+"
+DEPEND="${RDEPEND}"
+# Need real bison, not yacc
+BDEPEND="
+ ${PYTHON_DEPS}
+ ${RUBY_DEPS}
+ >=app-accessibility/at-spi2-core-2.5.3
+ dev-util/gdbus-codegen
+ dev-util/glib-utils
+ >=dev-util/gperf-3.0.1
+ dev-util/unifdef
+ >=sys-devel/bison-2.4.3
+ || ( >=sys-devel/gcc-7.3 >=llvm-core/clang-5 )
+ sys-devel/gettext
+ virtual/pkgconfig
+
+ >=dev-lang/perl-5.10
+ virtual/perl-Data-Dumper
+ virtual/perl-Carp
+ virtual/perl-JSON-PP
+
+ wayland? ( dev-util/wayland-scanner )
+"
+
+CHECKREQS_DISK_BUILD="18G" # and even this might not be enough, bug #417307
+
+# We cannot use PATCHES because src_prepare() calls cmake_src_prepare and
+# gnome2_src_prepare, and both apply ${PATCHES[@]}
+PATCHES=()
+
+pkg_pretend() {
+ if [[ ${MERGE_TYPE} != "binary" ]] ; then
+ if is-flagq "-g*" && ! is-flagq "-g*0" ; then
+ einfo "Checking for sufficient disk space to build ${PN} with debugging CFLAGS"
+ check-reqs_pkg_pretend
+ fi
+
+ if ! test-flag-CXX -std=c++17 ; then
+ die "You need at least GCC 7.3.x or Clang >= 5 for C++17-specific compiler flags"
+ fi
+ fi
+}
+
+pkg_setup() {
+ if [[ ${MERGE_TYPE} != "binary" ]] && is-flagq "-g*" && ! is-flagq "-g*0" ; then
+ check-reqs_pkg_setup
+ fi
+
+ python-any-r1_pkg_setup
+}
+
+src_prepare() {
+ cmake_src_prepare
+ gnome2_src_prepare
+
+ # Fix USE=-jumbo-build on all arches
+ eapply "${FILESDIR}"/2.44.1-non-unified-build-fixes.patch
+
+ # https://bugs.gentoo.org/943213
+ eapply "${FILESDIR}"/2.44.4-fix-icu76.1.patch
+
+ # We don't want -Werror for gobject-introspection (bug #947761)
+ sed -i -e "s:--warn-error::" Source/cmake/FindGI.cmake || die
+}
+
+src_configure() {
+ # Respect CC, otherwise fails on prefix #395875
+ tc-export CC
+
+ # ODR violations (bug #915230, https://bugs.webkit.org/show_bug.cgi?id=233007)
+ filter-lto
+
+ # It does not compile on alpha without this in LDFLAGS
+ # https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=648761
+ use alpha && append-ldflags "-Wl,--no-relax"
+
+ # Sigbuses on SPARC with mcpu and co., bug #???
+ use sparc && filter-flags "-mvis"
+
+ # https://bugs.webkit.org/show_bug.cgi?id=42070 , #301634
+ use ppc64 && append-flags "-mminimal-toc"
+
+ # Try to use less memory, bug #469942 (see Fedora .spec for reference)
+ append-ldflags $(test-flags-CCLD "-Wl,--no-keep-memory")
+
+ # Ruby situation is a bit complicated. See bug 513888
+ local rubyimpl
+ local ruby_interpreter=""
+ local RUBY
+ for rubyimpl in ${USE_RUBY}; do
+ if has_version -b "virtual/rubygems[ruby_targets_${rubyimpl}(-)]"; then
+ RUBY="$(type -P ${rubyimpl})"
+ ruby_interpreter="-DRUBY_EXECUTABLE=${RUBY}"
+ fi
+ done
+ # This will rarely occur. Only a couple of corner cases could lead us to
+ # that failure. See bug 513888
+ [[ -z ${ruby_interpreter} ]] && die "No suitable ruby interpreter found"
+ # JavaScriptCore/Scripts/postprocess-asm invokes another Ruby script directly
+ # so it doesn't respect RUBY_EXECUTABLE, bug #771744.
+ sed -i -e "s:#!/usr/bin/env ruby:#!${RUBY}:" $(grep -rl "/usr/bin/env ruby" Source/JavaScriptCore || die) || die
+
+ # TODO: Check Web Audio support
+ # should somehow let user select between them?
+
+ local mycmakeargs=(
+ -DPython_EXECUTABLE="${PYTHON}"
+ ${ruby_interpreter}
+ # If bubblewrap[suid] then portage makes it go-r and cmake find_program fails with that
+ -DBWRAP_EXECUTABLE:FILEPATH="${EPREFIX}"/usr/bin/bwrap
+ -DDBUS_PROXY_EXECUTABLE:FILEPATH="${EPREFIX}"/usr/bin/xdg-dbus-proxy
+ -DPORT=GTK
+ # Source/cmake/WebKitFeatures.cmake
+ -DENABLE_API_TESTS=OFF
+ -DENABLE_BUBBLEWRAP_SANDBOX=$(usex seccomp)
+ -DENABLE_GAMEPAD=$(usex gamepad)
+ -DENABLE_MINIBROWSER=$(usex examples)
+ -DENABLE_PDFJS=$(usex pdf)
+ -DENABLE_GEOLOCATION=ON # Runtime optional (talks over dbus service)
+ -DENABLE_SPELLCHECK=$(usex spell)
+ -DENABLE_UNIFIED_BUILDS=$(usex jumbo-build)
+ -DENABLE_VIDEO=$(usex gstreamer)
+ -DUSE_GSTREAMER_WEBRTC=$(usex gstreamer)
+ -DUSE_GSTREAMER_TRANSCODER=$(usex gstreamer)
+ -DENABLE_WEB_CODECS=$(usex gstreamer) # https://bugs.webkit.org/show_bug.cgi?id=269147
+ -DENABLE_WEBDRIVER=OFF # Disable WebDriver for webkit2gtk-4.1 and use the webkit2gtk-6.0 one
+ -DENABLE_WEBGL=ON
+ -DENABLE_WEB_AUDIO=$(usex gstreamer)
+ -DUSE_AVIF=$(usex avif)
+ # Source/cmake/OptionsGTK.cmake
+ -DENABLE_DOCUMENTATION=OFF
+ -DENABLE_INTROSPECTION=$(usex introspection)
+ -DENABLE_JOURNALD_LOG=$(usex systemd)
+ -DENABLE_QUARTZ_TARGET=$(usex aqua)
+ -DENABLE_WAYLAND_TARGET=$(usex wayland)
+ -DENABLE_X11_TARGET=$(usex X)
+ -DUSE_GBM=ON
+ -DUSE_GTK4=OFF
+ -DUSE_JPEGXL=$(usex jpegxl)
+ -DUSE_LCMS=$(usex lcms)
+ -DUSE_LIBBACKTRACE=OFF
+ -DUSE_LIBDRM=ON
+ -DUSE_LIBHYPHEN=ON
+ -DUSE_LIBSECRET=$(usex keyring)
+ -DUSE_SOUP2=ON
+ -DUSE_WOFF2=ON
+ )
+
+ # Temporary workaround for bug 938162 (upstream bug 271371).
+ use riscv && mycmakeargs+=( -DENABLE_JIT=OFF )
+
+ # https://bugs.gentoo.org/761238
+ append-cppflags -DNDEBUG
+
+ WK_USE_CCACHE=NO cmake_src_configure
+}
+
+pkg_postinst() {
+ optfeature "geolocation service (used at runtime if available)" "app-misc/geoclue"
+ optfeature "Common Multimedia codecs" "media-plugins/gst-plugins-meta"
+ optfeature "VAAPI encoding support" "media-libs/gst-plugins-bad[vaapi]"
+ optfeature "MPEG-DASH support" "media-plugins/gst-plugins-dash"
+ optfeature "HTTP live streaming (HLS) support" "media-plugins/gst-plugins-hls"
+}
diff --git a/net-libs/webkit-gtk/webkit-gtk-2.46.5-r1.ebuild b/net-libs/webkit-gtk/webkit-gtk-2.46.5-r1.ebuild
new file mode 100644
index 00000000..72b1c0b6
--- /dev/null
+++ b/net-libs/webkit-gtk/webkit-gtk-2.46.5-r1.ebuild
@@ -0,0 +1,256 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+PYTHON_REQ_USE="xml(+)"
+PYTHON_COMPAT=( python3_{10..13} )
+USE_RUBY="ruby31 ruby32 ruby33 ruby34"
+
+inherit check-reqs flag-o-matic gnome2 optfeature python-any-r1 ruby-single toolchain-funcs cmake
+
+MY_P="webkitgtk-${PV}"
+DESCRIPTION="Open source web browser engine"
+HOMEPAGE="https://www.webkitgtk.org"
+SRC_URI="https://www.webkitgtk.org/releases/${MY_P}.tar.xz"
+
+S="${WORKDIR}/${MY_P}"
+
+LICENSE="LGPL-2+ BSD"
+SLOT="4/37" # soname version of libwebkit2gtk-4.0
+KEYWORDS="amd64 ~arm arm64 ppc ppc64 ~sparc ~x86"
+
+IUSE="aqua avif examples gamepad keyring +gstreamer +introspection pdf jpegxl +jumbo-build lcms seccomp spell systemd wayland X"
+REQUIRED_USE="|| ( aqua wayland X )"
+
+# Tests do not run when built from tarballs
+# https://bugs.webkit.org/show_bug.cgi?id=215986
+RESTRICT="test"
+
+# Dependencies can be found in Source/cmake/OptionsGTK.cmake.
+#
+# * Missing WebRTC support, but ENABLE_WEB_RTC is experimental upstream.
+#
+# * media-libs/mesa dep is for libgbm
+#
+# * >=gst-plugins-opus-1.14.4-r1 for opusparse (required by MSE)
+#
+# * TODO: gst-plugins-base[X] is only needed when build configuration ends up
+# with GLX set, but that's a bit automagic too to fix
+#
+# * Cairo is only needed on big-endian systems, where Skia is not officially
+# supported (the build system will choose a backend for you). We could probably
+# hard-code a list of BE arches here, to avoid the extra dependency? But I am
+# holding out hope that this might actually get fixed before we need to do that.
+#
+# * dev-util/sysprof-capture is disabled because it was a new dependency in 2.46
+# and we don't need any more new problems.
+#
+RDEPEND="
+ app-accessibility/at-spi2-core:2
+ dev-db/sqlite:3
+ dev-libs/glib:2
+ dev-libs/hyphen
+ dev-libs/icu:=
+ dev-libs/libgcrypt:0=
+ dev-libs/libtasn1:=
+ dev-libs/libxml2:2=
+ dev-libs/libxslt
+ media-libs/fontconfig:1.0
+ media-libs/freetype:2
+ media-libs/harfbuzz:=[icu(+)]
+ media-libs/libjpeg-turbo:0=
+ media-libs/libepoxy[egl(+)]
+ media-libs/libglvnd
+ media-libs/libpng:0=
+ media-libs/libwebp:=
+ media-libs/mesa
+ media-libs/woff2
+ net-libs/libsoup:2.4[introspection?]
+ sys-libs/zlib:0
+ x11-libs/cairo[X?]
+ x11-libs/gtk+:3[aqua?,introspection?,wayland?,X?]
+ x11-libs/libdrm
+ avif? ( media-libs/libavif:= )
+ gamepad? ( dev-libs/libmanette )
+ gstreamer? (
+ media-libs/gstreamer:1.0
+ media-libs/gst-plugins-base:1.0[egl,opengl,X?]
+ media-plugins/gst-plugins-opus:1.0
+ media-libs/gst-plugins-bad:1.0
+ )
+ introspection? ( dev-libs/gobject-introspection:= )
+ jpegxl? ( media-libs/libjxl:= )
+ keyring? ( app-crypt/libsecret )
+ lcms? ( media-libs/lcms:2 )
+ seccomp? (
+ sys-apps/bubblewrap
+ sys-libs/libseccomp
+ sys-apps/xdg-dbus-proxy
+ )
+ spell? ( app-text/enchant:2 )
+ systemd? ( sys-apps/systemd:= )
+ X? ( x11-libs/libX11 )
+ wayland? (
+ dev-libs/wayland
+ dev-libs/wayland-protocols
+ )
+"
+DEPEND="${RDEPEND}"
+# Need real bison, not yacc
+BDEPEND="
+ ${PYTHON_DEPS}
+ ${RUBY_DEPS}
+ app-accessibility/at-spi2-core
+ dev-lang/perl
+ dev-util/gdbus-codegen
+ dev-util/glib-utils
+ dev-util/gperf
+ dev-util/unifdef
+ sys-devel/bison
+ sys-devel/gettext
+ virtual/perl-Data-Dumper
+ virtual/perl-Carp
+ virtual/perl-JSON-PP
+ virtual/pkgconfig
+ wayland? ( dev-util/wayland-scanner )
+"
+
+CHECKREQS_DISK_BUILD="18G" # and even this might not be enough, bug #417307
+
+# We cannot use PATCHES because src_prepare() calls cmake_src_prepare and
+# gnome2_src_prepare, and both apply ${PATCHES[@]}
+PATCHES=()
+
+pkg_pretend() {
+ if [[ ${MERGE_TYPE} != "binary" ]] ; then
+ if is-flagq "-g*" && ! is-flagq "-g*0" ; then
+ einfo "Checking for sufficient disk space to build ${PN} with debugging CFLAGS"
+ check-reqs_pkg_pretend
+ fi
+
+ if ! test-flag-CXX -std=c++17 ; then
+ die "You need at least GCC 7.3.x or Clang >= 5 for C++17-specific compiler flags"
+ fi
+ fi
+}
+
+pkg_setup() {
+ if [[ ${MERGE_TYPE} != "binary" ]] && is-flagq "-g*" && ! is-flagq "-g*0" ; then
+ check-reqs_pkg_setup
+ fi
+
+ python-any-r1_pkg_setup
+}
+
+src_prepare() {
+ cmake_src_prepare
+ gnome2_src_prepare
+
+ # https://bugs.gentoo.org/943213
+ eapply "${FILESDIR}"/2.44.4-fix-icu76.1.patch
+
+ # We don't want -Werror for gobject-introspection (bug #947761)
+ sed -i -e "s:--warn-error::" Source/cmake/FindGI.cmake || die
+}
+
+src_configure() {
+ # Respect CC, otherwise fails on prefix #395875
+ tc-export CC
+
+ # ODR violations (bug #915230, https://bugs.webkit.org/show_bug.cgi?id=233007)
+ filter-lto
+
+ # It does not compile on alpha without this in LDFLAGS
+ # https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=648761
+ use alpha && append-ldflags "-Wl,--no-relax"
+
+ # Sigbuses on SPARC with mcpu and co., bug #???
+ use sparc && filter-flags "-mvis"
+
+ # https://bugs.webkit.org/show_bug.cgi?id=42070 , #301634
+ use ppc64 && append-flags "-mminimal-toc"
+
+ # Try to use less memory, bug #469942 (see Fedora .spec for reference)
+ append-ldflags $(test-flags-CCLD "-Wl,--no-keep-memory")
+
+ # Ruby situation is a bit complicated. See bug 513888
+ local rubyimpl
+ local ruby_interpreter=""
+ local RUBY
+ for rubyimpl in ${USE_RUBY}; do
+ if has_version -b "virtual/rubygems[ruby_targets_${rubyimpl}(-)]"; then
+ RUBY="$(type -P ${rubyimpl})"
+ ruby_interpreter="-DRUBY_EXECUTABLE=${RUBY}"
+ fi
+ done
+ # This will rarely occur. Only a couple of corner cases could lead us to
+ # that failure. See bug 513888
+ [[ -z ${ruby_interpreter} ]] && die "No suitable ruby interpreter found"
+ # JavaScriptCore/Scripts/postprocess-asm invokes another Ruby script directly
+ # so it doesn't respect RUBY_EXECUTABLE, bug #771744.
+ sed -i -e "s:#!/usr/bin/env ruby:#!${RUBY}:" $(grep -rl "/usr/bin/env ruby" Source/JavaScriptCore || die) || die
+
+ # TODO: Check Web Audio support
+ # should somehow let user select between them?
+ local mycmakeargs=(
+ -DPython_EXECUTABLE="${PYTHON}"
+ ${ruby_interpreter}
+ # If bubblewrap[suid] then portage makes it go-r and cmake find_program fails with that
+ -DBWRAP_EXECUTABLE:FILEPATH="${EPREFIX}"/usr/bin/bwrap
+ -DDBUS_PROXY_EXECUTABLE:FILEPATH="${EPREFIX}"/usr/bin/xdg-dbus-proxy
+ -DPORT=GTK
+ # Source/cmake/WebKitFeatures.cmake
+ -DENABLE_API_TESTS=OFF
+ -DENABLE_BUBBLEWRAP_SANDBOX=$(usex seccomp)
+ -DENABLE_GAMEPAD=$(usex gamepad)
+ -DENABLE_GEOLOCATION=ON # Runtime optional (talks over dbus service)
+ -DENABLE_MINIBROWSER=$(usex examples)
+ -DENABLE_PDFJS=$(usex pdf)
+ -DENABLE_SPELLCHECK=$(usex spell)
+ -DENABLE_UNIFIED_BUILDS=$(usex jumbo-build)
+ -DENABLE_VIDEO=$(usex gstreamer)
+ -DENABLE_WEB_AUDIO=$(usex gstreamer)
+ -DENABLE_WEB_CODECS=$(usex gstreamer) # https://bugs.webkit.org/show_bug.cgi?id=269147
+ -DENABLE_WEBDRIVER=OFF
+ -DENABLE_WEBGL=ON
+ -DUSE_AVIF=$(usex avif)
+ -DUSE_GSTREAMER_WEBRTC=$(usex gstreamer)
+ -DUSE_GSTREAMER_TRANSCODER=$(usex gstreamer)
+ # Source/cmake/OptionsGTK.cmake
+ -DENABLE_DOCUMENTATION=OFF
+ -DENABLE_INTROSPECTION=$(usex introspection)
+ -DENABLE_JOURNALD_LOG=$(usex systemd)
+ -DENABLE_QUARTZ_TARGET=$(usex aqua)
+ -DENABLE_WAYLAND_TARGET=$(usex wayland)
+ -DENABLE_X11_TARGET=$(usex X)
+ -DUSE_GBM=ON
+ -DUSE_GTK4=OFF
+ -DUSE_JPEGXL=$(usex jpegxl)
+ -DUSE_LCMS=$(usex lcms)
+ -DUSE_LIBBACKTRACE=OFF
+ -DUSE_LIBDRM=ON
+ -DUSE_LIBHYPHEN=ON
+ -DUSE_LIBSECRET=$(usex keyring)
+ -DUSE_SOUP2=ON
+ -DUSE_SYSPROF_CAPTURE=OFF
+ -DUSE_WOFF2=ON
+ )
+
+ # Temporary workaround for bug 938162 (upstream bug 271371).
+ # The idea to disable WebAssembly and the FTL JIT instead
+ # of using ENABLE_JIT=OFF was stolen from OpenBSD.
+ use riscv && mycmakeargs+=( -DENABLE_WEBASSEMBLY=OFF -DENABLE_FTL_JIT=OFF )
+
+ # https://bugs.gentoo.org/761238
+ append-cppflags -DNDEBUG
+
+ WK_USE_CCACHE=NO cmake_src_configure
+}
+
+pkg_postinst() {
+ optfeature "geolocation service (used at runtime if available)" "app-misc/geoclue"
+ optfeature "Common Multimedia codecs" "media-plugins/gst-plugins-meta"
+ optfeature "VAAPI encoding support" "media-libs/gst-plugins-bad[vaapi]"
+ optfeature "MPEG-DASH support" "media-plugins/gst-plugins-dash"
+ optfeature "HTTP live streaming (HLS) support" "media-plugins/gst-plugins-hls"
+}
diff --git a/net-libs/webkit-gtk/webkit-gtk-2.48.3.ebuild b/net-libs/webkit-gtk/webkit-gtk-2.48.3.ebuild
new file mode 100644
index 00000000..6f6390eb
--- /dev/null
+++ b/net-libs/webkit-gtk/webkit-gtk-2.48.3.ebuild
@@ -0,0 +1,263 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+PYTHON_REQ_USE="xml(+)"
+PYTHON_COMPAT=( python3_{10..13} )
+USE_RUBY="ruby31 ruby32 ruby33 ruby34"
+
+inherit check-reqs flag-o-matic gnome2 optfeature python-any-r1 ruby-single toolchain-funcs cmake
+
+MY_P="webkitgtk-${PV}"
+DESCRIPTION="Open source web browser engine"
+HOMEPAGE="https://www.webkitgtk.org"
+SRC_URI="https://www.webkitgtk.org/releases/${MY_P}.tar.xz"
+
+S="${WORKDIR}/${MY_P}"
+
+LICENSE="LGPL-2+ BSD"
+SLOT="4/37" # soname version of libwebkit2gtk-4.0
+KEYWORDS="~amd64 ~arm ~arm64 ~ppc ~ppc64 ~riscv ~sparc ~x86"
+
+IUSE="aqua avif examples gamepad keyring +gstreamer +introspection pdf jpegxl +jumbo-build lcms seccomp spell systemd wayland X"
+REQUIRED_USE="|| ( aqua wayland X )"
+
+# Tests do not run when built from tarballs
+# https://bugs.webkit.org/show_bug.cgi?id=215986
+RESTRICT="test"
+
+# Dependencies can be found in Source/cmake/OptionsGTK.cmake.
+#
+# * Missing WebRTC support, but ENABLE_WEB_RTC is experimental upstream.
+#
+# * media-libs/mesa dep is for libgbm
+#
+# * >=gst-plugins-opus-1.14.4-r1 for opusparse (required by MSE)
+#
+# * TODO: gst-plugins-base[X] is only needed when build configuration ends up
+# with GLX set, but that's a bit automagic too to fix
+#
+# * Cairo is only needed on big-endian systems, where Skia is not officially
+# supported (the build system will choose a backend for you). We could probably
+# hard-code a list of BE arches here, to avoid the extra dependency? But I am
+# holding out hope that this might actually get fixed before we need to do that.
+#
+# * dev-util/sysprof-capture is disabled because it was a new dependency in 2.46
+# and we don't need any more new problems.
+#
+RDEPEND="
+ app-accessibility/at-spi2-core:2
+ dev-db/sqlite:3
+ dev-libs/glib:2
+ dev-libs/hyphen
+ dev-libs/icu:=
+ dev-libs/libgcrypt:0=
+ dev-libs/libtasn1:=
+ dev-libs/libxml2:2
+ dev-libs/libxslt
+ media-libs/fontconfig:1.0
+ media-libs/freetype:2
+ media-libs/harfbuzz:=[icu(+)]
+ media-libs/libjpeg-turbo:0=
+ media-libs/libepoxy[egl(+)]
+ media-libs/libglvnd
+ media-libs/libpng:0=
+ media-libs/libwebp:=
+ media-libs/mesa
+ media-libs/woff2
+ net-libs/libsoup:2.4[introspection?]
+ sys-libs/zlib:0
+ x11-libs/cairo[X?]
+ x11-libs/gtk+:3[aqua?,introspection?,wayland?,X?]
+ x11-libs/libdrm
+ avif? ( media-libs/libavif:= )
+ gamepad? ( dev-libs/libmanette )
+ gstreamer? (
+ media-libs/gstreamer:1.0
+ media-libs/gst-plugins-base:1.0[egl,opengl,X?]
+ media-plugins/gst-plugins-opus:1.0
+ media-libs/gst-plugins-bad:1.0
+ )
+ introspection? ( dev-libs/gobject-introspection:= )
+ jpegxl? ( media-libs/libjxl:= )
+ keyring? ( app-crypt/libsecret )
+ lcms? ( media-libs/lcms:2 )
+ seccomp? (
+ sys-apps/bubblewrap
+ sys-libs/libseccomp
+ sys-apps/xdg-dbus-proxy
+ )
+ spell? ( app-text/enchant:2 )
+ systemd? ( sys-apps/systemd:= )
+ X? ( x11-libs/libX11 )
+ wayland? (
+ dev-libs/wayland
+ dev-libs/wayland-protocols
+ )
+"
+DEPEND="${RDEPEND}"
+# Need real bison, not yacc
+BDEPEND="
+ ${PYTHON_DEPS}
+ ${RUBY_DEPS}
+ app-accessibility/at-spi2-core
+ dev-lang/perl
+ dev-util/gdbus-codegen
+ dev-util/glib-utils
+ dev-util/gperf
+ dev-util/unifdef
+ sys-devel/bison
+ sys-devel/gettext
+ virtual/perl-Data-Dumper
+ virtual/perl-Carp
+ virtual/perl-JSON-PP
+ virtual/pkgconfig
+ wayland? ( dev-util/wayland-scanner )
+"
+
+CHECKREQS_DISK_BUILD="18G" # and even this might not be enough, bug #417307
+
+# We cannot use PATCHES because src_prepare() calls cmake_src_prepare and
+# gnome2_src_prepare, and both apply ${PATCHES[@]}
+PATCHES=()
+
+pkg_pretend() {
+ if [[ ${MERGE_TYPE} != "binary" ]] ; then
+ if is-flagq "-g*" && ! is-flagq "-g*0" ; then
+ einfo "Checking for sufficient disk space to build ${PN} with debugging CFLAGS"
+ check-reqs_pkg_pretend
+ fi
+
+ if ! test-flag-CXX -std=c++17 ; then
+ die "You need at least GCC 7.3.x or Clang >= 5 for C++17-specific compiler flags"
+ fi
+ fi
+}
+
+pkg_setup() {
+ if [[ ${MERGE_TYPE} != "binary" ]] && is-flagq "-g*" && ! is-flagq "-g*0" ; then
+ check-reqs_pkg_setup
+ fi
+
+ python-any-r1_pkg_setup
+}
+
+src_prepare() {
+ cmake_src_prepare
+ gnome2_src_prepare
+
+ # https://bugs.gentoo.org/938162, see also mycmakeargs
+ eapply "${FILESDIR}"/2.48.3-fix-ftbfs-riscv64.patch
+
+ # We don't want -Werror for gobject-introspection (bug #947761)
+ sed -i -e "s:--warn-error::" Source/cmake/FindGI.cmake || die
+}
+
+src_configure() {
+ # Respect CC, otherwise fails on prefix #395875
+ tc-export CC
+
+ # ODR violations (bug #915230, https://bugs.webkit.org/show_bug.cgi?id=233007)
+ filter-lto
+
+ # It does not compile on alpha without this in LDFLAGS
+ # https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=648761
+ use alpha && append-ldflags "-Wl,--no-relax"
+
+ # Sigbuses on SPARC with mcpu and co., bug #???
+ use sparc && filter-flags "-mvis"
+
+ # https://bugs.webkit.org/show_bug.cgi?id=42070 , #301634
+ use ppc64 && append-flags "-mminimal-toc"
+
+ # Try to use less memory, bug #469942 (see Fedora .spec for reference)
+ append-ldflags $(test-flags-CCLD "-Wl,--no-keep-memory")
+
+ # Ruby situation is a bit complicated. See bug 513888
+ local rubyimpl
+ local ruby_interpreter=""
+ local RUBY
+ for rubyimpl in ${USE_RUBY}; do
+ if has_version -b "virtual/rubygems[ruby_targets_${rubyimpl}(-)]"; then
+ RUBY="$(type -P ${rubyimpl})"
+ ruby_interpreter="-DRUBY_EXECUTABLE=${RUBY}"
+ fi
+ done
+ # This will rarely occur. Only a couple of corner cases could lead us to
+ # that failure. See bug 513888
+ [[ -z ${ruby_interpreter} ]] && die "No suitable ruby interpreter found"
+ # JavaScriptCore/Scripts/postprocess-asm invokes another Ruby script directly
+ # so it doesn't respect RUBY_EXECUTABLE, bug #771744.
+ sed -i -e "s:#!/usr/bin/env ruby:#!${RUBY}:" $(grep -rl "/usr/bin/env ruby" Source/JavaScriptCore || die) || die
+
+ # TODO: Check Web Audio support
+ # should somehow let user select between them?
+ local mycmakeargs=(
+ -DPython_EXECUTABLE="${PYTHON}"
+ ${ruby_interpreter}
+ # If bubblewrap[suid] then portage makes it go-r and cmake find_program fails with that
+ -DBWRAP_EXECUTABLE:FILEPATH="${EPREFIX}"/usr/bin/bwrap
+ -DDBUS_PROXY_EXECUTABLE:FILEPATH="${EPREFIX}"/usr/bin/xdg-dbus-proxy
+ -DPORT=GTK
+ # Source/cmake/WebKitFeatures.cmake
+ -DENABLE_API_TESTS=OFF
+ -DENABLE_BUBBLEWRAP_SANDBOX=$(usex seccomp)
+ -DENABLE_DRAG_SUPPORT=OFF
+ -DENABLE_GAMEPAD=$(usex gamepad)
+ -DENABLE_GEOLOCATION=ON # Runtime optional (talks over dbus service)
+ -DENABLE_MINIBROWSER=$(usex examples)
+ -DENABLE_PDFJS=$(usex pdf)
+ -DENABLE_SPEECH_SYNTHESIS=OFF
+ -DENABLE_SPELLCHECK=$(usex spell)
+ -DENABLE_TOUCH_EVENTS=OFF
+ -DENABLE_UNIFIED_BUILDS=$(usex jumbo-build)
+ -DENABLE_VIDEO=$(usex gstreamer)
+ -DENABLE_WEB_AUDIO=$(usex gstreamer)
+ -DENABLE_WEB_CODECS=$(usex gstreamer) # https://bugs.webkit.org/show_bug.cgi?id=269147
+ -DENABLE_WEBDRIVER=OFF
+ -DENABLE_WEBGL=ON
+ -DUSE_AVIF=$(usex avif)
+ -DUSE_GSTREAMER_WEBRTC=$(usex gstreamer)
+ -DUSE_GSTREAMER_TRANSCODER=$(usex gstreamer)
+ # Source/cmake/OptionsGTK.cmake
+ -DENABLE_DOCUMENTATION=OFF
+ -DENABLE_INTROSPECTION=$(usex introspection)
+ -DENABLE_JOURNALD_LOG=$(usex systemd)
+ -DENABLE_QUARTZ_TARGET=$(usex aqua)
+ -DENABLE_WAYLAND_TARGET=$(usex wayland)
+ -DENABLE_X11_TARGET=$(usex X)
+ -DUSE_GBM=ON
+ -DUSE_GTK4=OFF
+ -DUSE_JPEGXL=$(usex jpegxl)
+ -DUSE_LCMS=$(usex lcms)
+ -DUSE_LIBBACKTRACE=OFF
+ -DUSE_LIBDRM=ON
+ -DUSE_LIBHYPHEN=ON
+ -DUSE_LIBSECRET=$(usex keyring)
+ -DUSE_SOUP2=ON
+ -DUSE_SYSPROF_CAPTURE=OFF
+ -DUSE_WOFF2=ON
+ )
+
+ # Temporary workaround for bug 938162 (upstream bug 271371)
+ # in concert with our Debian patch. The idea to enable C_LOOP
+ # is also stolen from Debian's build.
+ use riscv && mycmakeargs+=(
+ -DENABLE_WEBASSEMBLY=OFF
+ -DENABLE_JIT=OFF
+ -DENABLE_C_LOOP=ON
+ )
+
+ # https://bugs.gentoo.org/761238
+ append-cppflags -DNDEBUG
+
+ WK_USE_CCACHE=NO cmake_src_configure
+}
+
+pkg_postinst() {
+ optfeature "geolocation service (used at runtime if available)" "app-misc/geoclue"
+ optfeature "Common Multimedia codecs" "media-plugins/gst-plugins-meta"
+ optfeature "VAAPI encoding support" "media-libs/gst-plugins-bad[vaapi]"
+ optfeature "MPEG-DASH support" "media-plugins/gst-plugins-dash"
+ optfeature "HTTP live streaming (HLS) support" "media-plugins/gst-plugins-hls"
+}
diff --git a/sci-libs/vtk/Manifest b/sci-libs/vtk/Manifest
index cd4554b5..a9030ddb 100644
--- a/sci-libs/vtk/Manifest
+++ b/sci-libs/vtk/Manifest
@@ -20,5 +20,8 @@ DIST VTKLargeData-9.3.1.tar.gz 247523669 BLAKE2B 88ec5046f502db14dd6a26ef81e386b
DIST VTKLargeDataFiles-9.3.1.tar.gz 247505524 BLAKE2B 5de069309c59a8a73365fb9faba9904189d723fb72976f372e40db3eb100342a19fecd582bd0aa42fc1012675b442a8e42611632004d6b6d6708468c27a4265e SHA512 bbbf0c193432cb5d8a5618c41e66609c7e6f3e4f24f588124c46b537ecec28b5670420b7f77185da534e4098f8b95d8ec4e392fc017df934a84bfc9dc833f634
DIST vtkDocHtml-9.3.1.tar.gz 165542400 BLAKE2B da8084137b2848f82bf091535950738bd718e65cac8f461fdfb8e9c63ef6db68acfa02655531c8fe22e35f89395d2d066aa5b051abac0e774883552c898de6d9 SHA512 de0d2153c97864b49a8b99e6fbfc8bab78c1522d25bf40ed1f271a8bb4f1f205b008d6bd39f835816972c8439d01f78b68f34d1f88f87755174f0d559841ba29
EBUILD vtk-9.3.1-r1.ebuild 34578 BLAKE2B 92e101faa90957b83c47d509695503de3b1721b8e3f45f70a89a9a0985f1b915a85517bfecfa6292f050a839f090a851adecc0474cb523614e69306da75b9ed0 SHA512 dc1645a214850d00be40ceba246e7a21f276e386685c17705a81dfe507a657e59e67a23b0f1b2bef42e72bed8de28cf513ffbe893e1bd2f06df3bb9151212062
+EBUILD vtk-9.3.1-r2.ebuild 34579 BLAKE2B 06ec9258272cd0027dc31ef71e01327956fdec3debc4ad784e06f059daad956449b5922f4aadd6dc10ec53aa8af2ac08d47ebeefff5fec25328773c1300fbe79 SHA512 950ce9864c335df5244460db573b81fa5dd76e440ca7d5ae88171720becb871e0332ceb5a46993455bd4a1aa0ad5d18c4bc4ece40481e83102a39f2a58f9d6b9
+EBUILD vtk-9.3.1-r3.ebuild 34555 BLAKE2B f93918cc16c213d5c80a6167b32bdf3bfc7d55d5d6f9cddaf208dc091a4f5f1d4a7bc78ecff1b1f03688562287b05eb2d8f69c4696f4236d7bcc3775eedffd9e SHA512 9839c80528ab59a75c2761129d4102b95fe60433a9a9dd5c1d2da140455b0a28fd103c372847c60e7702c3e6a4ef1a0862797e37354e53fda76a03d8619317be
+EBUILD vtk-9.3.1-r4.ebuild 34581 BLAKE2B 2ad34343729a72dc13302745b56795dbfb0361513cff52cf2f1ff6d971dfbb96e595752b252da49cbe20157b6c68feb9cb83cd39d0af3b9dac67a5bbaca882e4 SHA512 76be3cb2bb6dd8b2fc72b388459abc86d0dc58f5d635651e2d556220dd111ea5767666023341cb4233a04b9357b809a24c4d52bf370b9515622b8307fbbddc90
EBUILD vtk-9.3.1.ebuild 34551 BLAKE2B de8ccdc6c7fe67148bf1df104bf6549669fba842ed3b483fb6bcd98b5f3c6d53c236ab363b68fc1240611230eecc6cd7faeb5e91dacf1f98831e1f36ac65aab5 SHA512 dc0896391c8c716dc6e6588aed121842cca755912d856c7251ba5dfe7e9443723c7ef23d43974ffd55c81f94401bf199927179fdc2c6aa6f4116512dbd392c42
MISC metadata.xml 1699 BLAKE2B befce4e1f61b6cb0d772a2826ed9349cf36832ebc0507edc2dff658441b44be351c1fe97c74ac9b21eed8310a254dd2a3b408bc93a15c4b2db8cd55a5e3f703a SHA512 d9921a30c66ef3a3d2a27da1add22a29352cd3fd71c49e834523931b8edf21ca0d785290cddabbe29b068ce00fa05a898c331a1ad80ffaa190e9f92b1a1ab64d
diff --git a/sci-libs/vtk/vtk-9.3.1-r2.ebuild b/sci-libs/vtk/vtk-9.3.1-r2.ebuild
new file mode 100644
index 00000000..12aa9869
--- /dev/null
+++ b/sci-libs/vtk/vtk-9.3.1-r2.ebuild
@@ -0,0 +1,1023 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+# TODO:
+# - add USE flag for remote modules? Those modules can be downloaded
+# properly before building.
+# - replace usex by usev where applicable
+
+PYTHON_COMPAT=( python3_{10..13} )
+WEBAPP_OPTIONAL=yes
+WEBAPP_MANUAL_SLOT=yes
+
+inherit check-reqs cmake cuda java-pkg-opt-2 multiprocessing python-single-r1 toolchain-funcs virtualx webapp
+
+# Short package version
+MY_PV="$(ver_cut 1-2)"
+
+DESCRIPTION="The Visualization Toolkit"
+HOMEPAGE="https://www.vtk.org/"
+SRC_URI="
+ https://www.vtk.org/files/release/${MY_PV}/VTK-${PV}.tar.gz
+ doc? ( https://www.vtk.org/files/release/${MY_PV}/vtkDocHtml-${PV}.tar.gz )
+ examples? (
+ https://www.vtk.org/files/release/${MY_PV}/VTKLargeData-${PV}.tar.gz
+ https://www.vtk.org/files/release/${MY_PV}/VTKLargeDataFiles-${PV}.tar.gz
+ )
+ test? (
+ https://www.vtk.org/files/release/${MY_PV}/VTKData-${PV}.tar.gz
+ https://www.vtk.org/files/release/${MY_PV}/VTKDataFiles-${PV}.tar.gz
+ https://www.vtk.org/files/release/${MY_PV}/VTKLargeData-${PV}.tar.gz
+ https://www.vtk.org/files/release/${MY_PV}/VTKLargeDataFiles-${PV}.tar.gz
+ )
+"
+S="${WORKDIR}/VTK-${PV}"
+
+LICENSE="BSD LGPL-2"
+SLOT="0/${MY_PV}"
+KEYWORDS="~amd64 ~arm ~arm64 ~x86 ~amd64-linux ~x86-linux"
+
+# TODO: Like to simplify these. Mostly the flags related to Groups.
+IUSE="all-modules boost +cgns cuda debug doc examples ffmpeg gdal gles2-only imaging
+ java las +logging minimal mpi mysql +netcdf odbc opencascade openmp openvdb pdal postgres
+ python qt6 +rendering sdl tbb test +threads tk +truetype video_cards_nvidia +views vtkm web"
+
+RESTRICT="!test? ( test )"
+
+REQUIRED_USE="
+ all-modules? (
+ boost cgns ffmpeg gdal imaging las mysql netcdf odbc opencascade openvdb pdal
+ postgres rendering truetype views
+ )
+ cuda? ( video_cards_nvidia vtkm )
+ java? ( rendering )
+ minimal? ( !gdal !rendering )
+ !minimal? ( cgns netcdf rendering )
+ python? ( ${PYTHON_REQUIRED_USE} )
+ qt6? ( rendering )
+ sdl? ( rendering )
+ tk? ( python rendering )
+ web? ( python )
+ rendering? ( truetype views )
+"
+
+# eigen, nlohmann_json, pegtl and utfcpp are referenced in the cmake files
+# and need to be available when VTK consumers configure the dependencies.
+RDEPEND="
+ app-arch/lz4:=
+ app-arch/xz-utils
+ dev-db/sqlite:3
+ dev-libs/double-conversion:=
+ dev-libs/expat
+ dev-libs/icu:=
+ dev-libs/jsoncpp:=
+ >=dev-libs/libfmt-8.1.1:=
+ dev-libs/libxml2:2=
+ dev-libs/libzip:=
+ dev-libs/pugixml
+ media-libs/freetype
+ media-libs/libjpeg-turbo
+ media-libs/libogg
+ media-libs/libpng:=
+ media-libs/tiff:=
+ sci-libs/hdf5:=[mpi=]
+ sys-libs/zlib
+ boost? ( dev-libs/boost:=[mpi?] )
+ cgns? (
+ >=sci-libs/cgnslib-4.1.1:=[hdf5,mpi=]
+ sci-libs/hdf5[cxx]
+ )
+ cuda? ( dev-util/nvidia-cuda-toolkit:= )
+ ffmpeg? ( media-video/ffmpeg:= )
+ gdal? ( sci-libs/gdal:= )
+ java? ( >=virtual/jdk-11:= )
+ las? ( sci-geosciences/liblas )
+ !minimal? (
+ >=media-libs/libharu-2.4.0:=
+ media-libs/libtheora
+ sci-libs/proj:=
+ )
+ mpi? ( virtual/mpi[romio] )
+ mysql? ( dev-db/mariadb-connector-c )
+ netcdf? ( sci-libs/netcdf:=[mpi=] )
+ odbc? ( dev-db/unixODBC )
+ openvdb? ( media-gfx/openvdb:= )
+ opencascade? ( sci-libs/opencascade:= )
+ pdal? ( sci-libs/pdal:= )
+ postgres? ( dev-db/postgresql:= )
+ python? (
+ ${PYTHON_DEPS}
+ $(python_gen_cond_dep 'mpi? ( dev-python/mpi4py[${PYTHON_USEDEP}] )')
+ $(python_gen_cond_dep 'rendering? ( dev-python/matplotlib[${PYTHON_USEDEP}] )')
+ )
+ qt6? (
+ dev-qt/qtbase:6[gui,opengl,sql,widgets]
+ dev-qt/qtdeclarative:6[opengl]
+ dev-qt/qtshadertools:6
+ x11-libs/libxkbcommon
+ )
+ sdl? ( media-libs/libsdl2 )
+ rendering? (
+ media-libs/glew:=
+ media-libs/libglvnd[X]
+ x11-libs/gl2ps
+ x11-libs/libICE
+ x11-libs/libXcursor
+ x11-libs/libXext
+ )
+ tbb? ( dev-cpp/tbb:= )
+ tk? ( dev-lang/tk:= )
+ truetype? ( media-libs/fontconfig )
+ video_cards_nvidia? ( x11-drivers/nvidia-drivers[tools,static-libs] )
+ views? (
+ x11-libs/libICE
+ x11-libs/libXext
+ )
+ web? ( ${WEBAPP_DEPEND} )
+"
+
+DEPEND="
+ ${RDEPEND}
+ dev-cpp/cli11
+ dev-cpp/eigen
+ dev-cpp/nlohmann_json
+ >=dev-libs/pegtl-3
+ dev-libs/utfcpp
+ test? (
+ media-libs/glew
+ x11-libs/libXcursor
+ rendering? ( media-libs/freeglut )
+ )
+"
+BDEPEND="virtual/pkgconfig"
+
+PATCHES=(
+ "${FILESDIR}/${PN}-9.2.5-pegtl-3.x.patch"
+ "${FILESDIR}/${PN}-9.3.0-java.patch"
+ "${FILESDIR}/${PN}-9.3.0-opencascade.patch"
+ "${FILESDIR}/${PN}-9.3.0-ThrustPatches.patch"
+ "${FILESDIR}/${PN}-9.3.0-core-octree_node.txx.patch"
+ "${FILESDIR}/${PN}-9.3.0-ThirdParty-gcc15.patch"
+ "${FILESDIR}/${PN}-9.3.0-update-for-cuda-12.6.patch"
+ "${FILESDIR}/${PN}-9.3.1-fix-fmt-11.patch"
+)
+
+DOCS=( CONTRIBUTING.md README.md )
+
+vtk_check_reqs() {
+ local dsk=4096
+
+ dsk=$(( $(usex doc 3072 0) + dsk ))
+ dsk=$(( $(usex examples 3072 0) + dsk ))
+ dsk=$(( $(usex cuda 8192 0) + dsk ))
+ export CHECKREQS_DISK_BUILD=${dsk}M
+
+ # In case users are not aware of the extra NINJAOPTS, check
+ # for the more common MAKEOPTS, in case NINJAOPTS is empty
+ local jobs=1
+ if [[ -n "${NINJAOPTS}" ]]; then
+ jobs=$(makeopts_jobs "${NINJAOPTS}" "$(get_nproc)")
+ elif [[ -n "${MAKEOPTS}" ]]; then
+ jobs=$(makeopts_jobs "${MAKEOPTS}" "$(get_nproc)")
+ fi
+
+ if use cuda; then
+ local mem=$(( $(usex cuda 7168 0) ))
+ mem=$(( mem * $(( jobs > 4 ? 4 : jobs )) ))
+ export CHECKREQS_MEMORY=${mem}M
+ fi
+
+ "check-reqs_pkg_${EBUILD_PHASE}"
+}
+
+cuda_get_host_compiler() {
+ if [[ -n "${NVCC_CCBIN}" ]]; then
+ echo "${NVCC_CCBIN}"
+ return
+ fi
+
+ if [[ -n "${CUDAHOSTCXX}" ]]; then
+ echo "${CUDAHOSTCXX}"
+ return
+ fi
+
+ einfo "Trying to find working CUDA host compiler"
+
+ if ! tc-is-gcc && ! tc-is-clang; then
+ die "$(tc-get-compiler-type) compiler is not supported"
+ fi
+
+ local compiler compiler_type compiler_version
+ local package package_version
+ local NVCC_CCBIN_default
+
+ compiler_type="$(tc-get-compiler-type)"
+ compiler_version="$("${compiler_type}-major-version")"
+
+ # try the default compiler first
+ NVCC_CCBIN="$(tc-getCXX)"
+ NVCC_CCBIN_default="${NVCC_CCBIN}-${compiler_version}"
+
+ compiler="${NVCC_CCBIN/%-${compiler_version}}"
+
+ # store the package so we can re-use it later
+ package="sys-devel/${compiler_type}"
+ package_version="${package}"
+
+ ebegin "testing ${NVCC_CCBIN_default} (default)"
+
+ while ! nvcc -v -ccbin "${NVCC_CCBIN}" - -x cu <<<"int main(){}" &>> "${T}/cuda_get_host_compiler.log" ; do
+ eend 1
+
+ while true; do
+ # prepare next version
+ if ! package_version="<$(best_version "${package_version}")"; then
+ die "could not find a supported version of ${compiler}"
+ fi
+
+ NVCC_CCBIN="${compiler}-$(ver_cut 1 "${package_version/#<${package}-/}")"
+
+ [[ "${NVCC_CCBIN}" != "${NVCC_CCBIN_default}" ]] && break
+ done
+ ebegin "testing ${NVCC_CCBIN}"
+ done
+ eend $?
+
+ # clean temp file
+ rm -f a.out
+
+ echo "${NVCC_CCBIN}"
+ export NVCC_CCBIN
+}
+
+cuda_get_host_native_arch() {
+ [[ -n ${CUDAARCHS} ]] && echo "${CUDAARCHS}"
+
+ __nvcc_device_query || die "failed to query the native device"
+}
+
+vtk_add_sandbox() {
+ local WRITE=()
+
+ # mesa via virtx will make use of udmabuf if it exists
+ [[ -c "/dev/udmabuf" ]] && WRITE+=( "/dev/udmabuf" )
+
+ readarray -t dris <<<"$(
+ for dri in /sys/class/drm/*/dev; do
+ realpath "/dev/char/$(cat "${dri}")"
+ eqawarn "dri ${dri} $(cat "${dri}") $(realpath "/dev/char/$(cat "${dri}")")"
+ done
+ )"
+
+ [[ -n "${dris[*]}" ]] && WRITE+=( "${dris[@]}" )
+
+ if [[ -d /sys/module/nvidia ]]; then
+ # /dev/nvidia{0-9}
+ readarray -t nvidia_devs <<<"$(
+ find /dev -regextype posix-extended -regex '/dev/nvidia(|-(nvswitch|vgpu))[0-9]*'
+ )"
+ [[ -n "${nvidia_devs[*]}" ]] && WRITE+=( "${nvidia_devs[@]}" )
+
+ WRITE+=(
+ "/dev/nvidiactl"
+ "/dev/nvidia-modeset"
+
+ "/dev/nvidia-vgpuctl"
+
+ "/dev/nvidia-nvlink"
+ "/dev/nvidia-nvswitchctl"
+
+ "/dev/nvidia-uvm"
+ "/dev/nvidia-uvm-tools"
+
+ # "/dev/nvidia-caps/nvidia-cap%d"
+ "/dev/nvidia-caps/"
+ # "/dev/nvidia-caps-imex-channels/channel%d"
+ "/dev/nvidia-caps-imex-channels/"
+ )
+ fi
+
+ # for portage
+ WRITE+=( "/proc/self/task/" )
+
+ local dev
+ for dev in "${WRITE[@]}"; do
+ [[ ! -e "${dev}" ]] && return
+
+ [[ -w "${dev}" ]] && return
+
+ eqawarn "addwrite ${dev}"
+ addwrite "${dev}"
+ if [[ ! -d "${dev}" ]] && [[ ! -w "${dev}" ]]; then
+ eerror "can not access ${dev} after addwrite"
+ fi
+ done
+}
+
+pkg_pretend() {
+ [[ ${MERGE_TYPE} != binary ]] && has openmp && tc-check-openmp
+
+ vtk_check_reqs
+
+ # When building binpkgs you probably want to include all targets
+ if use cuda && [[ ${MERGE_TYPE} == "buildonly" ]] && [[ -n "${CUDA_GENERATION}" || -n "${CUDA_ARCH_BIN}" ]]; then
+ local info_message="When building a binary package it's recommended to unset CUDA_GENERATION and CUDA_ARCH_BIN"
+ einfo "$info_message so all available architectures are build."
+ fi
+}
+
+pkg_setup() {
+ [[ ${MERGE_TYPE} != binary ]] && has openmp && tc-check-openmp
+
+ vtk_check_reqs
+
+ if use cuda && [[ ! -e /dev/nvidia-uvm ]]; then
+ # NOTE We try to load nvidia-uvm and nvidia-modeset here,
+ # so __nvcc_device_query does not fail later.
+
+ nvidia-modprobe -m -u -c 0 || true
+ fi
+
+ use java && java-pkg-opt-2_pkg_setup
+ use python && python-single-r1_pkg_setup
+ use web && webapp_pkg_setup
+}
+
+# Note: The following libraries are marked as internal by kitware
+# and can currently not unbundled:
+# diy2, exodusII, fides, h5part, kissfft, loguru, verdict, vpic,
+# vtkm, xdmf{2,3}, zfp
+# TODO: exprtk, ioss
+# Note: As of v9.2.2 we no longer drop bundled libraries, when using system
+# libraries. This just saves a little space. CMake logic of VTK on ThirdParty
+# libraries avoids automagic builds, so deletion is not needed to catch these.
+src_prepare() {
+ if use doc; then
+ einfo "Removing .md5 files from documents."
+ rm -f "${WORKDIR}"/html/*.md5 || die "Failed to remove superfluous hashes"
+ sed -e "s|\${VTK_BINARY_DIR}/Utilities/Doxygen/doc|${WORKDIR}|" \
+ -i Utilities/Doxygen/CMakeLists.txt || die
+ fi
+
+ if use opencascade && has_version ">=sci-libs/opencascade-7.8.0"; then
+ eapply "${FILESDIR}/vtk-9.3.0-opencascade-7.8.0.patch"
+ fi
+
+ cmake_src_prepare
+
+ if use test; then
+ ebegin "Copying data files to ${BUILD_DIR}"
+ mkdir -p "${BUILD_DIR}/ExternalData" || die
+ pushd "${BUILD_DIR}/ExternalData" >/dev/null || die
+ ln -sf "../../${S}/.ExternalData/README.rst" . || die
+ ln -sf "../../${S}/.ExternalData/SHA512" . || die
+ popd >/dev/null || die
+ eend "$?"
+ fi
+}
+
+# TODO: check these and consider to use them
+# VTK_BUILD_SCALED_SOA_ARRAYS
+# VTK_DISPATCH_{AOS,SOA,TYPED}_ARRAYS
+src_configure() {
+ local mycmakeargs=(
+ -DCMAKE_DISABLE_FIND_PACKAGE_Git="yes"
+ -DVTK_GIT_DESCRIBE="v${PV}"
+ -DVTK_VERSION_FULL="${PV}"
+ -DGIT_EXECUTABLE="${T}/notgit"
+
+ -DCMAKE_POLICY_DEFAULT_CMP0167="OLD"
+ -DCMAKE_POLICY_DEFAULT_CMP0174="OLD"
+ -DCMAKE_POLICY_DEFAULT_CMP0177="OLD"
+
+ -DCMAKE_INSTALL_LICENSEDIR="share/${PN}/licenses"
+ -DVTK_IGNORE_CMAKE_CXX11_CHECKS=yes
+
+ -DVTK_ANDROID_BUILD=OFF
+ -DVTK_IOS_BUILD=OFF
+
+ -DVTK_BUILD_ALL_MODULES="$(usex all-modules)"
+ # we use the pre-built documentation and install these with USE=doc
+ -DVTK_BUILD_DOCUMENTATION=OFF
+ -DVTK_BUILD_EXAMPLES="$(usex examples)"
+
+ # no package in the tree: https://github.com/LLNL/conduit
+ -DVTK_ENABLE_CATALYST=OFF
+ -DVTK_ENABLE_KITS=OFF
+ -DVTK_ENABLE_LOGGING="$(usex logging)"
+ # defaults to ON: USE flag for this?
+ -DVTK_ENABLE_REMOTE_MODULES=OFF
+
+ # disable fetching files during build
+ -DVTK_FORBID_DOWNLOADS="yes"
+
+ -DVTK_GROUP_ENABLE_Imaging="$(usex imaging "YES" "NO")"
+ -DVTK_GROUP_ENABLE_Rendering="$(usex rendering "YES" "NO")"
+ -DVTK_GROUP_ENABLE_StandAlone="$(usex minimal "NO" "YES")"
+ -DVTK_GROUP_ENABLE_Views="$(usex views "YES" "NO")"
+ -DVTK_GROUP_ENABLE_Web="$(usex web "YES" "NO")"
+
+ -DVTK_INSTALL_SDK=ON
+
+ -DVTK_MODULE_ENABLE_VTK_IOCGNSReader="$(usex cgns "YES" "NO")"
+ -DVTK_MODULE_ENABLE_VTK_IOExportPDF="$(usex minimal "NO" "YES")"
+ -DVTK_MODULE_ENABLE_VTK_IOLAS="$(usex las "YES" "NO")"
+ -DVTK_MODULE_ENABLE_VTK_IONetCDF="$(usex netcdf "YES" "NO")"
+ -DVTK_MODULE_ENABLE_VTK_IOOCCT="$(usex opencascade "YES" "NO")"
+ -DVTK_MODULE_ENABLE_VTK_IOOggTheora="$(usex minimal "NO" "YES")"
+ -DVTK_MODULE_ENABLE_VTK_IOOpenVDB="$(usex openvdb "YES" "NO")"
+ -DVTK_MODULE_ENABLE_VTK_IOSQL="YES" # sqlite
+ -DVTK_MODULE_ENABLE_VTK_IOPDAL="$(usex pdal "YES" "NO")"
+ -DVTK_MODULE_ENABLE_VTK_IOXML="YES"
+ -DVTK_MODULE_ENABLE_VTK_IOXMLParser="YES"
+ -DVTK_MODULE_ENABLE_VTK_RenderingFreeType="$(usex truetype "YES" "NO")"
+ -DVTK_MODULE_ENABLE_VTK_RenderingFreeTypeFontConfig="$(usex truetype "YES" "NO")"
+ -DVTK_MODULE_ENABLE_VTK_cgns="$(usex cgns "YES" "NO")"
+ -DVTK_MODULE_ENABLE_VTK_doubleconversion="YES"
+ -DVTK_MODULE_ENABLE_VTK_eigen="YES"
+ -DVTK_MODULE_ENABLE_VTK_expat="YES"
+ -DVTK_MODULE_ENABLE_VTK_fmt="YES"
+ -DVTK_MODULE_ENABLE_VTK_freetype="$(usex truetype "YES" "NO")"
+ -DVTK_MODULE_ENABLE_VTK_hdf5="YES"
+ -DVTK_MODULE_ENABLE_VTK_jpeg="YES"
+ -DVTK_MODULE_ENABLE_VTK_jsoncpp="YES"
+ -DVTK_MODULE_ENABLE_VTK_libharu="$(usex minimal "NO" "YES")"
+ -DVTK_MODULE_ENABLE_VTK_libproj="$(usex minimal "NO" "YES")"
+ -DVTK_MODULE_ENABLE_VTK_libxml2="YES"
+ -DVTK_MODULE_ENABLE_VTK_lz4="YES"
+ -DVTK_MODULE_ENABLE_VTK_lzma="YES"
+ -DVTK_MODULE_ENABLE_VTK_netcdf="$(usex netcdf "YES" "NO")"
+ -DVTK_MODULE_ENABLE_VTK_nlohmannjson="YES"
+ -DVTK_MODULE_ENABLE_VTK_ogg="YES"
+ -DVTK_MODULE_ENABLE_VTK_pegtl="YES"
+ -DVTK_MODULE_ENABLE_VTK_png="YES"
+ -DVTK_MODULE_ENABLE_VTK_pugixml="YES"
+ -DVTK_MODULE_ENABLE_VTK_sqlite="YES"
+ -DVTK_MODULE_ENABLE_VTK_theora="$(usex minimal "NO" "YES")"
+ -DVTK_MODULE_ENABLE_VTK_tiff="YES"
+ -DVTK_MODULE_ENABLE_VTK_utf8="YES"
+ -DVTK_MODULE_ENABLE_VTK_vtkvtkm="$(usex vtkm "YES" "NO")"
+ -DVTK_MODULE_ENABLE_VTK_zlib="YES"
+
+ # not packaged in Gentoo
+ -DVTK_MODULE_USE_EXTERNAL_VTK_fast_float=OFF
+ -DVTK_MODULE_USE_EXTERNAL_VTK_exprtk=OFF
+ -DVTK_MODULE_USE_EXTERNAL_VTK_ioss=OFF
+ -DVTK_MODULE_USE_EXTERNAL_VTK_verdict=OFF
+
+ -DVTK_RELOCATABLE_INSTALL=ON
+ -DVTK_UNIFIED_INSTALL_TREE=ON
+
+ -DVTK_SMP_ENABLE_OPENMP="$(usex openmp)"
+ -DVTK_SMP_ENABLE_STDTHREAD="$(usex threads)"
+ -DVTK_SMP_ENABLE_TBB="$(usex tbb)"
+
+ -DVTK_USE_CUDA="$(usex cuda)"
+ # use system libraries where possible
+ -DVTK_USE_EXTERNAL=ON
+ # avoid finding package from either ::guru or ::sci
+ -DVTK_USE_MEMKIND=OFF
+ -DVTK_USE_MPI="$(usex mpi)"
+ -DVTK_USE_TK="$(usex tk)"
+ -DVTK_USE_X=ON
+
+ -DVTK_WHEEL_BUILD=OFF
+
+ -DVTK_WRAP_JAVA="$(usex java)"
+ -DVTK_WRAP_PYTHON="$(usex python)"
+ )
+
+ if use all-modules; then
+ mycmakeargs+=(
+ # no package in ::gentoo
+ -DVTK_ENABLE_OSPRAY=OFF
+ # TODO: some of these are tied to the VTK_ENABLE_REMOTE_MODULES
+ # option. Check whether we can download them clean and enable
+ # them.
+ -DVTK_MODULE_ENABLE_VTK_DomainsMicroscopy="NO"
+ -DVTK_MODULE_ENABLE_VTK_fides="NO"
+ -DVTK_MODULE_ENABLE_VTK_FiltersOpenTURNS="NO"
+ -DVTK_MODULE_ENABLE_VTK_IOADIOS2="NO"
+ -DVTK_MODULE_ENABLE_VTK_IOFides="NO"
+
+ -DVTK_MODULE_ENABLE_VTK_RenderingOpenVR="NO"
+ -DVTK_MODULE_ENABLE_VTK_RenderingOpenXR="NO"
+
+ -DVTK_MODULE_USE_EXTERNAL_VTK_cli11="YES"
+ )
+ fi
+
+ if use boost; then
+ mycmakeargs+=(
+ -DVTK_MODULE_ENABLE_VTK_InfovisBoost="YES"
+ -DVTK_MODULE_ENABLE_VTK_InfovisBoostGraphAlgorithms="YES"
+ )
+ fi
+
+ if use cuda; then
+ cuda_add_sandbox -w
+ addwrite "/proc/self/task"
+
+ if ! test -w /dev/nvidiactl; then
+ # eqawarn "Can't access the GPU at /dev/nvidiactl."
+ # eqawarn "User $(id -nu) is not in the group \"video\"."
+ if [[ -z "${CUDA_GENERATION}" ]] && [[ -z "${CUDA_ARCH_BIN}" ]]; then
+ # build all targets
+ mycmakeargs+=(
+ -DCUDA_GENERATION=""
+ )
+ fi
+ else
+ local -x CUDAARCHS
+ : "${CUDAARCHS:="$(cuda_get_host_native_arch)"}"
+ fi
+
+ # set NVCC_CCBIN
+ local -x CUDAHOSTCXX CUDAHOSTLD
+ CUDAHOSTCXX="$(cuda_get_host_compiler)"
+ CUDAHOSTLD="$(tc-getCXX)"
+ export NVCC_CCBIN="${CUDAHOSTCXX}"
+
+ if tc-is-gcc; then
+ # Filter out IMPLICIT_LINK_DIRECTORIES picked up by CMAKE_DETERMINE_COMPILER_ABI(CUDA)
+ # See /usr/share/cmake/Help/variable/CMAKE_LANG_IMPLICIT_LINK_DIRECTORIES.rst
+ CMAKE_CUDA_IMPLICIT_LINK_DIRECTORIES_EXCLUDE=$(
+ "${CUDAHOSTLD}" -E -v - <<<"int main(){}" |& \
+ grep LIBRARY_PATH | cut -d '=' -f 2 | cut -d ':' -f 1
+ )
+ fi
+ fi
+
+ if use debug; then
+ mycmakeargs+=(
+ -DVTK_DEBUG_LEAKS=ON
+ -DVTK_DEBUG_MODULE=ON
+ -DVTK_DEBUG_MODULE_ALL=ON
+ -DVTK_ENABLE_SANITIZER=ON
+ -DVTK_EXTRA_COMPILER_WARNINGS=ON
+ -DVTK_WARN_ON_DISPATCH_FAILURE=ON
+ )
+ if use rendering; then
+ mycmakeargs+=( -DVTK_OPENGL_ENABLE_STREAM_ANNOTATIONS=ON )
+ fi
+ else
+ : "${CMAKE_BUILD_TYPE:="Release"}"
+ export CMAKE_BUILD_TYPE
+ fi
+
+ if use examples || use test; then
+ mycmakeargs+=( -DVTK_USE_LARGE_DATA=ON )
+ fi
+
+ if use ffmpeg; then
+ mycmakeargs+=( -DVTK_MODULE_ENABLE_VTK_IOFFMPEG="YES" )
+ if use rendering; then
+ mycmakeargs+=( -DVTK_MODULE_ENABLE_VTK_RenderingFFMPEGOpenGL2="YES" )
+ fi
+ fi
+
+ if use gdal; then
+ mycmakeargs+=(
+ -DVTK_MODULE_ENABLE_VTK_GeovisGDAL="YES"
+ -DVTK_MODULE_ENABLE_VTK_IOGDAL="YES"
+ -DVTK_MODULE_ENABLE_VTK_IOGeoJSON="YES"
+ )
+ fi
+
+ if use imaging; then
+ mycmakeargs+=(
+ -DVTK_MODULE_ENABLE_VTK_ImagingColor="YES"
+ -DVTK_MODULE_ENABLE_VTK_ImagingCore="YES"
+ -DVTK_MODULE_ENABLE_VTK_ImagingFourier="YES"
+ -DVTK_MODULE_ENABLE_VTK_ImagingGeneral="YES"
+ -DVTK_MODULE_ENABLE_VTK_ImagingHybrid="YES"
+ -DVTK_MODULE_ENABLE_VTK_ImagingMath="YES"
+ -DVTK_MODULE_ENABLE_VTK_ImagingMorphological="YES"
+ -DVTK_MODULE_ENABLE_VTK_ImagingOpenGL2="YES"
+ -DVTK_MODULE_ENABLE_VTK_ImagingSources="YES"
+ -DVTK_MODULE_ENABLE_VTK_ImagingStatistics="YES"
+ -DVTK_MODULE_ENABLE_VTK_ImagingStencil="YES"
+ )
+ use rendering && mycmakeargs+=( -DVTK_MODULE_ENABLE_VTK_RenderingImage="YES" )
+ fi
+
+ if ! use java && ! use python; then
+ # defaults to ON
+ mycmakeargs+=( -DVTK_ENABLE_WRAPPING=OFF )
+ fi
+
+ if use java; then
+ mycmakeargs+=(
+ -DCMAKE_INSTALL_JARDIR="share/${PN}"
+ -DVTK_ENABLE_WRAPPING=ON
+ -DVTK_MODULE_ENABLE_VTK_Java="YES"
+ -DVTK_JAVA_SOURCE_VERSION="$(java-config -g PROVIDES_VERSION)"
+ -DVTK_JAVA_TARGET_VERSION="$(java-config -g PROVIDES_VERSION)"
+ )
+ fi
+
+ if use minimal; then
+ mycmakeargs+=(
+ -DVTK_MODULE_ENABLE_VTK_CommonComputationalGeometry="YES"
+ -DVTK_MODULE_ENABLE_VTK_CommonExecutionModel="YES"
+ -DVTK_MODULE_ENABLE_VTK_CommonMath="YES"
+ -DVTK_MODULE_ENABLE_VTK_CommonMisc="YES"
+ -DVTK_MODULE_ENABLE_VTK_CommonSystem="YES"
+ -DVTK_MODULE_ENABLE_VTK_CommonTransforms="YES"
+
+ -DVTK_MODULE_ENABLE_VTK_FiltersCore="YES"
+ -DVTK_MODULE_ENABLE_VTK_FiltersExtraction="YES"
+ -DVTK_MODULE_ENABLE_VTK_FiltersGeneral="YES"
+ -DVTK_MODULE_ENABLE_VTK_FiltersGeneric="YES"
+ -DVTK_MODULE_ENABLE_VTK_FiltersGeometry="YES"
+ -DVTK_MODULE_ENABLE_VTK_FiltersHybrid="NO"
+ -DVTK_MODULE_ENABLE_VTK_FiltersHyperTree="YES"
+ -DVTK_MODULE_ENABLE_VTK_FiltersSources="YES"
+ -DVTK_MODULE_ENABLE_VTK_FiltersStatistics="YES"
+ -DVTK_MODULE_ENABLE_VTK_FiltersVerdict="YES"
+
+ -DVTK_MODULE_ENABLE_VTK_IOCore="YES"
+ -DVTK_MODULE_ENABLE_VTK_IOGeometry="NO"
+ -DVTK_MODULE_ENABLE_VTK_IOLegacy="YES"
+
+ -DVTK_MODULE_ENABLE_VTK_ParallelCore="YES"
+ -DVTK_MODULE_ENABLE_VTK_ParallelDIY="YES"
+ )
+ fi
+
+ if use mpi; then
+ mycmakeargs+=(
+ -DVTK_GROUP_ENABLE_MPI="YES"
+ -DVTK_MODULE_ENABLE_VTK_IOH5part="YES"
+ -DVTK_MODULE_ENABLE_VTK_IOMPIParallel="YES"
+ -DVTK_MODULE_ENABLE_VTK_IOParallel="YES"
+ -DVTK_MODULE_ENABLE_VTK_IOParallelNetCDF="$(usex netcdf "YES" "NO")"
+ -DVTK_MODULE_ENABLE_VTK_IOParallelXML="YES"
+ -DVTK_MODULE_ENABLE_VTK_ParallelMPI="YES"
+ -DVTK_MODULE_ENABLE_VTK_h5part="YES"
+ -DVTK_MODULE_USE_EXTERNAL_VTK_verdict=OFF
+ )
+ use imaging && mycmakeargs+=( -DVTK_MODULE_ENABLE_VTK_IOMPIImage="YES" )
+ use python && mycmakeargs+=( -DVTK_MODULE_ENABLE_VTK_ParallelMPI4Py="YES" )
+ if use rendering; then
+ mycmakeargs+=(
+ -DVTK_MODULE_ENABLE_VTK_RenderingParallel="YES"
+ -DVTK_MODULE_ENABLE_VTK_RenderingParallelLIC="YES"
+ )
+ fi
+ use vtkm && mycmakeargs+=( -DVTKm_ENABLE_MPI=ON )
+ else
+ mycmakeargs+=( -DVTK_GROUP_ENABLE_MPI="NO" )
+ fi
+
+ use mysql && mycmakeargs+=( -DVTK_MODULE_ENABLE_VTK_IOMySQL="YES" )
+ use odbc && mycmakeargs+=( -DVTK_MODULE_ENABLE_VTK_IOODBC="YES" )
+ use openvdb && mycmakeargs+=( -DOpenVDB_CMAKE_PATH="${ESYSROOT}/usr/$(get_libdir)/cmake/OpenVDB" )
+ use postgres && mycmakeargs+=( -DVTK_MODULE_ENABLE_VTK_IOPostgreSQL="YES" )
+
+ if use python; then
+ mycmakeargs+=(
+ -DPython3_EXECUTABLE="${PYTHON}"
+ -DVTK_ENABLE_WRAPPING=ON
+ -DVTK_MODULE_ENABLE_VTK_Python="YES"
+ -DVTK_MODULE_ENABLE_VTK_PythonInterpreter="YES"
+ -DVTK_MODULE_ENABLE_VTK_WrappingPythonCore="YES"
+ -DVTK_PYTHON_OPTIONAL_LINK="OFF"
+ -DVTK_PYTHON_SITE_PACKAGES_SUFFIX="lib/${EPYTHON}/site-packages"
+ )
+ use rendering && mycmakeargs+=( -DVTK_MODULE_ENABLE_VTK_PythonContext2D="YES" )
+ fi
+
+ if use qt6; then
+ mycmakeargs+=(
+ -DCMAKE_INSTALL_QMLDIR="${EPFREIX}/usr/$(get_libdir)/qt6/qml"
+ -DVTK_QT_VERSION="6"
+ )
+ if has_version "dev-qt/qtbase:6[gles2-only]" || use gles2-only; then
+ mycmakeargs+=(
+ # Force using EGL & GLES
+ -DVTK_OPENGL_HAS_EGL=ON
+ -DVTK_OPENGL_USE_GLES=ON
+ )
+ fi
+ else
+ mycmakeargs+=( -DVTK_GROUP_ENABLE_Qt="NO" )
+ fi
+
+ if use qt6; then
+ mycmakeargs+=(
+ -DVTK_GROUP_ENABLE_Qt:STRING="YES"
+ -DVTK_MODULE_ENABLE_VTK_GUISupportQt="YES"
+ -DVTK_MODULE_ENABLE_VTK_GUISupportQtQuick="YES"
+ )
+ if use mysql || use postgres; then
+ mycmakeargs+=( -DVTK_MODULE_ENABLE_VTK_GUISupportQtSQL="YES" )
+ fi
+ if use rendering; then
+ mycmakeargs+=( -DVTK_MODULE_ENABLE_VTK_RenderingQt="YES" )
+ fi
+ if use views; then
+ mycmakeargs+=( -DVTK_MODULE_ENABLE_VTK_ViewsQt="YES" )
+ fi
+ fi
+
+ if use rendering; then
+ mycmakeargs+=(
+ -DVTK_ENABLE_OSPRAY=OFF
+
+ -DVTK_MODULE_ENABLE_VTK_IOExportGL2PS="YES"
+ -DVTK_MODULE_ENABLE_VTK_RenderingAnnotation="YES"
+ -DVTK_MODULE_ENABLE_VTK_RenderingContext2D="YES"
+ -DVTK_MODULE_ENABLE_VTK_RenderingContextOpenGL2="YES"
+ -DVTK_MODULE_ENABLE_VTK_RenderingCore="YES"
+ -DVTK_MODULE_ENABLE_VTK_RenderingExternal="YES"
+ -DVTK_MODULE_ENABLE_VTK_RenderingGL2PSOpenGL2="YES"
+ -DVTK_MODULE_ENABLE_VTK_RenderingHyperTreeGrid="YES"
+ -DVTK_MODULE_ENABLE_VTK_RenderingLICOpenGL2="YES"
+ -DVTK_MODULE_ENABLE_VTK_RenderingLOD="YES"
+ -DVTK_MODULE_ENABLE_VTK_RenderingLabel="YES"
+ -DVTK_MODULE_ENABLE_VTK_RenderingOpenGL2="YES"
+ -DVTK_MODULE_ENABLE_VTK_RenderingRayTracing="YES"
+ -DVTK_MODULE_ENABLE_VTK_RenderingSceneGraph="YES"
+ -DVTK_MODULE_ENABLE_VTK_RenderingUI="YES"
+ -DVTK_MODULE_ENABLE_VTK_RenderingVolume="YES"
+ -DVTK_MODULE_ENABLE_VTK_RenderingVolumeAMR="YES"
+ -DVTK_MODULE_ENABLE_VTK_RenderingVolumeOpenGL2="YES"
+ -DVTK_MODULE_ENABLE_VTK_RenderingZSpace="NO"
+ -DVTK_MODULE_ENABLE_VTK_gl2ps="YES"
+ -DVTK_MODULE_ENABLE_VTK_glew="YES"
+ -DVTK_MODULE_ENABLE_VTK_opengl="YES"
+
+ -DVTK_USE_SDL2="$(usex sdl "YES" "NO")"
+ )
+ use python && mycmakeargs+=( -DVTK_MODULE_ENABLE_VTK_RenderingMatplotlib="YES" )
+ use tk && mycmakeargs+=( -DVTK_MODULE_ENABLE_VTK_RenderingTk="YES" )
+ use views && mycmakeargs+=( -DVTK_MODULE_ENABLE_VTK_ViewsContext2D="YES" )
+ use web && mycmakeargs+=( -DVTK_MODULE_ENABLE_VTK_RenderingVtkJS="YES" )
+ fi
+
+ # Testing has been changed in 9.2.5: it is now allowed without
+ # requiring to download, if the data files are available locally!
+ if use test; then
+ mycmakeargs+=(
+ -DVTK_BUILD_TESTING=ON
+ # disable fetching data files for the default 'all' target
+ -DVTK_DATA_EXCLUDE_FROM_ALL=OFF
+
+ # requested even if all use flags are off
+ -DVTK_MODULE_ENABLE_VTK_octree="YES"
+ -DVTK_MODULE_ENABLE_VTK_ViewsCore="YES"
+
+ -DVTK_MODULE_USE_EXTERNAL_VTK_cli11="YES"
+ )
+ else
+ mycmakeargs+=( -DVTK_BUILD_TESTING=OFF )
+ fi
+
+ # FIXME: upstream provides 4 threading models, as of 9.1.0. These are
+ # sequential, stdthread, openmp and tbb. AFAICS all of them can be
+ # enabled at the same time. Sequential and STDThread are enabled by
+ # default. The default selected type for the build is sequential.
+ # Assuming sequential < STDThread < openmp < tbb wrt speed, although
+ # this is dependent on the actual scenario where threading is used.
+ if use tbb; then
+ mycmakeargs+=( -DVTK_SMP_IMPLEMENTATION_TYPE="TBB" )
+ elif use openmp; then # FIXME doesn't work with clang
+ mycmakeargs+=( -DVTK_SMP_IMPLEMENTATION_TYPE="OpenMP" )
+ elif use threads; then
+ mycmakeargs+=( -DVTK_SMP_IMPLEMENTATION_TYPE="STDThread" )
+ else
+ mycmakeargs+=( -DVTK_SMP_IMPLEMENTATION_TYPE="Sequential" )
+ fi
+
+ use tk && mycmakeargs+=( -DVTK_GROUP_ENABLE_Tk="YES" )
+
+ if use views; then
+ mycmakeargs+=(
+ -DVTK_MODULE_ENABLE_VTK_ViewsCore="YES"
+ -DVTK_MODULE_ENABLE_VTK_ViewsInfovis="YES"
+ )
+ fi
+
+ if use vtkm; then
+ mycmakeargs+=(
+ -DVTK_MODULE_ENABLE_VTK_AcceleratorsVTKmCore="YES"
+ -DVTK_MODULE_ENABLE_VTK_AcceleratorsVTKmDataModel="YES"
+ -DVTK_MODULE_ENABLE_VTK_AcceleratorsVTKmFilters="YES"
+ -DVTKm_ENABLE_CPACK="no" # "Enable CPack packaging of VTKm" ON
+ -DVTKm_ENABLE_CUDA="$(usex cuda)" # "Enable Cuda support" OFF
+ -DVTKm_ENABLE_DOCUMENTATION="$(usex doc)" # "Build Doxygen documentation" OFF
+ -DVTKm_ENABLE_EXAMPLES="$(usex examples)" # "Build examples" OFF
+ -DVTKm_ENABLE_HDF5_IO="yes" # "Enable HDF5 support" OFF
+ -DVTKm_ENABLE_LOGGING="$(usex logging)" # "Enable VTKm Logging" ON
+ -DVTKm_ENABLE_MPI="$(usex mpi)" # "Enable MPI support" OFF
+ -DVTKm_ENABLE_OPENMP="$(usex openmp)" # "Enable OpenMP support" OFF
+ -DVTKm_ENABLE_RENDERING="$(usex rendering)" # "Enable rendering library" ON
+ -DVTKm_ENABLE_TBB="$(usex tbb)" # "Enable TBB support" OFF
+ -DVTKm_ENABLE_TESTING="$(usex test)" # "Enable VTKm Testing" ON
+ -DVTKm_ENABLE_TUTORIALS="no" # "Build tutorials" OFF
+ -DVTKm_NO_ASSERT_CUDA="yes" # "Disable assertions for CUDA devices." ON
+ -DVTKm_NO_ASSERT_HIP="yes" # "Disable assertions for HIP devices." ON
+ -DVTKm_NO_ASSERT="no" # "Disable assertions in debugging builds." OFF
+ -DVTKm_NO_INSTALL_README_LICENSE="ON" # bug #793221 # "disable the installation of README and LICENSE files" OFF
+ -DVTKm_SKIP_LIBRARY_VERSIONS="no" # "Skip versioning VTK-m libraries" OFF
+ -DVTKm_Vectorization="none" # only sets compiler flags
+ )
+ fi
+
+ if use web; then
+ mycmakeargs+=(
+ -DVTK_MODULE_ENABLE_VTK_WebCore="YES"
+ -DVTK_MODULE_ENABLE_VTK_WebGLExporter="YES"
+ )
+ use python && mycmakeargs+=( -DVTK_MODULE_ENABLE_VTK_WebPython="YES" )
+ fi
+
+ cmake_src_configure
+}
+
+src_compile() {
+ use test && cmake_build VTKData
+ cmake_src_compile
+}
+
+src_test() {
+ vtk_add_sandbox
+
+ addwrite /dev/fuse
+
+ # The build system prepends /usr/$(get_libdir) to the RUNPATH instead of appending.
+ # Set LD_LIBRARY_PATH to use the just build libraries.
+ local -x LD_LIBRARY_PATH="${BUILD_DIR}/$(get_libdir)${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH}"
+
+ # export VTK_SMP_BACKEND_IN_USE="STDThread"
+
+ local -x -a CMAKE_SKIP_TESTS
+
+ if [[ "${CMAKE_RUN_OPTIONAL_TESTS:=yes}" != "yes" ]]; then
+ local -a REALLY_BAD_TESTS BAD_TESTS RANDOM_FAIL_TESTS
+ # don't work at all
+ REALLY_BAD_TESTS=(
+ # File missing? ExternalData/Testing/Data/MotionFX/position_file/Sprocket_New.prn
+ "VTK::IOMotionFXCxx-TestMotionFXCFGReaderPositionFile$" # (Subprocess aborted)
+
+ "VTK::InteractionWidgetsCxx-TestBrokenLineWidget$"
+ "VTK::AcceleratorsVTKmFiltersCxx-TestVTKMClipWithImplicitFunction$" # (NUMERICAL)
+ "VTK::AcceleratorsVTKmFiltersCxx-TestVTKMHistogram$" # (Failed)
+ "VTK::AcceleratorsVTKmFiltersCxx-TestVTKMMarchingCubes$" # (Failed)
+ "VTK::AcceleratorsVTKmFiltersCxx-TestVTKMMarchingCubes2$" # (Failed)
+ "VTK::ChartsCoreCxx-TestChartDoubleColors$" # (Failed)
+ "VTK::ChartsCoreCxx-TestChartDoubleColorsOpaque$" # (Failed)
+ "VTK::ChartsCoreCxx-TestParallelCoordinatesDouble$" # (Failed)
+ "VTK::CommonDataModelCxx-TestHyperTreeGridGeometricLocator$" # (Failed)
+ "VTK::CommonDataModelCxx-TestTriangle$" # (Failed)
+ "VTK::CommonDataModelCxx-UnitTestCells$" # (Failed)
+ "VTK::FiltersCoreCxx-TestDecimatePolylineFilter$" # (Failed)
+ "VTK::FiltersCoreCxx-TestImplicitPolyDataDistanceCube$" # (Failed)
+ "VTK::FiltersCorePython-TestSphereTreeFilter$" # (Failed)
+ "VTK::FiltersFlowPathsCxx-TestEvenlySpacedStreamlines2D$" # (Failed)
+ "VTK::FiltersGeneralCxx-TestContourTriangulatorHoles$" # (Failed)
+ "VTK::FiltersParallelCxx-TestAngularPeriodicFilter$" # (Failed)
+ "VTK::FiltersParallelDIY2Cxx-MPI-TestProbeLineFilter$" # (Failed)
+ "VTK::FiltersSelectionCxx-TestLinearSelector3D$" # (Failed)
+ "VTK::GUISupportQtQuickCxx-TestQQuickVTKRenderItem$" # (Failed)
+ "VTK::GUISupportQtQuickCxx-TestQQuickVTKRenderItemWidget$" # (Failed)
+ "VTK::GUISupportQtQuickCxx-TestQQuickVTKRenderWindow$" # (Failed)
+ "VTK::RenderingExternalCxx-TestGLUTRenderWindow$" # (Failed)
+ "VTK::RenderingFreeTypeFontConfigCxx-TestSystemFontRendering$" # (Failed)
+ "VTK::IOExportGL2PSCxx-TestGL2PSExporterVolumeRaster" # (Failed)
+ # "VTK::IOExportGL2PSCxx-TestGL2PSExporterVolumeRaster-RasterizePNG$" # (Not Run)
+ # "VTK::IOExportGL2PSCxx-TestGL2PSExporterVolumeRaster-VerifyRasterizedPDFPNG$" # (Failed)
+ # "VTK::IOExportGL2PSCxx-TestGL2PSExporterVolumeRaster-VerifyRasterizedPNG$" # (Failed)
+ "VTK::IOExportPDFCxx-TestPDFTransformedText-VerifyRasterizedPDFPNG$" # (Failed)
+ "VTK::IOOCCTCxx-TestOCCTReader$" # (Failed)
+ "VTK::RenderingCorePython-pickImageData$" # (Failed)
+ "VTK::RenderingRayTracing-HeaderTest$" # (Failed)
+ )
+
+ # don't work in src_test but when on their own
+ BAD_TESTS=(
+ "VTK::AcceleratorsVTKmCoreCxx-TestVTKMImplicitDataArray$" # (NUMERICAL)
+ "VTK::AcceleratorsVTKmFiltersCxx-TestVTKMCleanGrid$" # (NUMERICAL)
+ "VTK::AcceleratorsVTKmFiltersCxx-TestVTKMClip$" # (NUMERICAL)
+ "VTK::AcceleratorsVTKmFiltersCxx-TestVTKMExternalFaces$" # (Failed)
+ "VTK::AcceleratorsVTKmFiltersCxx-TestVTKMExtractVOI$" # (NUMERICAL)
+ "VTK::AcceleratorsVTKmFiltersCxx-TestVTKMLevelOfDetail$" # (NUMERICAL)
+ "VTK::AcceleratorsVTKmFiltersCxx-TestVTKMPointElevation$" # (NUMERICAL)
+ "VTK::AcceleratorsVTKmFiltersCxx-TestVTKMPointTransform$" # (NUMERICAL)
+ "VTK::AcceleratorsVTKmFiltersCxx-TestVTKMPolyDataNormals$" # (NUMERICAL)
+ "VTK::AcceleratorsVTKmFiltersCxx-TestVTKMThreshold$" # (NUMERICAL)
+ "VTK::AcceleratorsVTKmFiltersCxx-TestVTKMThreshold2$" # (NUMERICAL)
+ "VTK::AcceleratorsVTKmFiltersCxx-TestVTKMTriangleMeshPointNormals$" # (NUMERICAL)
+ "VTK::AcceleratorsVTKmFiltersCxx-TestVTKMWarpScalar$" # (NUMERICAL)
+ "VTK::AcceleratorsVTKmFiltersCxx-TestVTKMWarpVector$" # (NUMERICAL)
+ "VTK::ImagingOpenGL2Cxx-TestOpenGLImageGradient$" # (NUMERICAL)
+ "VTK::InteractionWidgetsCxx-TestResliceCursorWidget2$" # (Failed)
+ "VTK::InteractionWidgetsCxx-TestResliceCursorWidget3$" # (Failed)
+ "VTK::InteractionWidgetsPython-TestTensorWidget2$" # (Failed)
+ "VTK::RenderingCoreCxx-TestTextureRGBADepthPeeling$" # (Failed)
+ "VTK::RenderingLICOpenGL2Cxx-SurfaceLICCurvedContrastEnhancedBlended$" # (NUMERICAL)
+ "VTK::RenderingLICOpenGL2Cxx-SurfaceLICCurvedContrastEnhancedBlendedSmallGrain$" # (NUMERICAL)
+ "VTK::RenderingLICOpenGL2Cxx-SurfaceLICCurvedContrastEnhancedColorBlendedSmallGrain$" # (NUMERICAL)
+ "VTK::RenderingLICOpenGL2Cxx-SurfaceLICCurvedContrastEnhancedColorBlendedSmallGrainMask$" # (NUMERICAL)
+ "VTK::RenderingLICOpenGL2Cxx-SurfaceLICCurvedContrastEnhancedColorMappedSmallGrain$" # (NUMERICAL)
+ "VTK::RenderingLICOpenGL2Cxx-SurfaceLICCurvedContrastEnhancedColorMappedSmallGrainMask$" # (NUMERICAL)
+ "VTK::RenderingLICOpenGL2Cxx-SurfaceLICCurvedContrastEnhancedMapped$" # (NUMERICAL)
+ "VTK::RenderingLICOpenGL2Cxx-SurfaceLICCurvedContrastEnhancedMappedSmallGrain$" # (NUMERICAL)
+ "VTK::RenderingLICOpenGL2Cxx-SurfaceLICCurvedContrastEnhancedMappedSmallVectorNormalizeOff$" # (NUMERICAL)
+ "VTK::RenderingLICOpenGL2Cxx-SurfaceLICCurvedContrastEnhancedSmallGrainMask$" # (NUMERICAL)
+ "VTK::RenderingLICOpenGL2Cxx-SurfaceLICCurvedDefaults$" # (NUMERICAL)
+ "VTK::RenderingLICOpenGL2Cxx-SurfaceLICCurvedDefaultsColor$" # (NUMERICAL)
+ "VTK::RenderingLICOpenGL2Cxx-SurfaceLICCurvedEnhancedVectorNormalizeOff$" # (NUMERICAL)
+ "VTK::RenderingLICOpenGL2Cxx-SurfaceLICMultiBlockContrastEnhancedPerlin$" # (NUMERICAL)
+ "VTK::RenderingLICOpenGL2Cxx-SurfaceLICPlanarContrastEnhanced$" # (NUMERICAL)
+ "VTK::RenderingLICOpenGL2Cxx-SurfaceLICPlanarDefaults$" # (NUMERICAL)
+ "VTK::RenderingLICOpenGL2Cxx-SurfaceLICPlanarVectorNormalizeOff$" # (NUMERICAL)
+ "VTK::RenderingLICOpenGL2Cxx-SurfaceLICPlanarVectorNormalizeOffMediumGrainPerlin$" # (NUMERICAL)
+ "VTK::RenderingLICOpenGL2Cxx-SurfaceLICPlanarVectorNormalizeOffMediumGrainUniform$" # (NUMERICAL)
+ "VTK::RenderingLICOpenGL2Cxx-TestImageDataLIC2D$" # (NUMERICAL)
+ "VTK::RenderingLICOpenGL2Cxx-TestStructuredGridLIC2DXSlice$" # (NUMERICAL)
+ "VTK::RenderingLICOpenGL2Cxx-TestStructuredGridLIC2DYSlice$" # (NUMERICAL)
+ "VTK::RenderingLICOpenGL2Cxx-TestStructuredGridLIC2DZSlice$" # (NUMERICAL)
+ "VTK::RenderingMatplotlibCxx-TestContextMathTextImage$" # (NUMERICAL)
+ "VTK::RenderingMatplotlibCxx-TestIndexedLookupScalarBar$" # (NUMERICAL)
+ "VTK::RenderingMatplotlibCxx-TestMathTextActor$" # (NUMERICAL)
+ "VTK::RenderingMatplotlibCxx-TestMathTextActor3D$" # (NUMERICAL)
+ "VTK::RenderingMatplotlibCxx-TestRenderString$" # (NUMERICAL)
+ "VTK::RenderingMatplotlibCxx-TestScalarBarCombinatorics$" # (NUMERICAL)
+ "VTK::RenderingMatplotlibCxx-TestStringToPath$" # (NUMERICAL)
+ "VTK::RenderingOpenGL2Cxx-TestGlyph3DMapperPickability$" # (Failed)
+ )
+
+ RANDOM_FAIL_TESTS=(
+ "VTK::FiltersFlowPathsCxx-TestStreamSurface$"
+ "VTK::AcceleratorsVTKmFiltersCxx-TestVTKMAbort$"
+ "VTK::AcceleratorsVTKmFiltersPython-TestVTKMSlice$"
+ )
+
+ CMAKE_SKIP_TESTS+=(
+ "${REALLY_BAD_TESTS[@]}"
+ "${BAD_TESTS[@]}"
+ "${RANDOM_FAIL_TESTS[@]}"
+ )
+ fi
+
+ CMAKE_SKIP_TESTS+=(
+ # requires VTK_USE_MICROSOFT_MEDIA_FOUNDATION
+ "VTK::IOMovieCxx-Test" # Skipped
+ )
+
+ if use openmp; then
+ # TODO Times out under openmp
+ CMAKE_SKIP_TESTS+=(
+ "^VTK::CommonCoreCxx-TestSMP$"
+ )
+ fi
+
+ virtx cmake_src_test -j1
+}
+
+src_install() {
+ use web && webapp_src_preinst
+
+ # Stop web page images from being compressed
+ if use doc; then
+ HTML_DOCS=( "${WORKDIR}/html/." )
+ fi
+
+ cmake_src_install
+
+ use java && java-pkg_regjar "${ED}/usr/share/${PN}/${PN}.jar"
+
+ # install examples
+ if use examples; then
+ einfo "Installing examples"
+ mv -v {E,e}xamples || die
+ dodoc -r examples
+ docompress -x "/usr/share/doc/${PF}/examples"
+
+ einfo "Installing datafiles"
+ insinto "/usr/share/${PN}/data"
+ doins -r "${S}/.ExternalData"
+ fi
+
+ use python && python_optimize
+
+ use web && webapp_src_install
+}
+
+# webapp.eclass exports these but we want it optional #534036
+pkg_postinst() {
+ use web && webapp_pkg_postinst
+
+ if use examples; then
+ einfo "You can get more and updated examples at"
+ einfo "https://kitware.github.io/vtk-examples/site/"
+ fi
+}
+
+pkg_prerm() {
+ use web && webapp_pkg_prerm
+}
diff --git a/sci-libs/vtk/vtk-9.3.1-r3.ebuild b/sci-libs/vtk/vtk-9.3.1-r3.ebuild
new file mode 100644
index 00000000..b5191951
--- /dev/null
+++ b/sci-libs/vtk/vtk-9.3.1-r3.ebuild
@@ -0,0 +1,1023 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+# TODO:
+# - add USE flag for remote modules? Those modules can be downloaded
+# properly before building.
+# - replace usex by usev where applicable
+
+PYTHON_COMPAT=( python3_{10..13} )
+WEBAPP_OPTIONAL=yes
+WEBAPP_MANUAL_SLOT=yes
+
+inherit check-reqs cmake cuda java-pkg-opt-2 multiprocessing python-single-r1 toolchain-funcs virtualx webapp
+
+# Short package version
+MY_PV="$(ver_cut 1-2)"
+
+DESCRIPTION="The Visualization Toolkit"
+HOMEPAGE="https://www.vtk.org/"
+SRC_URI="
+ https://www.vtk.org/files/release/${MY_PV}/VTK-${PV}.tar.gz
+ doc? ( https://www.vtk.org/files/release/${MY_PV}/vtkDocHtml-${PV}.tar.gz )
+ examples? (
+ https://www.vtk.org/files/release/${MY_PV}/VTKLargeData-${PV}.tar.gz
+ https://www.vtk.org/files/release/${MY_PV}/VTKLargeDataFiles-${PV}.tar.gz
+ )
+ test? (
+ https://www.vtk.org/files/release/${MY_PV}/VTKData-${PV}.tar.gz
+ https://www.vtk.org/files/release/${MY_PV}/VTKDataFiles-${PV}.tar.gz
+ https://www.vtk.org/files/release/${MY_PV}/VTKLargeData-${PV}.tar.gz
+ https://www.vtk.org/files/release/${MY_PV}/VTKLargeDataFiles-${PV}.tar.gz
+ )
+"
+S="${WORKDIR}/VTK-${PV}"
+
+LICENSE="BSD LGPL-2"
+SLOT="0/${MY_PV}"
+KEYWORDS="amd64 ~arm ~arm64 ~x86 ~amd64-linux ~x86-linux"
+
+# TODO: Like to simplify these. Mostly the flags related to Groups.
+IUSE="all-modules boost +cgns cuda debug doc examples ffmpeg gdal gles2-only imaging
+ java las +logging minimal mpi mysql +netcdf odbc opencascade openmp openvdb pdal postgres
+ python qt6 +rendering sdl tbb test +threads tk +truetype video_cards_nvidia +views vtkm web"
+
+RESTRICT="!test? ( test )"
+
+REQUIRED_USE="
+ all-modules? (
+ boost cgns ffmpeg gdal imaging las mysql netcdf odbc opencascade openvdb pdal
+ postgres rendering truetype views
+ )
+ cuda? ( video_cards_nvidia vtkm )
+ java? ( rendering )
+ minimal? ( !gdal !rendering )
+ !minimal? ( cgns netcdf rendering )
+ python? ( ${PYTHON_REQUIRED_USE} )
+ qt6? ( rendering )
+ sdl? ( rendering )
+ tk? ( python rendering )
+ web? ( python )
+ rendering? ( truetype views )
+"
+
+# eigen, nlohmann_json, pegtl and utfcpp are referenced in the cmake files
+# and need to be available when VTK consumers configure the dependencies.
+RDEPEND="
+ app-arch/lz4:=
+ app-arch/xz-utils
+ dev-db/sqlite:3
+ dev-libs/double-conversion:=
+ dev-libs/expat
+ dev-libs/icu:=
+ dev-libs/jsoncpp:=
+ >=dev-libs/libfmt-8.1.1:=
+ dev-libs/libxml2:2
+ dev-libs/libzip:=
+ dev-libs/pugixml
+ media-libs/freetype
+ media-libs/libjpeg-turbo
+ media-libs/libogg
+ media-libs/libpng:=
+ media-libs/tiff:=
+ sci-libs/hdf5:=[mpi=]
+ sci-libs/proj:=
+ sys-libs/zlib
+ boost? ( dev-libs/boost:=[mpi?] )
+ cgns? (
+ >=sci-libs/cgnslib-4.1.1:=[hdf5,mpi=]
+ sci-libs/hdf5[cxx]
+ )
+ cuda? ( dev-util/nvidia-cuda-toolkit:= )
+ ffmpeg? ( media-video/ffmpeg:= )
+ gdal? ( sci-libs/gdal:= )
+ java? ( >=virtual/jdk-11:= )
+ las? ( sci-geosciences/liblas )
+ !minimal? (
+ >=media-libs/libharu-2.4.0:=
+ media-libs/libtheora:=
+ )
+ mpi? ( virtual/mpi[romio] )
+ mysql? ( dev-db/mariadb-connector-c )
+ netcdf? ( sci-libs/netcdf:=[mpi=] )
+ odbc? ( dev-db/unixODBC )
+ openvdb? ( media-gfx/openvdb:= )
+ opencascade? ( sci-libs/opencascade:= )
+ pdal? ( sci-libs/pdal:= )
+ postgres? ( dev-db/postgresql:= )
+ python? (
+ ${PYTHON_DEPS}
+ $(python_gen_cond_dep 'mpi? ( dev-python/mpi4py[${PYTHON_USEDEP}] )')
+ $(python_gen_cond_dep 'rendering? ( dev-python/matplotlib[${PYTHON_USEDEP}] )')
+ )
+ qt6? (
+ dev-qt/qtbase:6[gui,opengl,sql,widgets]
+ dev-qt/qtdeclarative:6[opengl]
+ dev-qt/qtshadertools:6
+ x11-libs/libxkbcommon
+ )
+ sdl? ( media-libs/libsdl2 )
+ rendering? (
+ media-libs/glew:=
+ media-libs/libglvnd[X]
+ x11-libs/gl2ps
+ x11-libs/libICE
+ x11-libs/libXcursor
+ x11-libs/libXext
+ )
+ tbb? ( dev-cpp/tbb:= )
+ tk? ( dev-lang/tk:= )
+ truetype? ( media-libs/fontconfig )
+ video_cards_nvidia? ( x11-drivers/nvidia-drivers[tools,static-libs] )
+ views? (
+ x11-libs/libICE
+ x11-libs/libXext
+ )
+ web? ( ${WEBAPP_DEPEND} )
+"
+
+DEPEND="
+ ${RDEPEND}
+ dev-cpp/cli11
+ dev-cpp/eigen
+ dev-cpp/nlohmann_json
+ >=dev-libs/pegtl-3
+ dev-libs/utfcpp
+ test? (
+ media-libs/glew
+ x11-libs/libXcursor
+ rendering? ( media-libs/freeglut )
+ )
+"
+BDEPEND="virtual/pkgconfig"
+
+PATCHES=(
+ "${FILESDIR}/${PN}-9.2.5-pegtl-3.x.patch"
+ "${FILESDIR}/${PN}-9.3.0-java.patch"
+ "${FILESDIR}/${PN}-9.3.0-opencascade.patch"
+ "${FILESDIR}/${PN}-9.3.0-ThrustPatches.patch"
+ "${FILESDIR}/${PN}-9.3.0-core-octree_node.txx.patch"
+ "${FILESDIR}/${PN}-9.3.0-ThirdParty-gcc15.patch"
+ "${FILESDIR}/${PN}-9.3.0-update-for-cuda-12.6.patch"
+ "${FILESDIR}/${PN}-9.3.1-fix-fmt-11.patch"
+)
+
+DOCS=( CONTRIBUTING.md README.md )
+
+vtk_check_reqs() {
+ local dsk=4096
+
+ dsk=$(( $(usex doc 3072 0) + dsk ))
+ dsk=$(( $(usex examples 3072 0) + dsk ))
+ dsk=$(( $(usex cuda 8192 0) + dsk ))
+ export CHECKREQS_DISK_BUILD=${dsk}M
+
+ # In case users are not aware of the extra NINJAOPTS, check
+ # for the more common MAKEOPTS, in case NINJAOPTS is empty
+ local jobs=1
+ if [[ -n "${NINJAOPTS}" ]]; then
+ jobs=$(makeopts_jobs "${NINJAOPTS}" "$(get_nproc)")
+ elif [[ -n "${MAKEOPTS}" ]]; then
+ jobs=$(makeopts_jobs "${MAKEOPTS}" "$(get_nproc)")
+ fi
+
+ if use cuda; then
+ local mem=$(( $(usex cuda 7168 0) ))
+ mem=$(( mem * $(( jobs > 4 ? 4 : jobs )) ))
+ export CHECKREQS_MEMORY=${mem}M
+ fi
+
+ "check-reqs_pkg_${EBUILD_PHASE}"
+}
+
+cuda_get_host_compiler() {
+ if [[ -n "${NVCC_CCBIN}" ]]; then
+ echo "${NVCC_CCBIN}"
+ return
+ fi
+
+ if [[ -n "${CUDAHOSTCXX}" ]]; then
+ echo "${CUDAHOSTCXX}"
+ return
+ fi
+
+ einfo "Trying to find working CUDA host compiler"
+
+ if ! tc-is-gcc && ! tc-is-clang; then
+ die "$(tc-get-compiler-type) compiler is not supported"
+ fi
+
+ local compiler compiler_type compiler_version
+ local package package_version
+ local NVCC_CCBIN_default
+
+ compiler_type="$(tc-get-compiler-type)"
+ compiler_version="$("${compiler_type}-major-version")"
+
+ # try the default compiler first
+ NVCC_CCBIN="$(tc-getCXX)"
+ NVCC_CCBIN_default="${NVCC_CCBIN}-${compiler_version}"
+
+ compiler="${NVCC_CCBIN/%-${compiler_version}}"
+
+ # store the package so we can re-use it later
+ package="sys-devel/${compiler_type}"
+ package_version="${package}"
+
+ ebegin "testing ${NVCC_CCBIN_default} (default)"
+
+ while ! nvcc -v -ccbin "${NVCC_CCBIN}" - -x cu <<<"int main(){}" &>> "${T}/cuda_get_host_compiler.log" ; do
+ eend 1
+
+ while true; do
+ # prepare next version
+ if ! package_version="<$(best_version "${package_version}")"; then
+ die "could not find a supported version of ${compiler}"
+ fi
+
+ NVCC_CCBIN="${compiler}-$(ver_cut 1 "${package_version/#<${package}-/}")"
+
+ [[ "${NVCC_CCBIN}" != "${NVCC_CCBIN_default}" ]] && break
+ done
+ ebegin "testing ${NVCC_CCBIN}"
+ done
+ eend $?
+
+ # clean temp file
+ rm -f a.out
+
+ echo "${NVCC_CCBIN}"
+ export NVCC_CCBIN
+}
+
+cuda_get_host_native_arch() {
+ [[ -n ${CUDAARCHS} ]] && echo "${CUDAARCHS}"
+
+ __nvcc_device_query || die "failed to query the native device"
+}
+
+vtk_add_sandbox() {
+ local WRITE=()
+
+ # mesa via virtx will make use of udmabuf if it exists
+ [[ -c "/dev/udmabuf" ]] && WRITE+=( "/dev/udmabuf" )
+
+ readarray -t dris <<<"$(
+ for dri in /sys/class/drm/*/dev; do
+ realpath "/dev/char/$(cat "${dri}")"
+ eqawarn "dri ${dri} $(cat "${dri}") $(realpath "/dev/char/$(cat "${dri}")")"
+ done
+ )"
+
+ [[ -n "${dris[*]}" ]] && WRITE+=( "${dris[@]}" )
+
+ if [[ -d /sys/module/nvidia ]]; then
+ # /dev/nvidia{0-9}
+ readarray -t nvidia_devs <<<"$(
+ find /dev -regextype posix-extended -regex '/dev/nvidia(|-(nvswitch|vgpu))[0-9]*'
+ )"
+ [[ -n "${nvidia_devs[*]}" ]] && WRITE+=( "${nvidia_devs[@]}" )
+
+ WRITE+=(
+ "/dev/nvidiactl"
+ "/dev/nvidia-modeset"
+
+ "/dev/nvidia-vgpuctl"
+
+ "/dev/nvidia-nvlink"
+ "/dev/nvidia-nvswitchctl"
+
+ "/dev/nvidia-uvm"
+ "/dev/nvidia-uvm-tools"
+
+ # "/dev/nvidia-caps/nvidia-cap%d"
+ "/dev/nvidia-caps/"
+ # "/dev/nvidia-caps-imex-channels/channel%d"
+ "/dev/nvidia-caps-imex-channels/"
+ )
+ fi
+
+ # for portage
+ WRITE+=( "/proc/self/task/" )
+
+ local dev
+ for dev in "${WRITE[@]}"; do
+ [[ ! -e "${dev}" ]] && return
+
+ [[ -w "${dev}" ]] && return
+
+ eqawarn "addwrite ${dev}"
+ addwrite "${dev}"
+ if [[ ! -d "${dev}" ]] && [[ ! -w "${dev}" ]]; then
+ eerror "can not access ${dev} after addwrite"
+ fi
+ done
+}
+
+pkg_pretend() {
+ [[ ${MERGE_TYPE} != binary ]] && has openmp && tc-check-openmp
+
+ vtk_check_reqs
+
+ # When building binpkgs you probably want to include all targets
+ if use cuda && [[ ${MERGE_TYPE} == "buildonly" ]] && [[ -n "${CUDA_GENERATION}" || -n "${CUDA_ARCH_BIN}" ]]; then
+ local info_message="When building a binary package it's recommended to unset CUDA_GENERATION and CUDA_ARCH_BIN"
+ einfo "$info_message so all available architectures are build."
+ fi
+}
+
+pkg_setup() {
+ [[ ${MERGE_TYPE} != binary ]] && has openmp && tc-check-openmp
+
+ vtk_check_reqs
+
+ if use cuda && [[ ! -e /dev/nvidia-uvm ]]; then
+ # NOTE We try to load nvidia-uvm and nvidia-modeset here,
+ # so __nvcc_device_query does not fail later.
+
+ nvidia-modprobe -m -u -c 0 || true
+ fi
+
+ use java && java-pkg-opt-2_pkg_setup
+ use python && python-single-r1_pkg_setup
+ use web && webapp_pkg_setup
+}
+
+# Note: The following libraries are marked as internal by kitware
+# and can currently not unbundled:
+# diy2, exodusII, fides, h5part, kissfft, loguru, verdict, vpic,
+# vtkm, xdmf{2,3}, zfp
+# TODO: exprtk, ioss
+# Note: As of v9.2.2 we no longer drop bundled libraries, when using system
+# libraries. This just saves a little space. CMake logic of VTK on ThirdParty
+# libraries avoids automagic builds, so deletion is not needed to catch these.
+src_prepare() {
+ if use doc; then
+ einfo "Removing .md5 files from documents."
+ rm -f "${WORKDIR}"/html/*.md5 || die "Failed to remove superfluous hashes"
+ sed -e "s|\${VTK_BINARY_DIR}/Utilities/Doxygen/doc|${WORKDIR}|" \
+ -i Utilities/Doxygen/CMakeLists.txt || die
+ fi
+
+ if use opencascade && has_version ">=sci-libs/opencascade-7.8.0"; then
+ eapply "${FILESDIR}/vtk-9.3.0-opencascade-7.8.0.patch"
+ fi
+
+ cmake_src_prepare
+
+ if use test; then
+ ebegin "Copying data files to ${BUILD_DIR}"
+ mkdir -p "${BUILD_DIR}/ExternalData" || die
+ pushd "${BUILD_DIR}/ExternalData" >/dev/null || die
+ ln -sf "../../${S}/.ExternalData/README.rst" . || die
+ ln -sf "../../${S}/.ExternalData/SHA512" . || die
+ popd >/dev/null || die
+ eend "$?"
+ fi
+}
+
+# TODO: check these and consider to use them
+# VTK_BUILD_SCALED_SOA_ARRAYS
+# VTK_DISPATCH_{AOS,SOA,TYPED}_ARRAYS
+src_configure() {
+ local mycmakeargs=(
+ -DCMAKE_DISABLE_FIND_PACKAGE_Git="yes"
+ -DVTK_GIT_DESCRIBE="v${PV}"
+ -DVTK_VERSION_FULL="${PV}"
+ -DGIT_EXECUTABLE="${T}/notgit"
+
+ -DCMAKE_POLICY_DEFAULT_CMP0167="OLD"
+ -DCMAKE_POLICY_DEFAULT_CMP0174="OLD"
+ -DCMAKE_POLICY_DEFAULT_CMP0177="OLD"
+
+ -DCMAKE_INSTALL_LICENSEDIR="share/${PN}/licenses"
+ -DVTK_IGNORE_CMAKE_CXX11_CHECKS=yes
+
+ -DVTK_ANDROID_BUILD=OFF
+ -DVTK_IOS_BUILD=OFF
+
+ -DVTK_BUILD_ALL_MODULES="$(usex all-modules)"
+ # we use the pre-built documentation and install these with USE=doc
+ -DVTK_BUILD_DOCUMENTATION=OFF
+ -DVTK_BUILD_EXAMPLES="$(usex examples)"
+
+ # no package in the tree: https://github.com/LLNL/conduit
+ -DVTK_ENABLE_CATALYST=OFF
+ -DVTK_ENABLE_KITS=OFF
+ -DVTK_ENABLE_LOGGING="$(usex logging)"
+ # defaults to ON: USE flag for this?
+ -DVTK_ENABLE_REMOTE_MODULES=OFF
+
+ # disable fetching files during build
+ -DVTK_FORBID_DOWNLOADS="yes"
+
+ -DVTK_GROUP_ENABLE_Imaging="$(usex imaging "YES" "NO")"
+ -DVTK_GROUP_ENABLE_Rendering="$(usex rendering "YES" "NO")"
+ -DVTK_GROUP_ENABLE_StandAlone="$(usex minimal "NO" "YES")"
+ -DVTK_GROUP_ENABLE_Views="$(usex views "YES" "NO")"
+ -DVTK_GROUP_ENABLE_Web="$(usex web "YES" "NO")"
+
+ -DVTK_INSTALL_SDK=ON
+
+ -DVTK_MODULE_ENABLE_VTK_IOCGNSReader="$(usex cgns "YES" "NO")"
+ -DVTK_MODULE_ENABLE_VTK_IOExportPDF="$(usex minimal "NO" "YES")"
+ -DVTK_MODULE_ENABLE_VTK_IOLAS="$(usex las "YES" "NO")"
+ -DVTK_MODULE_ENABLE_VTK_IONetCDF="$(usex netcdf "YES" "NO")"
+ -DVTK_MODULE_ENABLE_VTK_IOOCCT="$(usex opencascade "YES" "NO")"
+ -DVTK_MODULE_ENABLE_VTK_IOOggTheora="$(usex minimal "NO" "YES")"
+ -DVTK_MODULE_ENABLE_VTK_IOOpenVDB="$(usex openvdb "YES" "NO")"
+ -DVTK_MODULE_ENABLE_VTK_IOSQL="YES" # sqlite
+ -DVTK_MODULE_ENABLE_VTK_IOPDAL="$(usex pdal "YES" "NO")"
+ -DVTK_MODULE_ENABLE_VTK_IOXML="YES"
+ -DVTK_MODULE_ENABLE_VTK_IOXMLParser="YES"
+ -DVTK_MODULE_ENABLE_VTK_RenderingFreeType="$(usex truetype "YES" "NO")"
+ -DVTK_MODULE_ENABLE_VTK_RenderingFreeTypeFontConfig="$(usex truetype "YES" "NO")"
+ -DVTK_MODULE_ENABLE_VTK_cgns="$(usex cgns "YES" "NO")"
+ -DVTK_MODULE_ENABLE_VTK_doubleconversion="YES"
+ -DVTK_MODULE_ENABLE_VTK_eigen="YES"
+ -DVTK_MODULE_ENABLE_VTK_expat="YES"
+ -DVTK_MODULE_ENABLE_VTK_fmt="YES"
+ -DVTK_MODULE_ENABLE_VTK_freetype="$(usex truetype "YES" "NO")"
+ -DVTK_MODULE_ENABLE_VTK_hdf5="YES"
+ -DVTK_MODULE_ENABLE_VTK_jpeg="YES"
+ -DVTK_MODULE_ENABLE_VTK_jsoncpp="YES"
+ -DVTK_MODULE_ENABLE_VTK_libharu="$(usex minimal "NO" "YES")"
+ -DVTK_MODULE_ENABLE_VTK_libproj="YES"
+ -DVTK_MODULE_ENABLE_VTK_libxml2="YES"
+ -DVTK_MODULE_ENABLE_VTK_lz4="YES"
+ -DVTK_MODULE_ENABLE_VTK_lzma="YES"
+ -DVTK_MODULE_ENABLE_VTK_netcdf="$(usex netcdf "YES" "NO")"
+ -DVTK_MODULE_ENABLE_VTK_nlohmannjson="YES"
+ -DVTK_MODULE_ENABLE_VTK_ogg="YES"
+ -DVTK_MODULE_ENABLE_VTK_pegtl="YES"
+ -DVTK_MODULE_ENABLE_VTK_png="YES"
+ -DVTK_MODULE_ENABLE_VTK_pugixml="YES"
+ -DVTK_MODULE_ENABLE_VTK_sqlite="YES"
+ -DVTK_MODULE_ENABLE_VTK_theora="$(usex minimal "NO" "YES")"
+ -DVTK_MODULE_ENABLE_VTK_tiff="YES"
+ -DVTK_MODULE_ENABLE_VTK_utf8="YES"
+ -DVTK_MODULE_ENABLE_VTK_vtkvtkm="$(usex vtkm "YES" "NO")"
+ -DVTK_MODULE_ENABLE_VTK_zlib="YES"
+
+ # not packaged in Gentoo
+ -DVTK_MODULE_USE_EXTERNAL_VTK_fast_float=OFF
+ -DVTK_MODULE_USE_EXTERNAL_VTK_exprtk=OFF
+ -DVTK_MODULE_USE_EXTERNAL_VTK_ioss=OFF
+ -DVTK_MODULE_USE_EXTERNAL_VTK_verdict=OFF
+
+ -DVTK_RELOCATABLE_INSTALL=ON
+ -DVTK_UNIFIED_INSTALL_TREE=ON
+
+ -DVTK_SMP_ENABLE_OPENMP="$(usex openmp)"
+ -DVTK_SMP_ENABLE_STDTHREAD="$(usex threads)"
+ -DVTK_SMP_ENABLE_TBB="$(usex tbb)"
+
+ -DVTK_USE_CUDA="$(usex cuda)"
+ # use system libraries where possible
+ -DVTK_USE_EXTERNAL=ON
+ # avoid finding package from either ::guru or ::sci
+ -DVTK_USE_MEMKIND=OFF
+ -DVTK_USE_MPI="$(usex mpi)"
+ -DVTK_USE_TK="$(usex tk)"
+ -DVTK_USE_X=ON
+
+ -DVTK_WHEEL_BUILD=OFF
+
+ -DVTK_WRAP_JAVA="$(usex java)"
+ -DVTK_WRAP_PYTHON="$(usex python)"
+ )
+
+ if use all-modules; then
+ mycmakeargs+=(
+ # no package in ::gentoo
+ -DVTK_ENABLE_OSPRAY=OFF
+ # TODO: some of these are tied to the VTK_ENABLE_REMOTE_MODULES
+ # option. Check whether we can download them clean and enable
+ # them.
+ -DVTK_MODULE_ENABLE_VTK_DomainsMicroscopy="NO"
+ -DVTK_MODULE_ENABLE_VTK_fides="NO"
+ -DVTK_MODULE_ENABLE_VTK_FiltersOpenTURNS="NO"
+ -DVTK_MODULE_ENABLE_VTK_IOADIOS2="NO"
+ -DVTK_MODULE_ENABLE_VTK_IOFides="NO"
+
+ -DVTK_MODULE_ENABLE_VTK_RenderingOpenVR="NO"
+ -DVTK_MODULE_ENABLE_VTK_RenderingOpenXR="NO"
+
+ -DVTK_MODULE_USE_EXTERNAL_VTK_cli11="YES"
+ )
+ fi
+
+ if use boost; then
+ mycmakeargs+=(
+ -DVTK_MODULE_ENABLE_VTK_InfovisBoost="YES"
+ -DVTK_MODULE_ENABLE_VTK_InfovisBoostGraphAlgorithms="YES"
+ )
+ fi
+
+ if use cuda; then
+ cuda_add_sandbox -w
+ addwrite "/proc/self/task"
+
+ if ! test -w /dev/nvidiactl; then
+ # eqawarn "Can't access the GPU at /dev/nvidiactl."
+ # eqawarn "User $(id -nu) is not in the group \"video\"."
+ if [[ -z "${CUDA_GENERATION}" ]] && [[ -z "${CUDA_ARCH_BIN}" ]]; then
+ # build all targets
+ mycmakeargs+=(
+ -DCUDA_GENERATION=""
+ )
+ fi
+ else
+ local -x CUDAARCHS
+ : "${CUDAARCHS:="$(cuda_get_host_native_arch)"}"
+ fi
+
+ # set NVCC_CCBIN
+ local -x CUDAHOSTCXX CUDAHOSTLD
+ CUDAHOSTCXX="$(cuda_get_host_compiler)"
+ CUDAHOSTLD="$(tc-getCXX)"
+ export NVCC_CCBIN="${CUDAHOSTCXX}"
+
+ if tc-is-gcc; then
+ # Filter out IMPLICIT_LINK_DIRECTORIES picked up by CMAKE_DETERMINE_COMPILER_ABI(CUDA)
+ # See /usr/share/cmake/Help/variable/CMAKE_LANG_IMPLICIT_LINK_DIRECTORIES.rst
+ CMAKE_CUDA_IMPLICIT_LINK_DIRECTORIES_EXCLUDE=$(
+ "${CUDAHOSTLD}" -E -v - <<<"int main(){}" |& \
+ grep LIBRARY_PATH | cut -d '=' -f 2 | cut -d ':' -f 1
+ )
+ fi
+ fi
+
+ if use debug; then
+ mycmakeargs+=(
+ -DVTK_DEBUG_LEAKS=ON
+ -DVTK_DEBUG_MODULE=ON
+ -DVTK_DEBUG_MODULE_ALL=ON
+ -DVTK_ENABLE_SANITIZER=ON
+ -DVTK_EXTRA_COMPILER_WARNINGS=ON
+ -DVTK_WARN_ON_DISPATCH_FAILURE=ON
+ )
+ if use rendering; then
+ mycmakeargs+=( -DVTK_OPENGL_ENABLE_STREAM_ANNOTATIONS=ON )
+ fi
+ else
+ : "${CMAKE_BUILD_TYPE:="Release"}"
+ export CMAKE_BUILD_TYPE
+ fi
+
+ if use examples || use test; then
+ mycmakeargs+=( -DVTK_USE_LARGE_DATA=ON )
+ fi
+
+ if use ffmpeg; then
+ mycmakeargs+=( -DVTK_MODULE_ENABLE_VTK_IOFFMPEG="YES" )
+ if use rendering; then
+ mycmakeargs+=( -DVTK_MODULE_ENABLE_VTK_RenderingFFMPEGOpenGL2="YES" )
+ fi
+ fi
+
+ if use gdal; then
+ mycmakeargs+=(
+ -DVTK_MODULE_ENABLE_VTK_GeovisGDAL="YES"
+ -DVTK_MODULE_ENABLE_VTK_IOGDAL="YES"
+ -DVTK_MODULE_ENABLE_VTK_IOGeoJSON="YES"
+ )
+ fi
+
+ if use imaging; then
+ mycmakeargs+=(
+ -DVTK_MODULE_ENABLE_VTK_ImagingColor="YES"
+ -DVTK_MODULE_ENABLE_VTK_ImagingCore="YES"
+ -DVTK_MODULE_ENABLE_VTK_ImagingFourier="YES"
+ -DVTK_MODULE_ENABLE_VTK_ImagingGeneral="YES"
+ -DVTK_MODULE_ENABLE_VTK_ImagingHybrid="YES"
+ -DVTK_MODULE_ENABLE_VTK_ImagingMath="YES"
+ -DVTK_MODULE_ENABLE_VTK_ImagingMorphological="YES"
+ -DVTK_MODULE_ENABLE_VTK_ImagingOpenGL2="YES"
+ -DVTK_MODULE_ENABLE_VTK_ImagingSources="YES"
+ -DVTK_MODULE_ENABLE_VTK_ImagingStatistics="YES"
+ -DVTK_MODULE_ENABLE_VTK_ImagingStencil="YES"
+ )
+ use rendering && mycmakeargs+=( -DVTK_MODULE_ENABLE_VTK_RenderingImage="YES" )
+ fi
+
+ if ! use java && ! use python; then
+ # defaults to ON
+ mycmakeargs+=( -DVTK_ENABLE_WRAPPING=OFF )
+ fi
+
+ if use java; then
+ mycmakeargs+=(
+ -DCMAKE_INSTALL_JARDIR="share/${PN}"
+ -DVTK_ENABLE_WRAPPING=ON
+ -DVTK_MODULE_ENABLE_VTK_Java="YES"
+ -DVTK_JAVA_SOURCE_VERSION="$(java-config -g PROVIDES_VERSION)"
+ -DVTK_JAVA_TARGET_VERSION="$(java-config -g PROVIDES_VERSION)"
+ )
+ fi
+
+ if use minimal; then
+ mycmakeargs+=(
+ -DVTK_MODULE_ENABLE_VTK_CommonComputationalGeometry="YES"
+ -DVTK_MODULE_ENABLE_VTK_CommonExecutionModel="YES"
+ -DVTK_MODULE_ENABLE_VTK_CommonMath="YES"
+ -DVTK_MODULE_ENABLE_VTK_CommonMisc="YES"
+ -DVTK_MODULE_ENABLE_VTK_CommonSystem="YES"
+ -DVTK_MODULE_ENABLE_VTK_CommonTransforms="YES"
+
+ -DVTK_MODULE_ENABLE_VTK_FiltersCore="YES"
+ -DVTK_MODULE_ENABLE_VTK_FiltersExtraction="YES"
+ -DVTK_MODULE_ENABLE_VTK_FiltersGeneral="YES"
+ -DVTK_MODULE_ENABLE_VTK_FiltersGeneric="YES"
+ -DVTK_MODULE_ENABLE_VTK_FiltersGeometry="YES"
+ -DVTK_MODULE_ENABLE_VTK_FiltersHybrid="NO"
+ -DVTK_MODULE_ENABLE_VTK_FiltersHyperTree="YES"
+ -DVTK_MODULE_ENABLE_VTK_FiltersSources="YES"
+ -DVTK_MODULE_ENABLE_VTK_FiltersStatistics="YES"
+ -DVTK_MODULE_ENABLE_VTK_FiltersVerdict="YES"
+
+ -DVTK_MODULE_ENABLE_VTK_IOCore="YES"
+ -DVTK_MODULE_ENABLE_VTK_IOGeometry="NO"
+ -DVTK_MODULE_ENABLE_VTK_IOLegacy="YES"
+
+ -DVTK_MODULE_ENABLE_VTK_ParallelCore="YES"
+ -DVTK_MODULE_ENABLE_VTK_ParallelDIY="YES"
+ )
+ fi
+
+ if use mpi; then
+ mycmakeargs+=(
+ -DVTK_GROUP_ENABLE_MPI="YES"
+ -DVTK_MODULE_ENABLE_VTK_IOH5part="YES"
+ -DVTK_MODULE_ENABLE_VTK_IOMPIParallel="YES"
+ -DVTK_MODULE_ENABLE_VTK_IOParallel="YES"
+ -DVTK_MODULE_ENABLE_VTK_IOParallelNetCDF="$(usex netcdf "YES" "NO")"
+ -DVTK_MODULE_ENABLE_VTK_IOParallelXML="YES"
+ -DVTK_MODULE_ENABLE_VTK_ParallelMPI="YES"
+ -DVTK_MODULE_ENABLE_VTK_h5part="YES"
+ -DVTK_MODULE_USE_EXTERNAL_VTK_verdict=OFF
+ )
+ use imaging && mycmakeargs+=( -DVTK_MODULE_ENABLE_VTK_IOMPIImage="YES" )
+ use python && mycmakeargs+=( -DVTK_MODULE_ENABLE_VTK_ParallelMPI4Py="YES" )
+ if use rendering; then
+ mycmakeargs+=(
+ -DVTK_MODULE_ENABLE_VTK_RenderingParallel="YES"
+ -DVTK_MODULE_ENABLE_VTK_RenderingParallelLIC="YES"
+ )
+ fi
+ use vtkm && mycmakeargs+=( -DVTKm_ENABLE_MPI=ON )
+ else
+ mycmakeargs+=( -DVTK_GROUP_ENABLE_MPI="NO" )
+ fi
+
+ use mysql && mycmakeargs+=( -DVTK_MODULE_ENABLE_VTK_IOMySQL="YES" )
+ use odbc && mycmakeargs+=( -DVTK_MODULE_ENABLE_VTK_IOODBC="YES" )
+ use openvdb && mycmakeargs+=( -DOpenVDB_CMAKE_PATH="${ESYSROOT}/usr/$(get_libdir)/cmake/OpenVDB" )
+ use postgres && mycmakeargs+=( -DVTK_MODULE_ENABLE_VTK_IOPostgreSQL="YES" )
+
+ if use python; then
+ mycmakeargs+=(
+ -DPython3_EXECUTABLE="${PYTHON}"
+ -DVTK_ENABLE_WRAPPING=ON
+ -DVTK_MODULE_ENABLE_VTK_Python="YES"
+ -DVTK_MODULE_ENABLE_VTK_PythonInterpreter="YES"
+ -DVTK_MODULE_ENABLE_VTK_WrappingPythonCore="YES"
+ -DVTK_PYTHON_OPTIONAL_LINK="OFF"
+ -DVTK_PYTHON_SITE_PACKAGES_SUFFIX="lib/${EPYTHON}/site-packages"
+ )
+ use rendering && mycmakeargs+=( -DVTK_MODULE_ENABLE_VTK_PythonContext2D="YES" )
+ fi
+
+ if use qt6; then
+ mycmakeargs+=(
+ -DCMAKE_INSTALL_QMLDIR="${EPFREIX}/usr/$(get_libdir)/qt6/qml"
+ -DVTK_QT_VERSION="6"
+ )
+ if has_version "dev-qt/qtbase:6[gles2-only]" || use gles2-only; then
+ mycmakeargs+=(
+ # Force using EGL & GLES
+ -DVTK_OPENGL_HAS_EGL=ON
+ -DVTK_OPENGL_USE_GLES=ON
+ )
+ fi
+ else
+ mycmakeargs+=( -DVTK_GROUP_ENABLE_Qt="NO" )
+ fi
+
+ if use qt6; then
+ mycmakeargs+=(
+ -DVTK_GROUP_ENABLE_Qt:STRING="YES"
+ -DVTK_MODULE_ENABLE_VTK_GUISupportQt="YES"
+ -DVTK_MODULE_ENABLE_VTK_GUISupportQtQuick="YES"
+ )
+ if use mysql || use postgres; then
+ mycmakeargs+=( -DVTK_MODULE_ENABLE_VTK_GUISupportQtSQL="YES" )
+ fi
+ if use rendering; then
+ mycmakeargs+=( -DVTK_MODULE_ENABLE_VTK_RenderingQt="YES" )
+ fi
+ if use views; then
+ mycmakeargs+=( -DVTK_MODULE_ENABLE_VTK_ViewsQt="YES" )
+ fi
+ fi
+
+ if use rendering; then
+ mycmakeargs+=(
+ -DVTK_ENABLE_OSPRAY=OFF
+
+ -DVTK_MODULE_ENABLE_VTK_IOExportGL2PS="YES"
+ -DVTK_MODULE_ENABLE_VTK_RenderingAnnotation="YES"
+ -DVTK_MODULE_ENABLE_VTK_RenderingContext2D="YES"
+ -DVTK_MODULE_ENABLE_VTK_RenderingContextOpenGL2="YES"
+ -DVTK_MODULE_ENABLE_VTK_RenderingCore="YES"
+ -DVTK_MODULE_ENABLE_VTK_RenderingExternal="YES"
+ -DVTK_MODULE_ENABLE_VTK_RenderingGL2PSOpenGL2="YES"
+ -DVTK_MODULE_ENABLE_VTK_RenderingHyperTreeGrid="YES"
+ -DVTK_MODULE_ENABLE_VTK_RenderingLICOpenGL2="YES"
+ -DVTK_MODULE_ENABLE_VTK_RenderingLOD="YES"
+ -DVTK_MODULE_ENABLE_VTK_RenderingLabel="YES"
+ -DVTK_MODULE_ENABLE_VTK_RenderingOpenGL2="YES"
+ -DVTK_MODULE_ENABLE_VTK_RenderingRayTracing="YES"
+ -DVTK_MODULE_ENABLE_VTK_RenderingSceneGraph="YES"
+ -DVTK_MODULE_ENABLE_VTK_RenderingUI="YES"
+ -DVTK_MODULE_ENABLE_VTK_RenderingVolume="YES"
+ -DVTK_MODULE_ENABLE_VTK_RenderingVolumeAMR="YES"
+ -DVTK_MODULE_ENABLE_VTK_RenderingVolumeOpenGL2="YES"
+ -DVTK_MODULE_ENABLE_VTK_RenderingZSpace="NO"
+ -DVTK_MODULE_ENABLE_VTK_gl2ps="YES"
+ -DVTK_MODULE_ENABLE_VTK_glew="YES"
+ -DVTK_MODULE_ENABLE_VTK_opengl="YES"
+
+ -DVTK_USE_SDL2="$(usex sdl "YES" "NO")"
+ )
+ use python && mycmakeargs+=( -DVTK_MODULE_ENABLE_VTK_RenderingMatplotlib="YES" )
+ use tk && mycmakeargs+=( -DVTK_MODULE_ENABLE_VTK_RenderingTk="YES" )
+ use views && mycmakeargs+=( -DVTK_MODULE_ENABLE_VTK_ViewsContext2D="YES" )
+ use web && mycmakeargs+=( -DVTK_MODULE_ENABLE_VTK_RenderingVtkJS="YES" )
+ fi
+
+ # Testing has been changed in 9.2.5: it is now allowed without
+ # requiring to download, if the data files are available locally!
+ if use test; then
+ mycmakeargs+=(
+ -DVTK_BUILD_TESTING=ON
+ # disable fetching data files for the default 'all' target
+ -DVTK_DATA_EXCLUDE_FROM_ALL=OFF
+
+ # requested even if all use flags are off
+ -DVTK_MODULE_ENABLE_VTK_octree="YES"
+ -DVTK_MODULE_ENABLE_VTK_ViewsCore="YES"
+
+ -DVTK_MODULE_USE_EXTERNAL_VTK_cli11="YES"
+ )
+ else
+ mycmakeargs+=( -DVTK_BUILD_TESTING=OFF )
+ fi
+
+ # FIXME: upstream provides 4 threading models, as of 9.1.0. These are
+ # sequential, stdthread, openmp and tbb. AFAICS all of them can be
+ # enabled at the same time. Sequential and STDThread are enabled by
+ # default. The default selected type for the build is sequential.
+ # Assuming sequential < STDThread < openmp < tbb wrt speed, although
+ # this is dependent on the actual scenario where threading is used.
+ if use tbb; then
+ mycmakeargs+=( -DVTK_SMP_IMPLEMENTATION_TYPE="TBB" )
+ elif use openmp; then # FIXME doesn't work with clang
+ mycmakeargs+=( -DVTK_SMP_IMPLEMENTATION_TYPE="OpenMP" )
+ elif use threads; then
+ mycmakeargs+=( -DVTK_SMP_IMPLEMENTATION_TYPE="STDThread" )
+ else
+ mycmakeargs+=( -DVTK_SMP_IMPLEMENTATION_TYPE="Sequential" )
+ fi
+
+ use tk && mycmakeargs+=( -DVTK_GROUP_ENABLE_Tk="YES" )
+
+ if use views; then
+ mycmakeargs+=(
+ -DVTK_MODULE_ENABLE_VTK_ViewsCore="YES"
+ -DVTK_MODULE_ENABLE_VTK_ViewsInfovis="YES"
+ )
+ fi
+
+ if use vtkm; then
+ mycmakeargs+=(
+ -DVTK_MODULE_ENABLE_VTK_AcceleratorsVTKmCore="YES"
+ -DVTK_MODULE_ENABLE_VTK_AcceleratorsVTKmDataModel="YES"
+ -DVTK_MODULE_ENABLE_VTK_AcceleratorsVTKmFilters="YES"
+ -DVTKm_ENABLE_CPACK="no" # "Enable CPack packaging of VTKm" ON
+ -DVTKm_ENABLE_CUDA="$(usex cuda)" # "Enable Cuda support" OFF
+ -DVTKm_ENABLE_DOCUMENTATION="$(usex doc)" # "Build Doxygen documentation" OFF
+ -DVTKm_ENABLE_EXAMPLES="$(usex examples)" # "Build examples" OFF
+ -DVTKm_ENABLE_HDF5_IO="yes" # "Enable HDF5 support" OFF
+ -DVTKm_ENABLE_LOGGING="$(usex logging)" # "Enable VTKm Logging" ON
+ -DVTKm_ENABLE_MPI="$(usex mpi)" # "Enable MPI support" OFF
+ -DVTKm_ENABLE_OPENMP="$(usex openmp)" # "Enable OpenMP support" OFF
+ -DVTKm_ENABLE_RENDERING="$(usex rendering)" # "Enable rendering library" ON
+ -DVTKm_ENABLE_TBB="$(usex tbb)" # "Enable TBB support" OFF
+ -DVTKm_ENABLE_TESTING="$(usex test)" # "Enable VTKm Testing" ON
+ -DVTKm_ENABLE_TUTORIALS="no" # "Build tutorials" OFF
+ -DVTKm_NO_ASSERT_CUDA="yes" # "Disable assertions for CUDA devices." ON
+ -DVTKm_NO_ASSERT_HIP="yes" # "Disable assertions for HIP devices." ON
+ -DVTKm_NO_ASSERT="no" # "Disable assertions in debugging builds." OFF
+ -DVTKm_NO_INSTALL_README_LICENSE="ON" # bug #793221 # "disable the installation of README and LICENSE files" OFF
+ -DVTKm_SKIP_LIBRARY_VERSIONS="no" # "Skip versioning VTK-m libraries" OFF
+ -DVTKm_Vectorization="none" # only sets compiler flags
+ )
+ fi
+
+ if use web; then
+ mycmakeargs+=(
+ -DVTK_MODULE_ENABLE_VTK_WebCore="YES"
+ -DVTK_MODULE_ENABLE_VTK_WebGLExporter="YES"
+ )
+ use python && mycmakeargs+=( -DVTK_MODULE_ENABLE_VTK_WebPython="YES" )
+ fi
+
+ cmake_src_configure
+}
+
+src_compile() {
+ use test && cmake_build VTKData
+ cmake_src_compile
+}
+
+src_test() {
+ vtk_add_sandbox
+
+ addwrite /dev/fuse
+
+ # The build system prepends /usr/$(get_libdir) to the RUNPATH instead of appending.
+ # Set LD_LIBRARY_PATH to use the just build libraries.
+ local -x LD_LIBRARY_PATH="${BUILD_DIR}/$(get_libdir)${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH}"
+
+ # export VTK_SMP_BACKEND_IN_USE="STDThread"
+
+ local -x -a CMAKE_SKIP_TESTS
+
+ if [[ "${CMAKE_RUN_OPTIONAL_TESTS:=yes}" != "yes" ]]; then
+ local -a REALLY_BAD_TESTS BAD_TESTS RANDOM_FAIL_TESTS
+ # don't work at all
+ REALLY_BAD_TESTS=(
+ # File missing? ExternalData/Testing/Data/MotionFX/position_file/Sprocket_New.prn
+ "VTK::IOMotionFXCxx-TestMotionFXCFGReaderPositionFile$" # (Subprocess aborted)
+
+ "VTK::InteractionWidgetsCxx-TestBrokenLineWidget$"
+ "VTK::AcceleratorsVTKmFiltersCxx-TestVTKMClipWithImplicitFunction$" # (NUMERICAL)
+ "VTK::AcceleratorsVTKmFiltersCxx-TestVTKMHistogram$" # (Failed)
+ "VTK::AcceleratorsVTKmFiltersCxx-TestVTKMMarchingCubes$" # (Failed)
+ "VTK::AcceleratorsVTKmFiltersCxx-TestVTKMMarchingCubes2$" # (Failed)
+ "VTK::ChartsCoreCxx-TestChartDoubleColors$" # (Failed)
+ "VTK::ChartsCoreCxx-TestChartDoubleColorsOpaque$" # (Failed)
+ "VTK::ChartsCoreCxx-TestParallelCoordinatesDouble$" # (Failed)
+ "VTK::CommonDataModelCxx-TestHyperTreeGridGeometricLocator$" # (Failed)
+ "VTK::CommonDataModelCxx-TestTriangle$" # (Failed)
+ "VTK::CommonDataModelCxx-UnitTestCells$" # (Failed)
+ "VTK::FiltersCoreCxx-TestDecimatePolylineFilter$" # (Failed)
+ "VTK::FiltersCoreCxx-TestImplicitPolyDataDistanceCube$" # (Failed)
+ "VTK::FiltersCorePython-TestSphereTreeFilter$" # (Failed)
+ "VTK::FiltersFlowPathsCxx-TestEvenlySpacedStreamlines2D$" # (Failed)
+ "VTK::FiltersGeneralCxx-TestContourTriangulatorHoles$" # (Failed)
+ "VTK::FiltersParallelCxx-TestAngularPeriodicFilter$" # (Failed)
+ "VTK::FiltersParallelDIY2Cxx-MPI-TestProbeLineFilter$" # (Failed)
+ "VTK::FiltersSelectionCxx-TestLinearSelector3D$" # (Failed)
+ "VTK::GUISupportQtQuickCxx-TestQQuickVTKRenderItem$" # (Failed)
+ "VTK::GUISupportQtQuickCxx-TestQQuickVTKRenderItemWidget$" # (Failed)
+ "VTK::GUISupportQtQuickCxx-TestQQuickVTKRenderWindow$" # (Failed)
+ "VTK::RenderingExternalCxx-TestGLUTRenderWindow$" # (Failed)
+ "VTK::RenderingFreeTypeFontConfigCxx-TestSystemFontRendering$" # (Failed)
+ "VTK::IOExportGL2PSCxx-TestGL2PSExporterVolumeRaster" # (Failed)
+ # "VTK::IOExportGL2PSCxx-TestGL2PSExporterVolumeRaster-RasterizePNG$" # (Not Run)
+ # "VTK::IOExportGL2PSCxx-TestGL2PSExporterVolumeRaster-VerifyRasterizedPDFPNG$" # (Failed)
+ # "VTK::IOExportGL2PSCxx-TestGL2PSExporterVolumeRaster-VerifyRasterizedPNG$" # (Failed)
+ "VTK::IOExportPDFCxx-TestPDFTransformedText-VerifyRasterizedPDFPNG$" # (Failed)
+ "VTK::IOOCCTCxx-TestOCCTReader$" # (Failed)
+ "VTK::RenderingCorePython-pickImageData$" # (Failed)
+ "VTK::RenderingRayTracing-HeaderTest$" # (Failed)
+ )
+
+ # don't work in src_test but when on their own
+ BAD_TESTS=(
+ "VTK::AcceleratorsVTKmCoreCxx-TestVTKMImplicitDataArray$" # (NUMERICAL)
+ "VTK::AcceleratorsVTKmFiltersCxx-TestVTKMCleanGrid$" # (NUMERICAL)
+ "VTK::AcceleratorsVTKmFiltersCxx-TestVTKMClip$" # (NUMERICAL)
+ "VTK::AcceleratorsVTKmFiltersCxx-TestVTKMExternalFaces$" # (Failed)
+ "VTK::AcceleratorsVTKmFiltersCxx-TestVTKMExtractVOI$" # (NUMERICAL)
+ "VTK::AcceleratorsVTKmFiltersCxx-TestVTKMLevelOfDetail$" # (NUMERICAL)
+ "VTK::AcceleratorsVTKmFiltersCxx-TestVTKMPointElevation$" # (NUMERICAL)
+ "VTK::AcceleratorsVTKmFiltersCxx-TestVTKMPointTransform$" # (NUMERICAL)
+ "VTK::AcceleratorsVTKmFiltersCxx-TestVTKMPolyDataNormals$" # (NUMERICAL)
+ "VTK::AcceleratorsVTKmFiltersCxx-TestVTKMThreshold$" # (NUMERICAL)
+ "VTK::AcceleratorsVTKmFiltersCxx-TestVTKMThreshold2$" # (NUMERICAL)
+ "VTK::AcceleratorsVTKmFiltersCxx-TestVTKMTriangleMeshPointNormals$" # (NUMERICAL)
+ "VTK::AcceleratorsVTKmFiltersCxx-TestVTKMWarpScalar$" # (NUMERICAL)
+ "VTK::AcceleratorsVTKmFiltersCxx-TestVTKMWarpVector$" # (NUMERICAL)
+ "VTK::ImagingOpenGL2Cxx-TestOpenGLImageGradient$" # (NUMERICAL)
+ "VTK::InteractionWidgetsCxx-TestResliceCursorWidget2$" # (Failed)
+ "VTK::InteractionWidgetsCxx-TestResliceCursorWidget3$" # (Failed)
+ "VTK::InteractionWidgetsPython-TestTensorWidget2$" # (Failed)
+ "VTK::RenderingCoreCxx-TestTextureRGBADepthPeeling$" # (Failed)
+ "VTK::RenderingLICOpenGL2Cxx-SurfaceLICCurvedContrastEnhancedBlended$" # (NUMERICAL)
+ "VTK::RenderingLICOpenGL2Cxx-SurfaceLICCurvedContrastEnhancedBlendedSmallGrain$" # (NUMERICAL)
+ "VTK::RenderingLICOpenGL2Cxx-SurfaceLICCurvedContrastEnhancedColorBlendedSmallGrain$" # (NUMERICAL)
+ "VTK::RenderingLICOpenGL2Cxx-SurfaceLICCurvedContrastEnhancedColorBlendedSmallGrainMask$" # (NUMERICAL)
+ "VTK::RenderingLICOpenGL2Cxx-SurfaceLICCurvedContrastEnhancedColorMappedSmallGrain$" # (NUMERICAL)
+ "VTK::RenderingLICOpenGL2Cxx-SurfaceLICCurvedContrastEnhancedColorMappedSmallGrainMask$" # (NUMERICAL)
+ "VTK::RenderingLICOpenGL2Cxx-SurfaceLICCurvedContrastEnhancedMapped$" # (NUMERICAL)
+ "VTK::RenderingLICOpenGL2Cxx-SurfaceLICCurvedContrastEnhancedMappedSmallGrain$" # (NUMERICAL)
+ "VTK::RenderingLICOpenGL2Cxx-SurfaceLICCurvedContrastEnhancedMappedSmallVectorNormalizeOff$" # (NUMERICAL)
+ "VTK::RenderingLICOpenGL2Cxx-SurfaceLICCurvedContrastEnhancedSmallGrainMask$" # (NUMERICAL)
+ "VTK::RenderingLICOpenGL2Cxx-SurfaceLICCurvedDefaults$" # (NUMERICAL)
+ "VTK::RenderingLICOpenGL2Cxx-SurfaceLICCurvedDefaultsColor$" # (NUMERICAL)
+ "VTK::RenderingLICOpenGL2Cxx-SurfaceLICCurvedEnhancedVectorNormalizeOff$" # (NUMERICAL)
+ "VTK::RenderingLICOpenGL2Cxx-SurfaceLICMultiBlockContrastEnhancedPerlin$" # (NUMERICAL)
+ "VTK::RenderingLICOpenGL2Cxx-SurfaceLICPlanarContrastEnhanced$" # (NUMERICAL)
+ "VTK::RenderingLICOpenGL2Cxx-SurfaceLICPlanarDefaults$" # (NUMERICAL)
+ "VTK::RenderingLICOpenGL2Cxx-SurfaceLICPlanarVectorNormalizeOff$" # (NUMERICAL)
+ "VTK::RenderingLICOpenGL2Cxx-SurfaceLICPlanarVectorNormalizeOffMediumGrainPerlin$" # (NUMERICAL)
+ "VTK::RenderingLICOpenGL2Cxx-SurfaceLICPlanarVectorNormalizeOffMediumGrainUniform$" # (NUMERICAL)
+ "VTK::RenderingLICOpenGL2Cxx-TestImageDataLIC2D$" # (NUMERICAL)
+ "VTK::RenderingLICOpenGL2Cxx-TestStructuredGridLIC2DXSlice$" # (NUMERICAL)
+ "VTK::RenderingLICOpenGL2Cxx-TestStructuredGridLIC2DYSlice$" # (NUMERICAL)
+ "VTK::RenderingLICOpenGL2Cxx-TestStructuredGridLIC2DZSlice$" # (NUMERICAL)
+ "VTK::RenderingMatplotlibCxx-TestContextMathTextImage$" # (NUMERICAL)
+ "VTK::RenderingMatplotlibCxx-TestIndexedLookupScalarBar$" # (NUMERICAL)
+ "VTK::RenderingMatplotlibCxx-TestMathTextActor$" # (NUMERICAL)
+ "VTK::RenderingMatplotlibCxx-TestMathTextActor3D$" # (NUMERICAL)
+ "VTK::RenderingMatplotlibCxx-TestRenderString$" # (NUMERICAL)
+ "VTK::RenderingMatplotlibCxx-TestScalarBarCombinatorics$" # (NUMERICAL)
+ "VTK::RenderingMatplotlibCxx-TestStringToPath$" # (NUMERICAL)
+ "VTK::RenderingOpenGL2Cxx-TestGlyph3DMapperPickability$" # (Failed)
+ )
+
+ RANDOM_FAIL_TESTS=(
+ "VTK::FiltersFlowPathsCxx-TestStreamSurface$"
+ "VTK::AcceleratorsVTKmFiltersCxx-TestVTKMAbort$"
+ "VTK::AcceleratorsVTKmFiltersPython-TestVTKMSlice$"
+ )
+
+ CMAKE_SKIP_TESTS+=(
+ "${REALLY_BAD_TESTS[@]}"
+ "${BAD_TESTS[@]}"
+ "${RANDOM_FAIL_TESTS[@]}"
+ )
+ fi
+
+ CMAKE_SKIP_TESTS+=(
+ # requires VTK_USE_MICROSOFT_MEDIA_FOUNDATION
+ "VTK::IOMovieCxx-Test" # Skipped
+ )
+
+ if use openmp; then
+ # TODO Times out under openmp
+ CMAKE_SKIP_TESTS+=(
+ "^VTK::CommonCoreCxx-TestSMP$"
+ )
+ fi
+
+ virtx cmake_src_test -j1
+}
+
+src_install() {
+ use web && webapp_src_preinst
+
+ # Stop web page images from being compressed
+ if use doc; then
+ HTML_DOCS=( "${WORKDIR}/html/." )
+ fi
+
+ cmake_src_install
+
+ use java && java-pkg_regjar "${ED}/usr/share/${PN}/${PN}.jar"
+
+ # install examples
+ if use examples; then
+ einfo "Installing examples"
+ mv -v {E,e}xamples || die
+ dodoc -r examples
+ docompress -x "/usr/share/doc/${PF}/examples"
+
+ einfo "Installing datafiles"
+ insinto "/usr/share/${PN}/data"
+ doins -r "${S}/.ExternalData"
+ fi
+
+ use python && python_optimize
+
+ use web && webapp_src_install
+}
+
+# webapp.eclass exports these but we want it optional #534036
+pkg_postinst() {
+ use web && webapp_pkg_postinst
+
+ if use examples; then
+ einfo "You can get more and updated examples at"
+ einfo "https://kitware.github.io/vtk-examples/site/"
+ fi
+}
+
+pkg_prerm() {
+ use web && webapp_pkg_prerm
+}
diff --git a/sci-libs/vtk/vtk-9.3.1-r4.ebuild b/sci-libs/vtk/vtk-9.3.1-r4.ebuild
new file mode 100644
index 00000000..6d418b8c
--- /dev/null
+++ b/sci-libs/vtk/vtk-9.3.1-r4.ebuild
@@ -0,0 +1,1023 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+# TODO:
+# - add USE flag for remote modules? Those modules can be downloaded
+# properly before building.
+# - replace usex by usev where applicable
+
+PYTHON_COMPAT=( python3_{10..13} )
+WEBAPP_OPTIONAL=yes
+WEBAPP_MANUAL_SLOT=yes
+
+inherit check-reqs cmake cuda java-pkg-opt-2 multiprocessing python-single-r1 toolchain-funcs virtualx webapp
+
+# Short package version
+MY_PV="$(ver_cut 1-2)"
+
+DESCRIPTION="The Visualization Toolkit"
+HOMEPAGE="https://www.vtk.org/"
+SRC_URI="
+ https://www.vtk.org/files/release/${MY_PV}/VTK-${PV}.tar.gz
+ doc? ( https://www.vtk.org/files/release/${MY_PV}/vtkDocHtml-${PV}.tar.gz )
+ examples? (
+ https://www.vtk.org/files/release/${MY_PV}/VTKLargeData-${PV}.tar.gz
+ https://www.vtk.org/files/release/${MY_PV}/VTKLargeDataFiles-${PV}.tar.gz
+ )
+ test? (
+ https://www.vtk.org/files/release/${MY_PV}/VTKData-${PV}.tar.gz
+ https://www.vtk.org/files/release/${MY_PV}/VTKDataFiles-${PV}.tar.gz
+ https://www.vtk.org/files/release/${MY_PV}/VTKLargeData-${PV}.tar.gz
+ https://www.vtk.org/files/release/${MY_PV}/VTKLargeDataFiles-${PV}.tar.gz
+ )
+"
+S="${WORKDIR}/VTK-${PV}"
+
+LICENSE="BSD LGPL-2"
+SLOT="0/${MY_PV}"
+KEYWORDS="~amd64 ~arm ~arm64 ~x86 ~amd64-linux ~x86-linux"
+
+# TODO: Like to simplify these. Mostly the flags related to Groups.
+IUSE="all-modules boost +cgns cuda debug doc examples ffmpeg gdal gles2-only imaging
+ java las +logging minimal mpi mysql +netcdf odbc opencascade openmp openvdb pdal postgres
+ python qt6 +rendering sdl tbb test +threads tk +truetype video_cards_nvidia +views vtkm web"
+
+RESTRICT="!test? ( test )"
+
+REQUIRED_USE="
+ all-modules? (
+ boost cgns ffmpeg gdal imaging las mysql netcdf odbc opencascade openvdb pdal
+ postgres rendering truetype views
+ )
+ cuda? ( video_cards_nvidia vtkm )
+ java? ( rendering )
+ minimal? ( !gdal !rendering )
+ !minimal? ( cgns netcdf rendering )
+ python? ( ${PYTHON_REQUIRED_USE} )
+ qt6? ( rendering )
+ sdl? ( rendering )
+ tk? ( python rendering )
+ web? ( python )
+ rendering? ( truetype views )
+"
+
+# eigen, nlohmann_json, pegtl and utfcpp are referenced in the cmake files
+# and need to be available when VTK consumers configure the dependencies.
+RDEPEND="
+ app-arch/lz4:=
+ app-arch/xz-utils
+ dev-db/sqlite:3
+ dev-libs/double-conversion:=
+ dev-libs/expat
+ dev-libs/icu:=
+ dev-libs/jsoncpp:=
+ >=dev-libs/libfmt-8.1.1:=
+ dev-libs/libxml2:2=
+ dev-libs/libzip:=
+ dev-libs/pugixml
+ media-libs/freetype
+ media-libs/libjpeg-turbo
+ media-libs/libogg
+ media-libs/libpng:=
+ media-libs/tiff:=
+ sci-libs/hdf5:=[mpi=]
+ sys-libs/zlib
+ boost? ( dev-libs/boost:=[mpi?] )
+ cgns? (
+ >=sci-libs/cgnslib-4.1.1:=[hdf5,mpi=]
+ sci-libs/hdf5[cxx]
+ )
+ cuda? ( dev-util/nvidia-cuda-toolkit:= )
+ ffmpeg? ( media-video/ffmpeg:= )
+ gdal? ( sci-libs/gdal:= )
+ java? ( >=virtual/jdk-11:= )
+ las? ( sci-geosciences/liblas )
+ !minimal? (
+ >=media-libs/libharu-2.4.0:=
+ media-libs/libtheora:=
+ sci-libs/proj:=
+ )
+ mpi? ( virtual/mpi[romio] )
+ mysql? ( dev-db/mariadb-connector-c )
+ netcdf? ( sci-libs/netcdf:=[mpi=] )
+ odbc? ( dev-db/unixODBC )
+ openvdb? ( media-gfx/openvdb:= )
+ opencascade? ( sci-libs/opencascade:= )
+ pdal? ( sci-libs/pdal:= )
+ postgres? ( dev-db/postgresql:= )
+ python? (
+ ${PYTHON_DEPS}
+ $(python_gen_cond_dep 'mpi? ( dev-python/mpi4py[${PYTHON_USEDEP}] )')
+ $(python_gen_cond_dep 'rendering? ( dev-python/matplotlib[${PYTHON_USEDEP}] )')
+ )
+ qt6? (
+ dev-qt/qtbase:6[gui,opengl,sql,widgets]
+ dev-qt/qtdeclarative:6[opengl]
+ dev-qt/qtshadertools:6
+ x11-libs/libxkbcommon
+ )
+ sdl? ( media-libs/libsdl2 )
+ rendering? (
+ media-libs/glew:=
+ media-libs/libglvnd[X]
+ x11-libs/gl2ps
+ x11-libs/libICE
+ x11-libs/libXcursor
+ x11-libs/libXext
+ )
+ tbb? ( dev-cpp/tbb:= )
+ tk? ( dev-lang/tk:= )
+ truetype? ( media-libs/fontconfig )
+ video_cards_nvidia? ( x11-drivers/nvidia-drivers[tools,static-libs] )
+ views? (
+ x11-libs/libICE
+ x11-libs/libXext
+ )
+ web? ( ${WEBAPP_DEPEND} )
+"
+
+DEPEND="
+ ${RDEPEND}
+ dev-cpp/cli11
+ dev-cpp/eigen
+ dev-cpp/nlohmann_json
+ >=dev-libs/pegtl-3
+ dev-libs/utfcpp
+ test? (
+ media-libs/glew
+ x11-libs/libXcursor
+ rendering? ( media-libs/freeglut )
+ )
+"
+BDEPEND="virtual/pkgconfig"
+
+PATCHES=(
+ "${FILESDIR}/${PN}-9.2.5-pegtl-3.x.patch"
+ "${FILESDIR}/${PN}-9.3.0-java.patch"
+ "${FILESDIR}/${PN}-9.3.0-opencascade.patch"
+ "${FILESDIR}/${PN}-9.3.0-ThrustPatches.patch"
+ "${FILESDIR}/${PN}-9.3.0-core-octree_node.txx.patch"
+ "${FILESDIR}/${PN}-9.3.0-ThirdParty-gcc15.patch"
+ "${FILESDIR}/${PN}-9.3.0-update-for-cuda-12.6.patch"
+ "${FILESDIR}/${PN}-9.3.1-fix-fmt-11.patch"
+)
+
+DOCS=( CONTRIBUTING.md README.md )
+
+vtk_check_reqs() {
+ local dsk=4096
+
+ dsk=$(( $(usex doc 3072 0) + dsk ))
+ dsk=$(( $(usex examples 3072 0) + dsk ))
+ dsk=$(( $(usex cuda 8192 0) + dsk ))
+ export CHECKREQS_DISK_BUILD=${dsk}M
+
+ # In case users are not aware of the extra NINJAOPTS, check
+ # for the more common MAKEOPTS, in case NINJAOPTS is empty
+ local jobs=1
+ if [[ -n "${NINJAOPTS}" ]]; then
+ jobs=$(makeopts_jobs "${NINJAOPTS}" "$(get_nproc)")
+ elif [[ -n "${MAKEOPTS}" ]]; then
+ jobs=$(makeopts_jobs "${MAKEOPTS}" "$(get_nproc)")
+ fi
+
+ if use cuda; then
+ local mem=$(( $(usex cuda 7168 0) ))
+ mem=$(( mem * $(( jobs > 4 ? 4 : jobs )) ))
+ export CHECKREQS_MEMORY=${mem}M
+ fi
+
+ "check-reqs_pkg_${EBUILD_PHASE}"
+}
+
+cuda_get_host_compiler() {
+ if [[ -n "${NVCC_CCBIN}" ]]; then
+ echo "${NVCC_CCBIN}"
+ return
+ fi
+
+ if [[ -n "${CUDAHOSTCXX}" ]]; then
+ echo "${CUDAHOSTCXX}"
+ return
+ fi
+
+ einfo "Trying to find working CUDA host compiler"
+
+ if ! tc-is-gcc && ! tc-is-clang; then
+ die "$(tc-get-compiler-type) compiler is not supported"
+ fi
+
+ local compiler compiler_type compiler_version
+ local package package_version
+ local NVCC_CCBIN_default
+
+ compiler_type="$(tc-get-compiler-type)"
+ compiler_version="$("${compiler_type}-major-version")"
+
+ # try the default compiler first
+ NVCC_CCBIN="$(tc-getCXX)"
+ NVCC_CCBIN_default="${NVCC_CCBIN}-${compiler_version}"
+
+ compiler="${NVCC_CCBIN/%-${compiler_version}}"
+
+ # store the package so we can re-use it later
+ package="sys-devel/${compiler_type}"
+ package_version="${package}"
+
+ ebegin "testing ${NVCC_CCBIN_default} (default)"
+
+ while ! nvcc -v -ccbin "${NVCC_CCBIN}" - -x cu <<<"int main(){}" &>> "${T}/cuda_get_host_compiler.log" ; do
+ eend 1
+
+ while true; do
+ # prepare next version
+ if ! package_version="<$(best_version "${package_version}")"; then
+ die "could not find a supported version of ${compiler}"
+ fi
+
+ NVCC_CCBIN="${compiler}-$(ver_cut 1 "${package_version/#<${package}-/}")"
+
+ [[ "${NVCC_CCBIN}" != "${NVCC_CCBIN_default}" ]] && break
+ done
+ ebegin "testing ${NVCC_CCBIN}"
+ done
+ eend $?
+
+ # clean temp file
+ rm -f a.out
+
+ echo "${NVCC_CCBIN}"
+ export NVCC_CCBIN
+}
+
+cuda_get_host_native_arch() {
+ [[ -n ${CUDAARCHS} ]] && echo "${CUDAARCHS}"
+
+ __nvcc_device_query || die "failed to query the native device"
+}
+
+vtk_add_sandbox() {
+ local WRITE=()
+
+ # mesa via virtx will make use of udmabuf if it exists
+ [[ -c "/dev/udmabuf" ]] && WRITE+=( "/dev/udmabuf" )
+
+ readarray -t dris <<<"$(
+ for dri in /sys/class/drm/*/dev; do
+ realpath "/dev/char/$(cat "${dri}")"
+ eqawarn "dri ${dri} $(cat "${dri}") $(realpath "/dev/char/$(cat "${dri}")")"
+ done
+ )"
+
+ [[ -n "${dris[*]}" ]] && WRITE+=( "${dris[@]}" )
+
+ if [[ -d /sys/module/nvidia ]]; then
+ # /dev/nvidia{0-9}
+ readarray -t nvidia_devs <<<"$(
+ find /dev -regextype posix-extended -regex '/dev/nvidia(|-(nvswitch|vgpu))[0-9]*'
+ )"
+ [[ -n "${nvidia_devs[*]}" ]] && WRITE+=( "${nvidia_devs[@]}" )
+
+ WRITE+=(
+ "/dev/nvidiactl"
+ "/dev/nvidia-modeset"
+
+ "/dev/nvidia-vgpuctl"
+
+ "/dev/nvidia-nvlink"
+ "/dev/nvidia-nvswitchctl"
+
+ "/dev/nvidia-uvm"
+ "/dev/nvidia-uvm-tools"
+
+ # "/dev/nvidia-caps/nvidia-cap%d"
+ "/dev/nvidia-caps/"
+ # "/dev/nvidia-caps-imex-channels/channel%d"
+ "/dev/nvidia-caps-imex-channels/"
+ )
+ fi
+
+ # for portage
+ WRITE+=( "/proc/self/task/" )
+
+ local dev
+ for dev in "${WRITE[@]}"; do
+ [[ ! -e "${dev}" ]] && return
+
+ [[ -w "${dev}" ]] && return
+
+ eqawarn "addwrite ${dev}"
+ addwrite "${dev}"
+ if [[ ! -d "${dev}" ]] && [[ ! -w "${dev}" ]]; then
+ eerror "can not access ${dev} after addwrite"
+ fi
+ done
+}
+
+pkg_pretend() {
+ [[ ${MERGE_TYPE} != binary ]] && has openmp && tc-check-openmp
+
+ vtk_check_reqs
+
+ # When building binpkgs you probably want to include all targets
+ if use cuda && [[ ${MERGE_TYPE} == "buildonly" ]] && [[ -n "${CUDA_GENERATION}" || -n "${CUDA_ARCH_BIN}" ]]; then
+ local info_message="When building a binary package it's recommended to unset CUDA_GENERATION and CUDA_ARCH_BIN"
+ einfo "$info_message so all available architectures are build."
+ fi
+}
+
+pkg_setup() {
+ [[ ${MERGE_TYPE} != binary ]] && has openmp && tc-check-openmp
+
+ vtk_check_reqs
+
+ if use cuda && [[ ! -e /dev/nvidia-uvm ]]; then
+ # NOTE We try to load nvidia-uvm and nvidia-modeset here,
+ # so __nvcc_device_query does not fail later.
+
+ nvidia-modprobe -m -u -c 0 || true
+ fi
+
+ use java && java-pkg-opt-2_pkg_setup
+ use python && python-single-r1_pkg_setup
+ use web && webapp_pkg_setup
+}
+
+# Note: The following libraries are marked as internal by kitware
+# and can currently not unbundled:
+# diy2, exodusII, fides, h5part, kissfft, loguru, verdict, vpic,
+# vtkm, xdmf{2,3}, zfp
+# TODO: exprtk, ioss
+# Note: As of v9.2.2 we no longer drop bundled libraries, when using system
+# libraries. This just saves a little space. CMake logic of VTK on ThirdParty
+# libraries avoids automagic builds, so deletion is not needed to catch these.
+src_prepare() {
+ if use doc; then
+ einfo "Removing .md5 files from documents."
+ rm -f "${WORKDIR}"/html/*.md5 || die "Failed to remove superfluous hashes"
+ sed -e "s|\${VTK_BINARY_DIR}/Utilities/Doxygen/doc|${WORKDIR}|" \
+ -i Utilities/Doxygen/CMakeLists.txt || die
+ fi
+
+ if use opencascade && has_version ">=sci-libs/opencascade-7.8.0"; then
+ eapply "${FILESDIR}/vtk-9.3.0-opencascade-7.8.0.patch"
+ fi
+
+ cmake_src_prepare
+
+ if use test; then
+ ebegin "Copying data files to ${BUILD_DIR}"
+ mkdir -p "${BUILD_DIR}/ExternalData" || die
+ pushd "${BUILD_DIR}/ExternalData" >/dev/null || die
+ ln -sf "../../${S}/.ExternalData/README.rst" . || die
+ ln -sf "../../${S}/.ExternalData/SHA512" . || die
+ popd >/dev/null || die
+ eend "$?"
+ fi
+}
+
+# TODO: check these and consider to use them
+# VTK_BUILD_SCALED_SOA_ARRAYS
+# VTK_DISPATCH_{AOS,SOA,TYPED}_ARRAYS
+src_configure() {
+ local mycmakeargs=(
+ -DCMAKE_DISABLE_FIND_PACKAGE_Git="yes"
+ -DVTK_GIT_DESCRIBE="v${PV}"
+ -DVTK_VERSION_FULL="${PV}"
+ -DGIT_EXECUTABLE="${T}/notgit"
+
+ -DCMAKE_POLICY_DEFAULT_CMP0167="OLD"
+ -DCMAKE_POLICY_DEFAULT_CMP0174="OLD"
+ -DCMAKE_POLICY_DEFAULT_CMP0177="OLD"
+
+ -DCMAKE_INSTALL_LICENSEDIR="share/${PN}/licenses"
+ -DVTK_IGNORE_CMAKE_CXX11_CHECKS=yes
+
+ -DVTK_ANDROID_BUILD=OFF
+ -DVTK_IOS_BUILD=OFF
+
+ -DVTK_BUILD_ALL_MODULES="$(usex all-modules)"
+ # we use the pre-built documentation and install these with USE=doc
+ -DVTK_BUILD_DOCUMENTATION=OFF
+ -DVTK_BUILD_EXAMPLES="$(usex examples)"
+
+ # no package in the tree: https://github.com/LLNL/conduit
+ -DVTK_ENABLE_CATALYST=OFF
+ -DVTK_ENABLE_KITS=OFF
+ -DVTK_ENABLE_LOGGING="$(usex logging)"
+ # defaults to ON: USE flag for this?
+ -DVTK_ENABLE_REMOTE_MODULES=OFF
+
+ # disable fetching files during build
+ -DVTK_FORBID_DOWNLOADS="yes"
+
+ -DVTK_GROUP_ENABLE_Imaging="$(usex imaging "YES" "NO")"
+ -DVTK_GROUP_ENABLE_Rendering="$(usex rendering "YES" "NO")"
+ -DVTK_GROUP_ENABLE_StandAlone="$(usex minimal "NO" "YES")"
+ -DVTK_GROUP_ENABLE_Views="$(usex views "YES" "NO")"
+ -DVTK_GROUP_ENABLE_Web="$(usex web "YES" "NO")"
+
+ -DVTK_INSTALL_SDK=ON
+
+ -DVTK_MODULE_ENABLE_VTK_IOCGNSReader="$(usex cgns "YES" "NO")"
+ -DVTK_MODULE_ENABLE_VTK_IOExportPDF="$(usex minimal "NO" "YES")"
+ -DVTK_MODULE_ENABLE_VTK_IOLAS="$(usex las "YES" "NO")"
+ -DVTK_MODULE_ENABLE_VTK_IONetCDF="$(usex netcdf "YES" "NO")"
+ -DVTK_MODULE_ENABLE_VTK_IOOCCT="$(usex opencascade "YES" "NO")"
+ -DVTK_MODULE_ENABLE_VTK_IOOggTheora="$(usex minimal "NO" "YES")"
+ -DVTK_MODULE_ENABLE_VTK_IOOpenVDB="$(usex openvdb "YES" "NO")"
+ -DVTK_MODULE_ENABLE_VTK_IOSQL="YES" # sqlite
+ -DVTK_MODULE_ENABLE_VTK_IOPDAL="$(usex pdal "YES" "NO")"
+ -DVTK_MODULE_ENABLE_VTK_IOXML="YES"
+ -DVTK_MODULE_ENABLE_VTK_IOXMLParser="YES"
+ -DVTK_MODULE_ENABLE_VTK_RenderingFreeType="$(usex truetype "YES" "NO")"
+ -DVTK_MODULE_ENABLE_VTK_RenderingFreeTypeFontConfig="$(usex truetype "YES" "NO")"
+ -DVTK_MODULE_ENABLE_VTK_cgns="$(usex cgns "YES" "NO")"
+ -DVTK_MODULE_ENABLE_VTK_doubleconversion="YES"
+ -DVTK_MODULE_ENABLE_VTK_eigen="YES"
+ -DVTK_MODULE_ENABLE_VTK_expat="YES"
+ -DVTK_MODULE_ENABLE_VTK_fmt="YES"
+ -DVTK_MODULE_ENABLE_VTK_freetype="$(usex truetype "YES" "NO")"
+ -DVTK_MODULE_ENABLE_VTK_hdf5="YES"
+ -DVTK_MODULE_ENABLE_VTK_jpeg="YES"
+ -DVTK_MODULE_ENABLE_VTK_jsoncpp="YES"
+ -DVTK_MODULE_ENABLE_VTK_libharu="$(usex minimal "NO" "YES")"
+ -DVTK_MODULE_ENABLE_VTK_libproj="$(usex minimal "NO" "YES")"
+ -DVTK_MODULE_ENABLE_VTK_libxml2="YES"
+ -DVTK_MODULE_ENABLE_VTK_lz4="YES"
+ -DVTK_MODULE_ENABLE_VTK_lzma="YES"
+ -DVTK_MODULE_ENABLE_VTK_netcdf="$(usex netcdf "YES" "NO")"
+ -DVTK_MODULE_ENABLE_VTK_nlohmannjson="YES"
+ -DVTK_MODULE_ENABLE_VTK_ogg="YES"
+ -DVTK_MODULE_ENABLE_VTK_pegtl="YES"
+ -DVTK_MODULE_ENABLE_VTK_png="YES"
+ -DVTK_MODULE_ENABLE_VTK_pugixml="YES"
+ -DVTK_MODULE_ENABLE_VTK_sqlite="YES"
+ -DVTK_MODULE_ENABLE_VTK_theora="$(usex minimal "NO" "YES")"
+ -DVTK_MODULE_ENABLE_VTK_tiff="YES"
+ -DVTK_MODULE_ENABLE_VTK_utf8="YES"
+ -DVTK_MODULE_ENABLE_VTK_vtkvtkm="$(usex vtkm "YES" "NO")"
+ -DVTK_MODULE_ENABLE_VTK_zlib="YES"
+
+ # not packaged in Gentoo
+ -DVTK_MODULE_USE_EXTERNAL_VTK_fast_float=OFF
+ -DVTK_MODULE_USE_EXTERNAL_VTK_exprtk=OFF
+ -DVTK_MODULE_USE_EXTERNAL_VTK_ioss=OFF
+ -DVTK_MODULE_USE_EXTERNAL_VTK_verdict=OFF
+
+ -DVTK_RELOCATABLE_INSTALL=ON
+ -DVTK_UNIFIED_INSTALL_TREE=ON
+
+ -DVTK_SMP_ENABLE_OPENMP="$(usex openmp)"
+ -DVTK_SMP_ENABLE_STDTHREAD="$(usex threads)"
+ -DVTK_SMP_ENABLE_TBB="$(usex tbb)"
+
+ -DVTK_USE_CUDA="$(usex cuda)"
+ # use system libraries where possible
+ -DVTK_USE_EXTERNAL=ON
+ # avoid finding package from either ::guru or ::sci
+ -DVTK_USE_MEMKIND=OFF
+ -DVTK_USE_MPI="$(usex mpi)"
+ -DVTK_USE_TK="$(usex tk)"
+ -DVTK_USE_X=ON
+
+ -DVTK_WHEEL_BUILD=OFF
+
+ -DVTK_WRAP_JAVA="$(usex java)"
+ -DVTK_WRAP_PYTHON="$(usex python)"
+ )
+
+ if use all-modules; then
+ mycmakeargs+=(
+ # no package in ::gentoo
+ -DVTK_ENABLE_OSPRAY=OFF
+ # TODO: some of these are tied to the VTK_ENABLE_REMOTE_MODULES
+ # option. Check whether we can download them clean and enable
+ # them.
+ -DVTK_MODULE_ENABLE_VTK_DomainsMicroscopy="NO"
+ -DVTK_MODULE_ENABLE_VTK_fides="NO"
+ -DVTK_MODULE_ENABLE_VTK_FiltersOpenTURNS="NO"
+ -DVTK_MODULE_ENABLE_VTK_IOADIOS2="NO"
+ -DVTK_MODULE_ENABLE_VTK_IOFides="NO"
+
+ -DVTK_MODULE_ENABLE_VTK_RenderingOpenVR="NO"
+ -DVTK_MODULE_ENABLE_VTK_RenderingOpenXR="NO"
+
+ -DVTK_MODULE_USE_EXTERNAL_VTK_cli11="YES"
+ )
+ fi
+
+ if use boost; then
+ mycmakeargs+=(
+ -DVTK_MODULE_ENABLE_VTK_InfovisBoost="YES"
+ -DVTK_MODULE_ENABLE_VTK_InfovisBoostGraphAlgorithms="YES"
+ )
+ fi
+
+ if use cuda; then
+ cuda_add_sandbox -w
+ addwrite "/proc/self/task"
+
+ if ! test -w /dev/nvidiactl; then
+ # eqawarn "Can't access the GPU at /dev/nvidiactl."
+ # eqawarn "User $(id -nu) is not in the group \"video\"."
+ if [[ -z "${CUDA_GENERATION}" ]] && [[ -z "${CUDA_ARCH_BIN}" ]]; then
+ # build all targets
+ mycmakeargs+=(
+ -DCUDA_GENERATION=""
+ )
+ fi
+ else
+ local -x CUDAARCHS
+ : "${CUDAARCHS:="$(cuda_get_host_native_arch)"}"
+ fi
+
+ # set NVCC_CCBIN
+ local -x CUDAHOSTCXX CUDAHOSTLD
+ CUDAHOSTCXX="$(cuda_get_host_compiler)"
+ CUDAHOSTLD="$(tc-getCXX)"
+ export NVCC_CCBIN="${CUDAHOSTCXX}"
+
+ if tc-is-gcc; then
+ # Filter out IMPLICIT_LINK_DIRECTORIES picked up by CMAKE_DETERMINE_COMPILER_ABI(CUDA)
+ # See /usr/share/cmake/Help/variable/CMAKE_LANG_IMPLICIT_LINK_DIRECTORIES.rst
+ CMAKE_CUDA_IMPLICIT_LINK_DIRECTORIES_EXCLUDE=$(
+ "${CUDAHOSTLD}" -E -v - <<<"int main(){}" |& \
+ grep LIBRARY_PATH | cut -d '=' -f 2 | cut -d ':' -f 1
+ )
+ fi
+ fi
+
+ if use debug; then
+ mycmakeargs+=(
+ -DVTK_DEBUG_LEAKS=ON
+ -DVTK_DEBUG_MODULE=ON
+ -DVTK_DEBUG_MODULE_ALL=ON
+ -DVTK_ENABLE_SANITIZER=ON
+ -DVTK_EXTRA_COMPILER_WARNINGS=ON
+ -DVTK_WARN_ON_DISPATCH_FAILURE=ON
+ )
+ if use rendering; then
+ mycmakeargs+=( -DVTK_OPENGL_ENABLE_STREAM_ANNOTATIONS=ON )
+ fi
+ else
+ : "${CMAKE_BUILD_TYPE:="Release"}"
+ export CMAKE_BUILD_TYPE
+ fi
+
+ if use examples || use test; then
+ mycmakeargs+=( -DVTK_USE_LARGE_DATA=ON )
+ fi
+
+ if use ffmpeg; then
+ mycmakeargs+=( -DVTK_MODULE_ENABLE_VTK_IOFFMPEG="YES" )
+ if use rendering; then
+ mycmakeargs+=( -DVTK_MODULE_ENABLE_VTK_RenderingFFMPEGOpenGL2="YES" )
+ fi
+ fi
+
+ if use gdal; then
+ mycmakeargs+=(
+ -DVTK_MODULE_ENABLE_VTK_GeovisGDAL="YES"
+ -DVTK_MODULE_ENABLE_VTK_IOGDAL="YES"
+ -DVTK_MODULE_ENABLE_VTK_IOGeoJSON="YES"
+ )
+ fi
+
+ if use imaging; then
+ mycmakeargs+=(
+ -DVTK_MODULE_ENABLE_VTK_ImagingColor="YES"
+ -DVTK_MODULE_ENABLE_VTK_ImagingCore="YES"
+ -DVTK_MODULE_ENABLE_VTK_ImagingFourier="YES"
+ -DVTK_MODULE_ENABLE_VTK_ImagingGeneral="YES"
+ -DVTK_MODULE_ENABLE_VTK_ImagingHybrid="YES"
+ -DVTK_MODULE_ENABLE_VTK_ImagingMath="YES"
+ -DVTK_MODULE_ENABLE_VTK_ImagingMorphological="YES"
+ -DVTK_MODULE_ENABLE_VTK_ImagingOpenGL2="YES"
+ -DVTK_MODULE_ENABLE_VTK_ImagingSources="YES"
+ -DVTK_MODULE_ENABLE_VTK_ImagingStatistics="YES"
+ -DVTK_MODULE_ENABLE_VTK_ImagingStencil="YES"
+ )
+ use rendering && mycmakeargs+=( -DVTK_MODULE_ENABLE_VTK_RenderingImage="YES" )
+ fi
+
+ if ! use java && ! use python; then
+ # defaults to ON
+ mycmakeargs+=( -DVTK_ENABLE_WRAPPING=OFF )
+ fi
+
+ if use java; then
+ mycmakeargs+=(
+ -DCMAKE_INSTALL_JARDIR="share/${PN}"
+ -DVTK_ENABLE_WRAPPING=ON
+ -DVTK_MODULE_ENABLE_VTK_Java="YES"
+ -DVTK_JAVA_SOURCE_VERSION="$(java-config -g PROVIDES_VERSION)"
+ -DVTK_JAVA_TARGET_VERSION="$(java-config -g PROVIDES_VERSION)"
+ )
+ fi
+
+ if use minimal; then
+ mycmakeargs+=(
+ -DVTK_MODULE_ENABLE_VTK_CommonComputationalGeometry="YES"
+ -DVTK_MODULE_ENABLE_VTK_CommonExecutionModel="YES"
+ -DVTK_MODULE_ENABLE_VTK_CommonMath="YES"
+ -DVTK_MODULE_ENABLE_VTK_CommonMisc="YES"
+ -DVTK_MODULE_ENABLE_VTK_CommonSystem="YES"
+ -DVTK_MODULE_ENABLE_VTK_CommonTransforms="YES"
+
+ -DVTK_MODULE_ENABLE_VTK_FiltersCore="YES"
+ -DVTK_MODULE_ENABLE_VTK_FiltersExtraction="YES"
+ -DVTK_MODULE_ENABLE_VTK_FiltersGeneral="YES"
+ -DVTK_MODULE_ENABLE_VTK_FiltersGeneric="YES"
+ -DVTK_MODULE_ENABLE_VTK_FiltersGeometry="YES"
+ -DVTK_MODULE_ENABLE_VTK_FiltersHybrid="NO"
+ -DVTK_MODULE_ENABLE_VTK_FiltersHyperTree="YES"
+ -DVTK_MODULE_ENABLE_VTK_FiltersSources="YES"
+ -DVTK_MODULE_ENABLE_VTK_FiltersStatistics="YES"
+ -DVTK_MODULE_ENABLE_VTK_FiltersVerdict="YES"
+
+ -DVTK_MODULE_ENABLE_VTK_IOCore="YES"
+ -DVTK_MODULE_ENABLE_VTK_IOGeometry="NO"
+ -DVTK_MODULE_ENABLE_VTK_IOLegacy="YES"
+
+ -DVTK_MODULE_ENABLE_VTK_ParallelCore="YES"
+ -DVTK_MODULE_ENABLE_VTK_ParallelDIY="YES"
+ )
+ fi
+
+ if use mpi; then
+ mycmakeargs+=(
+ -DVTK_GROUP_ENABLE_MPI="YES"
+ -DVTK_MODULE_ENABLE_VTK_IOH5part="YES"
+ -DVTK_MODULE_ENABLE_VTK_IOMPIParallel="YES"
+ -DVTK_MODULE_ENABLE_VTK_IOParallel="YES"
+ -DVTK_MODULE_ENABLE_VTK_IOParallelNetCDF="$(usex netcdf "YES" "NO")"
+ -DVTK_MODULE_ENABLE_VTK_IOParallelXML="YES"
+ -DVTK_MODULE_ENABLE_VTK_ParallelMPI="YES"
+ -DVTK_MODULE_ENABLE_VTK_h5part="YES"
+ -DVTK_MODULE_USE_EXTERNAL_VTK_verdict=OFF
+ )
+ use imaging && mycmakeargs+=( -DVTK_MODULE_ENABLE_VTK_IOMPIImage="YES" )
+ use python && mycmakeargs+=( -DVTK_MODULE_ENABLE_VTK_ParallelMPI4Py="YES" )
+ if use rendering; then
+ mycmakeargs+=(
+ -DVTK_MODULE_ENABLE_VTK_RenderingParallel="YES"
+ -DVTK_MODULE_ENABLE_VTK_RenderingParallelLIC="YES"
+ )
+ fi
+ use vtkm && mycmakeargs+=( -DVTKm_ENABLE_MPI=ON )
+ else
+ mycmakeargs+=( -DVTK_GROUP_ENABLE_MPI="NO" )
+ fi
+
+ use mysql && mycmakeargs+=( -DVTK_MODULE_ENABLE_VTK_IOMySQL="YES" )
+ use odbc && mycmakeargs+=( -DVTK_MODULE_ENABLE_VTK_IOODBC="YES" )
+ use openvdb && mycmakeargs+=( -DOpenVDB_CMAKE_PATH="${ESYSROOT}/usr/$(get_libdir)/cmake/OpenVDB" )
+ use postgres && mycmakeargs+=( -DVTK_MODULE_ENABLE_VTK_IOPostgreSQL="YES" )
+
+ if use python; then
+ mycmakeargs+=(
+ -DPython3_EXECUTABLE="${PYTHON}"
+ -DVTK_ENABLE_WRAPPING=ON
+ -DVTK_MODULE_ENABLE_VTK_Python="YES"
+ -DVTK_MODULE_ENABLE_VTK_PythonInterpreter="YES"
+ -DVTK_MODULE_ENABLE_VTK_WrappingPythonCore="YES"
+ -DVTK_PYTHON_OPTIONAL_LINK="OFF"
+ -DVTK_PYTHON_SITE_PACKAGES_SUFFIX="lib/${EPYTHON}/site-packages"
+ )
+ use rendering && mycmakeargs+=( -DVTK_MODULE_ENABLE_VTK_PythonContext2D="YES" )
+ fi
+
+ if use qt6; then
+ mycmakeargs+=(
+ -DCMAKE_INSTALL_QMLDIR="${EPFREIX}/usr/$(get_libdir)/qt6/qml"
+ -DVTK_QT_VERSION="6"
+ )
+ if has_version "dev-qt/qtbase:6[gles2-only]" || use gles2-only; then
+ mycmakeargs+=(
+ # Force using EGL & GLES
+ -DVTK_OPENGL_HAS_EGL=ON
+ -DVTK_OPENGL_USE_GLES=ON
+ )
+ fi
+ else
+ mycmakeargs+=( -DVTK_GROUP_ENABLE_Qt="NO" )
+ fi
+
+ if use qt6; then
+ mycmakeargs+=(
+ -DVTK_GROUP_ENABLE_Qt:STRING="YES"
+ -DVTK_MODULE_ENABLE_VTK_GUISupportQt="YES"
+ -DVTK_MODULE_ENABLE_VTK_GUISupportQtQuick="YES"
+ )
+ if use mysql || use postgres; then
+ mycmakeargs+=( -DVTK_MODULE_ENABLE_VTK_GUISupportQtSQL="YES" )
+ fi
+ if use rendering; then
+ mycmakeargs+=( -DVTK_MODULE_ENABLE_VTK_RenderingQt="YES" )
+ fi
+ if use views; then
+ mycmakeargs+=( -DVTK_MODULE_ENABLE_VTK_ViewsQt="YES" )
+ fi
+ fi
+
+ if use rendering; then
+ mycmakeargs+=(
+ -DVTK_ENABLE_OSPRAY=OFF
+
+ -DVTK_MODULE_ENABLE_VTK_IOExportGL2PS="YES"
+ -DVTK_MODULE_ENABLE_VTK_RenderingAnnotation="YES"
+ -DVTK_MODULE_ENABLE_VTK_RenderingContext2D="YES"
+ -DVTK_MODULE_ENABLE_VTK_RenderingContextOpenGL2="YES"
+ -DVTK_MODULE_ENABLE_VTK_RenderingCore="YES"
+ -DVTK_MODULE_ENABLE_VTK_RenderingExternal="YES"
+ -DVTK_MODULE_ENABLE_VTK_RenderingGL2PSOpenGL2="YES"
+ -DVTK_MODULE_ENABLE_VTK_RenderingHyperTreeGrid="YES"
+ -DVTK_MODULE_ENABLE_VTK_RenderingLICOpenGL2="YES"
+ -DVTK_MODULE_ENABLE_VTK_RenderingLOD="YES"
+ -DVTK_MODULE_ENABLE_VTK_RenderingLabel="YES"
+ -DVTK_MODULE_ENABLE_VTK_RenderingOpenGL2="YES"
+ -DVTK_MODULE_ENABLE_VTK_RenderingRayTracing="YES"
+ -DVTK_MODULE_ENABLE_VTK_RenderingSceneGraph="YES"
+ -DVTK_MODULE_ENABLE_VTK_RenderingUI="YES"
+ -DVTK_MODULE_ENABLE_VTK_RenderingVolume="YES"
+ -DVTK_MODULE_ENABLE_VTK_RenderingVolumeAMR="YES"
+ -DVTK_MODULE_ENABLE_VTK_RenderingVolumeOpenGL2="YES"
+ -DVTK_MODULE_ENABLE_VTK_RenderingZSpace="NO"
+ -DVTK_MODULE_ENABLE_VTK_gl2ps="YES"
+ -DVTK_MODULE_ENABLE_VTK_glew="YES"
+ -DVTK_MODULE_ENABLE_VTK_opengl="YES"
+
+ -DVTK_USE_SDL2="$(usex sdl "YES" "NO")"
+ )
+ use python && mycmakeargs+=( -DVTK_MODULE_ENABLE_VTK_RenderingMatplotlib="YES" )
+ use tk && mycmakeargs+=( -DVTK_MODULE_ENABLE_VTK_RenderingTk="YES" )
+ use views && mycmakeargs+=( -DVTK_MODULE_ENABLE_VTK_ViewsContext2D="YES" )
+ use web && mycmakeargs+=( -DVTK_MODULE_ENABLE_VTK_RenderingVtkJS="YES" )
+ fi
+
+ # Testing has been changed in 9.2.5: it is now allowed without
+ # requiring to download, if the data files are available locally!
+ if use test; then
+ mycmakeargs+=(
+ -DVTK_BUILD_TESTING=ON
+ # disable fetching data files for the default 'all' target
+ -DVTK_DATA_EXCLUDE_FROM_ALL=OFF
+
+ # requested even if all use flags are off
+ -DVTK_MODULE_ENABLE_VTK_octree="YES"
+ -DVTK_MODULE_ENABLE_VTK_ViewsCore="YES"
+
+ -DVTK_MODULE_USE_EXTERNAL_VTK_cli11="YES"
+ )
+ else
+ mycmakeargs+=( -DVTK_BUILD_TESTING=OFF )
+ fi
+
+ # FIXME: upstream provides 4 threading models, as of 9.1.0. These are
+ # sequential, stdthread, openmp and tbb. AFAICS all of them can be
+ # enabled at the same time. Sequential and STDThread are enabled by
+ # default. The default selected type for the build is sequential.
+ # Assuming sequential < STDThread < openmp < tbb wrt speed, although
+ # this is dependent on the actual scenario where threading is used.
+ if use tbb; then
+ mycmakeargs+=( -DVTK_SMP_IMPLEMENTATION_TYPE="TBB" )
+ elif use openmp; then # FIXME doesn't work with clang
+ mycmakeargs+=( -DVTK_SMP_IMPLEMENTATION_TYPE="OpenMP" )
+ elif use threads; then
+ mycmakeargs+=( -DVTK_SMP_IMPLEMENTATION_TYPE="STDThread" )
+ else
+ mycmakeargs+=( -DVTK_SMP_IMPLEMENTATION_TYPE="Sequential" )
+ fi
+
+ use tk && mycmakeargs+=( -DVTK_GROUP_ENABLE_Tk="YES" )
+
+ if use views; then
+ mycmakeargs+=(
+ -DVTK_MODULE_ENABLE_VTK_ViewsCore="YES"
+ -DVTK_MODULE_ENABLE_VTK_ViewsInfovis="YES"
+ )
+ fi
+
+ if use vtkm; then
+ mycmakeargs+=(
+ -DVTK_MODULE_ENABLE_VTK_AcceleratorsVTKmCore="YES"
+ -DVTK_MODULE_ENABLE_VTK_AcceleratorsVTKmDataModel="YES"
+ -DVTK_MODULE_ENABLE_VTK_AcceleratorsVTKmFilters="YES"
+ -DVTKm_ENABLE_CPACK="no" # "Enable CPack packaging of VTKm" ON
+ -DVTKm_ENABLE_CUDA="$(usex cuda)" # "Enable Cuda support" OFF
+ -DVTKm_ENABLE_DOCUMENTATION="$(usex doc)" # "Build Doxygen documentation" OFF
+ -DVTKm_ENABLE_EXAMPLES="$(usex examples)" # "Build examples" OFF
+ -DVTKm_ENABLE_HDF5_IO="yes" # "Enable HDF5 support" OFF
+ -DVTKm_ENABLE_LOGGING="$(usex logging)" # "Enable VTKm Logging" ON
+ -DVTKm_ENABLE_MPI="$(usex mpi)" # "Enable MPI support" OFF
+ -DVTKm_ENABLE_OPENMP="$(usex openmp)" # "Enable OpenMP support" OFF
+ -DVTKm_ENABLE_RENDERING="$(usex rendering)" # "Enable rendering library" ON
+ -DVTKm_ENABLE_TBB="$(usex tbb)" # "Enable TBB support" OFF
+ -DVTKm_ENABLE_TESTING="$(usex test)" # "Enable VTKm Testing" ON
+ -DVTKm_ENABLE_TUTORIALS="no" # "Build tutorials" OFF
+ -DVTKm_NO_ASSERT_CUDA="yes" # "Disable assertions for CUDA devices." ON
+ -DVTKm_NO_ASSERT_HIP="yes" # "Disable assertions for HIP devices." ON
+ -DVTKm_NO_ASSERT="no" # "Disable assertions in debugging builds." OFF
+ -DVTKm_NO_INSTALL_README_LICENSE="ON" # bug #793221 # "disable the installation of README and LICENSE files" OFF
+ -DVTKm_SKIP_LIBRARY_VERSIONS="no" # "Skip versioning VTK-m libraries" OFF
+ -DVTKm_Vectorization="none" # only sets compiler flags
+ )
+ fi
+
+ if use web; then
+ mycmakeargs+=(
+ -DVTK_MODULE_ENABLE_VTK_WebCore="YES"
+ -DVTK_MODULE_ENABLE_VTK_WebGLExporter="YES"
+ )
+ use python && mycmakeargs+=( -DVTK_MODULE_ENABLE_VTK_WebPython="YES" )
+ fi
+
+ cmake_src_configure
+}
+
+src_compile() {
+ use test && cmake_build VTKData
+ cmake_src_compile
+}
+
+src_test() {
+ vtk_add_sandbox
+
+ addwrite /dev/fuse
+
+ # The build system prepends /usr/$(get_libdir) to the RUNPATH instead of appending.
+ # Set LD_LIBRARY_PATH to use the just build libraries.
+ local -x LD_LIBRARY_PATH="${BUILD_DIR}/$(get_libdir)${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH}"
+
+ # export VTK_SMP_BACKEND_IN_USE="STDThread"
+
+ local -x -a CMAKE_SKIP_TESTS
+
+ if [[ "${CMAKE_RUN_OPTIONAL_TESTS:=yes}" != "yes" ]]; then
+ local -a REALLY_BAD_TESTS BAD_TESTS RANDOM_FAIL_TESTS
+ # don't work at all
+ REALLY_BAD_TESTS=(
+ # File missing? ExternalData/Testing/Data/MotionFX/position_file/Sprocket_New.prn
+ "VTK::IOMotionFXCxx-TestMotionFXCFGReaderPositionFile$" # (Subprocess aborted)
+
+ "VTK::InteractionWidgetsCxx-TestBrokenLineWidget$"
+ "VTK::AcceleratorsVTKmFiltersCxx-TestVTKMClipWithImplicitFunction$" # (NUMERICAL)
+ "VTK::AcceleratorsVTKmFiltersCxx-TestVTKMHistogram$" # (Failed)
+ "VTK::AcceleratorsVTKmFiltersCxx-TestVTKMMarchingCubes$" # (Failed)
+ "VTK::AcceleratorsVTKmFiltersCxx-TestVTKMMarchingCubes2$" # (Failed)
+ "VTK::ChartsCoreCxx-TestChartDoubleColors$" # (Failed)
+ "VTK::ChartsCoreCxx-TestChartDoubleColorsOpaque$" # (Failed)
+ "VTK::ChartsCoreCxx-TestParallelCoordinatesDouble$" # (Failed)
+ "VTK::CommonDataModelCxx-TestHyperTreeGridGeometricLocator$" # (Failed)
+ "VTK::CommonDataModelCxx-TestTriangle$" # (Failed)
+ "VTK::CommonDataModelCxx-UnitTestCells$" # (Failed)
+ "VTK::FiltersCoreCxx-TestDecimatePolylineFilter$" # (Failed)
+ "VTK::FiltersCoreCxx-TestImplicitPolyDataDistanceCube$" # (Failed)
+ "VTK::FiltersCorePython-TestSphereTreeFilter$" # (Failed)
+ "VTK::FiltersFlowPathsCxx-TestEvenlySpacedStreamlines2D$" # (Failed)
+ "VTK::FiltersGeneralCxx-TestContourTriangulatorHoles$" # (Failed)
+ "VTK::FiltersParallelCxx-TestAngularPeriodicFilter$" # (Failed)
+ "VTK::FiltersParallelDIY2Cxx-MPI-TestProbeLineFilter$" # (Failed)
+ "VTK::FiltersSelectionCxx-TestLinearSelector3D$" # (Failed)
+ "VTK::GUISupportQtQuickCxx-TestQQuickVTKRenderItem$" # (Failed)
+ "VTK::GUISupportQtQuickCxx-TestQQuickVTKRenderItemWidget$" # (Failed)
+ "VTK::GUISupportQtQuickCxx-TestQQuickVTKRenderWindow$" # (Failed)
+ "VTK::RenderingExternalCxx-TestGLUTRenderWindow$" # (Failed)
+ "VTK::RenderingFreeTypeFontConfigCxx-TestSystemFontRendering$" # (Failed)
+ "VTK::IOExportGL2PSCxx-TestGL2PSExporterVolumeRaster" # (Failed)
+ # "VTK::IOExportGL2PSCxx-TestGL2PSExporterVolumeRaster-RasterizePNG$" # (Not Run)
+ # "VTK::IOExportGL2PSCxx-TestGL2PSExporterVolumeRaster-VerifyRasterizedPDFPNG$" # (Failed)
+ # "VTK::IOExportGL2PSCxx-TestGL2PSExporterVolumeRaster-VerifyRasterizedPNG$" # (Failed)
+ "VTK::IOExportPDFCxx-TestPDFTransformedText-VerifyRasterizedPDFPNG$" # (Failed)
+ "VTK::IOOCCTCxx-TestOCCTReader$" # (Failed)
+ "VTK::RenderingCorePython-pickImageData$" # (Failed)
+ "VTK::RenderingRayTracing-HeaderTest$" # (Failed)
+ )
+
+ # don't work in src_test but when on their own
+ BAD_TESTS=(
+ "VTK::AcceleratorsVTKmCoreCxx-TestVTKMImplicitDataArray$" # (NUMERICAL)
+ "VTK::AcceleratorsVTKmFiltersCxx-TestVTKMCleanGrid$" # (NUMERICAL)
+ "VTK::AcceleratorsVTKmFiltersCxx-TestVTKMClip$" # (NUMERICAL)
+ "VTK::AcceleratorsVTKmFiltersCxx-TestVTKMExternalFaces$" # (Failed)
+ "VTK::AcceleratorsVTKmFiltersCxx-TestVTKMExtractVOI$" # (NUMERICAL)
+ "VTK::AcceleratorsVTKmFiltersCxx-TestVTKMLevelOfDetail$" # (NUMERICAL)
+ "VTK::AcceleratorsVTKmFiltersCxx-TestVTKMPointElevation$" # (NUMERICAL)
+ "VTK::AcceleratorsVTKmFiltersCxx-TestVTKMPointTransform$" # (NUMERICAL)
+ "VTK::AcceleratorsVTKmFiltersCxx-TestVTKMPolyDataNormals$" # (NUMERICAL)
+ "VTK::AcceleratorsVTKmFiltersCxx-TestVTKMThreshold$" # (NUMERICAL)
+ "VTK::AcceleratorsVTKmFiltersCxx-TestVTKMThreshold2$" # (NUMERICAL)
+ "VTK::AcceleratorsVTKmFiltersCxx-TestVTKMTriangleMeshPointNormals$" # (NUMERICAL)
+ "VTK::AcceleratorsVTKmFiltersCxx-TestVTKMWarpScalar$" # (NUMERICAL)
+ "VTK::AcceleratorsVTKmFiltersCxx-TestVTKMWarpVector$" # (NUMERICAL)
+ "VTK::ImagingOpenGL2Cxx-TestOpenGLImageGradient$" # (NUMERICAL)
+ "VTK::InteractionWidgetsCxx-TestResliceCursorWidget2$" # (Failed)
+ "VTK::InteractionWidgetsCxx-TestResliceCursorWidget3$" # (Failed)
+ "VTK::InteractionWidgetsPython-TestTensorWidget2$" # (Failed)
+ "VTK::RenderingCoreCxx-TestTextureRGBADepthPeeling$" # (Failed)
+ "VTK::RenderingLICOpenGL2Cxx-SurfaceLICCurvedContrastEnhancedBlended$" # (NUMERICAL)
+ "VTK::RenderingLICOpenGL2Cxx-SurfaceLICCurvedContrastEnhancedBlendedSmallGrain$" # (NUMERICAL)
+ "VTK::RenderingLICOpenGL2Cxx-SurfaceLICCurvedContrastEnhancedColorBlendedSmallGrain$" # (NUMERICAL)
+ "VTK::RenderingLICOpenGL2Cxx-SurfaceLICCurvedContrastEnhancedColorBlendedSmallGrainMask$" # (NUMERICAL)
+ "VTK::RenderingLICOpenGL2Cxx-SurfaceLICCurvedContrastEnhancedColorMappedSmallGrain$" # (NUMERICAL)
+ "VTK::RenderingLICOpenGL2Cxx-SurfaceLICCurvedContrastEnhancedColorMappedSmallGrainMask$" # (NUMERICAL)
+ "VTK::RenderingLICOpenGL2Cxx-SurfaceLICCurvedContrastEnhancedMapped$" # (NUMERICAL)
+ "VTK::RenderingLICOpenGL2Cxx-SurfaceLICCurvedContrastEnhancedMappedSmallGrain$" # (NUMERICAL)
+ "VTK::RenderingLICOpenGL2Cxx-SurfaceLICCurvedContrastEnhancedMappedSmallVectorNormalizeOff$" # (NUMERICAL)
+ "VTK::RenderingLICOpenGL2Cxx-SurfaceLICCurvedContrastEnhancedSmallGrainMask$" # (NUMERICAL)
+ "VTK::RenderingLICOpenGL2Cxx-SurfaceLICCurvedDefaults$" # (NUMERICAL)
+ "VTK::RenderingLICOpenGL2Cxx-SurfaceLICCurvedDefaultsColor$" # (NUMERICAL)
+ "VTK::RenderingLICOpenGL2Cxx-SurfaceLICCurvedEnhancedVectorNormalizeOff$" # (NUMERICAL)
+ "VTK::RenderingLICOpenGL2Cxx-SurfaceLICMultiBlockContrastEnhancedPerlin$" # (NUMERICAL)
+ "VTK::RenderingLICOpenGL2Cxx-SurfaceLICPlanarContrastEnhanced$" # (NUMERICAL)
+ "VTK::RenderingLICOpenGL2Cxx-SurfaceLICPlanarDefaults$" # (NUMERICAL)
+ "VTK::RenderingLICOpenGL2Cxx-SurfaceLICPlanarVectorNormalizeOff$" # (NUMERICAL)
+ "VTK::RenderingLICOpenGL2Cxx-SurfaceLICPlanarVectorNormalizeOffMediumGrainPerlin$" # (NUMERICAL)
+ "VTK::RenderingLICOpenGL2Cxx-SurfaceLICPlanarVectorNormalizeOffMediumGrainUniform$" # (NUMERICAL)
+ "VTK::RenderingLICOpenGL2Cxx-TestImageDataLIC2D$" # (NUMERICAL)
+ "VTK::RenderingLICOpenGL2Cxx-TestStructuredGridLIC2DXSlice$" # (NUMERICAL)
+ "VTK::RenderingLICOpenGL2Cxx-TestStructuredGridLIC2DYSlice$" # (NUMERICAL)
+ "VTK::RenderingLICOpenGL2Cxx-TestStructuredGridLIC2DZSlice$" # (NUMERICAL)
+ "VTK::RenderingMatplotlibCxx-TestContextMathTextImage$" # (NUMERICAL)
+ "VTK::RenderingMatplotlibCxx-TestIndexedLookupScalarBar$" # (NUMERICAL)
+ "VTK::RenderingMatplotlibCxx-TestMathTextActor$" # (NUMERICAL)
+ "VTK::RenderingMatplotlibCxx-TestMathTextActor3D$" # (NUMERICAL)
+ "VTK::RenderingMatplotlibCxx-TestRenderString$" # (NUMERICAL)
+ "VTK::RenderingMatplotlibCxx-TestScalarBarCombinatorics$" # (NUMERICAL)
+ "VTK::RenderingMatplotlibCxx-TestStringToPath$" # (NUMERICAL)
+ "VTK::RenderingOpenGL2Cxx-TestGlyph3DMapperPickability$" # (Failed)
+ )
+
+ RANDOM_FAIL_TESTS=(
+ "VTK::FiltersFlowPathsCxx-TestStreamSurface$"
+ "VTK::AcceleratorsVTKmFiltersCxx-TestVTKMAbort$"
+ "VTK::AcceleratorsVTKmFiltersPython-TestVTKMSlice$"
+ )
+
+ CMAKE_SKIP_TESTS+=(
+ "${REALLY_BAD_TESTS[@]}"
+ "${BAD_TESTS[@]}"
+ "${RANDOM_FAIL_TESTS[@]}"
+ )
+ fi
+
+ CMAKE_SKIP_TESTS+=(
+ # requires VTK_USE_MICROSOFT_MEDIA_FOUNDATION
+ "VTK::IOMovieCxx-Test" # Skipped
+ )
+
+ if use openmp; then
+ # TODO Times out under openmp
+ CMAKE_SKIP_TESTS+=(
+ "^VTK::CommonCoreCxx-TestSMP$"
+ )
+ fi
+
+ virtx cmake_src_test -j1
+}
+
+src_install() {
+ use web && webapp_src_preinst
+
+ # Stop web page images from being compressed
+ if use doc; then
+ HTML_DOCS=( "${WORKDIR}/html/." )
+ fi
+
+ cmake_src_install
+
+ use java && java-pkg_regjar "${ED}/usr/share/${PN}/${PN}.jar"
+
+ # install examples
+ if use examples; then
+ einfo "Installing examples"
+ mv -v {E,e}xamples || die
+ dodoc -r examples
+ docompress -x "/usr/share/doc/${PF}/examples"
+
+ einfo "Installing datafiles"
+ insinto "/usr/share/${PN}/data"
+ doins -r "${S}/.ExternalData"
+ fi
+
+ use python && python_optimize
+
+ use web && webapp_src_install
+}
+
+# webapp.eclass exports these but we want it optional #534036
+pkg_postinst() {
+ use web && webapp_pkg_postinst
+
+ if use examples; then
+ einfo "You can get more and updated examples at"
+ einfo "https://kitware.github.io/vtk-examples/site/"
+ fi
+}
+
+pkg_prerm() {
+ use web && webapp_pkg_prerm
+}