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 @@ Install dtrace Extension Pack. - Build without any graphic frontend. Build VBoxVolInfo that needs devicemapper from sys-fs/lvm2. - Apply patch needed for pax enabled kernels. Enable building of SDK. Controls installation of special USB udev rules. Build and install the VirtualBox webservice. Support for VDE networking via net-misc/vde. Enable 32-bit support on a 64-bit kernel. + + 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 + + + Install the MiniBrowser example application + Enable gamepad input support via dev-libs/libmanette + Combine source files to speed up build process + + + 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 +}