%global _lto_cflags %{nil} # Use 'define' not 'global' for debug_package: EPEL 9 auto-injects the # debuginfo stanza during spec parsing and 'global' scope causes a conflict. %define debug_package %{nil} # VTK compilation is parallelism-friendly but link steps are memory-heavy. # Limit to avoid OOM on COPR workers (16 GB RAM, many large shared libs). %global _smp_mflags -j8 # upstream publishes tarballs under release/./ %global majmin 9.7 # VTK hardcodes VTK_CUSTOM_LIBRARY_SOVERSION "1" and has kept it there across all # of 9.x, so 9.5, 9.6 and 9.7 all install libvtk*.so.1. rpm's generated soname # dependency therefore cannot tell them apart in EITHER direction. The floor pin # from 2475c05 closes the downgrade case; vtk(abi) closes the upgrade case, which # is the one that bites during a transition: a consumer built against 9.6 # satisfies ">= 9.6.2" against 9.7, installs cleanly, and dies at load with # undefined symbols. Measured on the live repo 2026-09-09: 5 of 10 consumers # broken that way, 4 of them installing without complaint first. %global vtk_abi 9.7 Name: vtk Version: 9.7.0 Release: 7%{?dist} Summary: Visualization Toolkit - a high level 3D visualization library License: BSD-3-Clause URL: https://vtk.org/ Source0: https://www.vtk.org/files/release/%{majmin}/VTK-%{version}.tar.gz # Patch required libharu version check (system libharu >= 2.3.0 is sufficient) Patch0: vtk-libharu.patch # vtkX11Functions.h (new in 9.7) uses the X11 `Status` macro as a type; # OpenCASCADE #undefs it, breaking every OCCT TU built with HAVE_VTK. Patch1: vtk-x11-status-macro.patch # (former Patch1 vtk-tk9.patch dropped: VTK 9.7.x has native Tk 9 support; # the 9.5-era patch's 24 hunks all reject against the 9.6 tree.) BuildRequires: gcc-c++ BuildRequires: cmake BuildRequires: ninja-build BuildRequires: python3-devel BuildRequires: cmake(Qt6Core) BuildRequires: cmake(Qt6Widgets) BuildRequires: cmake(Qt6OpenGL) BuildRequires: cmake(Qt6OpenGLWidgets) BuildRequires: cmake(Qt6Quick) BuildRequires: cmake(Qt6UiPlugin) BuildRequires: boost-devel BuildRequires: cli11-devel BuildRequires: double-conversion-devel BuildRequires: expat-devel # fast_float and eigen3 are bundled: system versions use SameMajorVersion cmake # compatibility and Fedora ships fast_float 8.x / eigen3 5.x (on F44+) while # VTK bundles older major versions, causing find_package() failures. BuildRequires: fmt-devel >= 8.1.0 BuildRequires: freeglut-devel BuildRequires: freetype-devel BuildRequires: gdal-devel BuildRequires: hdf5-devel # Viskores ships standalone in our COPR (sibling vtk-viskores package). # Drop bundled Viskores and consume the external package — VTK's # AcceleratorsVTKmFilters module finds it via the viskores::cont/ # cont_testing/filter/worklet imported targets we ship. BuildRequires: viskores-devel BuildRequires: jsoncpp-devel BuildRequires: json-devel BuildRequires: libGL-devel BuildRequires: libharu-devel BuildRequires: libjpeg-devel BuildRequires: libogg-devel BuildRequires: libpng-devel BuildRequires: libtheora-devel BuildRequires: libtiff-devel BuildRequires: libxkbcommon-devel BuildRequires: libX11-devel BuildRequires: libXext-devel BuildRequires: libXt-devel BuildRequires: lz4-devel BuildRequires: netcdf-cxx-devel BuildRequires: openslide-devel BuildRequires: PEGTL-devel BuildRequires: proj-devel BuildRequires: pugixml-devel BuildRequires: sqlite-devel BuildRequires: tcl-devel BuildRequires: tk-devel BuildRequires: utf8cpp-devel BuildRequires: xz-devel BuildRequires: zlib-devel BuildRequires: libxml2-devel BuildRequires: chrpath # Bundled libraries (not yet separately packaged or carrying local modifications) Provides: vtk(abi) = %{vtk_abi} Provides: bundled(eigen3) Provides: bundled(fast_float) Provides: bundled(hdf5) = 1.14.6 Provides: bundled(freetype) Provides: bundled(kwsys) Provides: bundled(diy2) Provides: bundled(exodusII) = 2.0.0 Provides: bundled(exprtk) Provides: bundled(gl2ps) = 1.4.0 Provides: bundled(h5part) Provides: bundled(ioss) Provides: bundled(kissfft) Provides: bundled(loguru) Provides: bundled(metaio) Provides: bundled(scn) Provides: bundled(token) Provides: bundled(verdict) Provides: bundled(xdmf2) Provides: bundled(xdmf3) %description VTK is an open-source software system for image processing, 3D graphics, volume rendering and visualization. VTK includes many advanced algorithms (e.g., surface reconstruction, implicit modeling, decimation) and rendering techniques (e.g., hardware-accelerated volume rendering, LOD control). This COPR package provides VTK 9.7 for applications requiring a newer VTK than the Fedora system package. %package devel Summary: Development files for %{name} Requires: %{name}%{?_isa} = %{version}-%{release} Requires: %{name}-qt%{?_isa} = %{version}-%{release} Requires: python3-%{name}%{?_isa} = %{version}-%{release} Requires: cmake # Qt6 cmake configs referenced by VTK module targets Requires: cmake(Qt6Core) Requires: cmake(Qt6Widgets) Requires: cmake(Qt6OpenGL) Requires: cmake(Qt6OpenGLWidgets) Requires: qt6-qtdeclarative-devel # Transitive dependencies: VTK-vtk-module-find-packages.cmake runs # find_package() for every unbundled module when a downstream consumer # calls find_package(VTK). All -devel packages below must be installed # or the downstream configure will fail. Requires: boost-devel Requires: cgnslib-devel Requires: cli11-devel Requires: viskores-devel Requires: double-conversion-devel%{?_isa} Requires: expat-devel%{?_isa} Requires: fmt-devel%{?_isa} Requires: freetype-devel%{?_isa} Requires: gdal-devel Requires: glew-devel%{?_isa} Requires: hdf5-devel%{?_isa} Requires: json-devel Requires: jsoncpp-devel%{?_isa} Requires: libarchive-devel%{?_isa} Requires: libGL-devel%{?_isa} Requires: libharu-devel%{?_isa} Requires: libjpeg-devel%{?_isa} Requires: libogg-devel%{?_isa} Requires: libpng-devel%{?_isa} # libpq-devel conflicts with postgresql-private-devel on F43; use Recommends # to avoid unresolvable dep chains. VTK SQL module is optional for most consumers. Recommends: libpq-devel%{?_isa} Requires: libtheora-devel%{?_isa} Requires: libtiff-devel%{?_isa} Requires: libX11-devel%{?_isa} Requires: libXcursor-devel%{?_isa} Requires: libXext-devel%{?_isa} Requires: libxml2-devel%{?_isa} Requires: libXt-devel%{?_isa} Requires: lz4-devel%{?_isa} Recommends: mariadb-connector-c-devel%{?_isa} Requires: netcdf-cxx-devel%{?_isa} Requires: nlohmann-json-devel Requires: openslide-devel%{?_isa} Requires: PEGTL-devel Requires: proj-devel%{?_isa} Requires: pugixml-devel%{?_isa} Requires: sqlite-devel%{?_isa} Requires: utf8cpp-devel Requires: xz-devel%{?_isa} Requires: zlib-devel%{?_isa} Requires: python3-devel %description devel This provides the VTK header files and cmake config required to compile C++ programs that use VTK 9.7. %package -n python3-%{name} Summary: Python 3 bindings for %{name} Requires: %{name}%{?_isa} = %{version}-%{release} # VTK's build installs vtkmodules/ with no .dist-info, so nothing generates the # PyPI-style virtual provides that Fedora's own python3-vtk carries. Without # them, ANY package with a pyproject-style dependency on vtk -- pyvista, and # through it pyacvd, trame-vtk, ... -- cannot be satisfied by this build, so dnf # reaches for Fedora's python3-vtk instead and that drags in vtk 9.5.2, which # conflicts with 9.6.2 on every SONAME. The symptom is a wall of # "cannot install both vtk-9.5.2 and vtk-9.6.2" with no mention of Python. # Declare them explicitly. Provides: python3dist(vtk) = %{version} Provides: python%{python3_version}dist(vtk) = %{version} %description -n python3-%{name} Python 3 bindings for VTK 9.7. %package qt Summary: Qt6 widgets and rendering for %{name} Requires: %{name}%{?_isa} = %{version}-%{release} %description qt Qt6 rendering and widget libraries for VTK 9.7. %prep %autosetup -p1 -n VTK-%{version} # Remove bundled third-party sources replaced by system packages. # fast_float and eigen3 are intentionally NOT removed — system versions have # incompatible major versions vs what VTK expects (SameMajorVersion compat). for x in vtkcli11 vtkdoubleconversion vtkexpat \ vtkfmt vtkjpeg vtkjsoncpp vtklibharu \ vtklibproj vtklibxml2 vtklz4 vtklzma vtknetcdf vtknlohmannjson \ vtkogg vtkpegtl vtkpng vtkpugixml vtksqlite vtktheora vtktiff \ vtkutf8 vtkviskores vtkzlib do rm -rf ThirdParty/*/${x} done # vtkhdf5 + vtkfreetype kept bundled: # - vtkhdf5: Fedora rawhide ships HDF5 2.x which dropped the HDF5_IS_PARALLEL # cmake variable VTK's external-HDF5 path requires. # - vtkfreetype: Fedora rawhide's freetype cmake config can no longer be # found by VTK 9.7 (`Could NOT find freetype (missing: freetype_DIR)`). %build export CFLAGS="%{optflags} -D_UNICODE -DHAVE_UINTPTR_T" export CXXFLAGS="%{optflags} -D_UNICODE -DHAVE_UINTPTR_T" %if 0%{?fedora} >= 45 # GDAL 3.13 (rawhide) tightened const-correctness: CSLFetchNameValue() and # friends now return CSLConstList (const char* const*), but VTK 9.7.2's # IO/GDAL/vtkGDALRasterReader.cxx still assigns them to char**. -fpermissive # downgrades that invalid-conversion to a warning (the reader does not mutate # the list). Scoped to f45+ so F44 (older GDAL) keeps strict checking. export CXXFLAGS="$CXXFLAGS -fpermissive" %endif %cmake -GNinja \ -DCMAKE_INSTALL_LIBDIR:PATH=%{_lib} \ -DVTK_VERSIONED_INSTALL:BOOL=OFF \ -DVTK_CUSTOM_LIBRARY_SUFFIX="" \ -DBUILD_SHARED_LIBS:BOOL=ON \ -DVTK_BUILD_TESTING:BOOL=OFF \ -DVTK_BUILD_DOCUMENTATION:BOOL=OFF \ -DVTK_BUILD_EXAMPLES:BOOL=OFF \ -DVTK_WRAP_PYTHON:BOOL=ON \ -DVTK_WRAP_JAVA:BOOL=OFF \ -DVTK_USE_TK:BOOL=ON \ -DVTK_GROUP_ENABLE_Qt:STRING=YES \ -DVTK_GROUP_ENABLE_Rendering:STRING=YES \ -DVTK_GROUP_ENABLE_Imaging:STRING=YES \ -DVTK_GROUP_ENABLE_Views:STRING=YES \ -DVTK_GROUP_ENABLE_StandAlone:STRING=YES \ -DVTK_PYTHON_OPTIONAL_LINK:BOOL=OFF \ -DVTK_ENABLE_OSPRAY:BOOL=OFF \ -DVTK_MODULE_ENABLE_VTK_RenderingExternal:STRING=YES \ -DVTK_MODULE_ENABLE_VTK_RenderingAnari:STRING=NO \ -DVTK_MODULE_USE_EXTERNAL_VTK_hdf5:BOOL=OFF \ -DVTK_MODULE_USE_EXTERNAL_vtkhdf5:BOOL=OFF \ -DVTK_MODULE_USE_EXTERNAL_VTK_freetype:BOOL=OFF \ -DVTK_MODULE_USE_EXTERNAL_vtkfreetype:BOOL=OFF \ -DVTK_MODULE_ENABLE_VTK_IOPIO:STRING=WANT \ -DVTK_MODULE_ENABLE_VTK_CommonCache:STRING=WANT \ -DHDF5_IS_PARALLEL:BOOL=FALSE \ -DVTK_MODULE_ENABLE_VTK_fides:STRING=NO \ -DVTK_MODULE_ENABLE_VTK_IOADIOS2:STRING=NO \ -DVTK_MODULE_ENABLE_VTK_IOOpenVDB:STRING=NO \ -DVTK_MODULE_ENABLE_VTK_FiltersOpenTURNS:STRING=NO \ -DVTK_MODULE_ENABLE_VTK_GeovisGDAL:STRING=NO \ -DVTK_MODULE_ENABLE_VTK_IOGDAL:STRING=YES \ -DVTK_MODULE_ENABLE_VTK_AcceleratorsVTKmFilters:STRING=YES \ -DVTK_MODULE_ENABLE_VTK_IOOCCT:STRING=NO \ -DVTK_MODULE_ENABLE_VTK_RenderingMatplotlib:STRING=YES \ -DVTK_MODULE_ENABLE_VTK_RenderingVolumeAMR:STRING=YES \ -DVTK_MODULE_ENABLE_VTK_RenderingParallel:STRING=YES \ -DVTK_MODULE_ENABLE_VTK_IOXdmf2:STRING=YES \ -DVTK_MODULE_ENABLE_VTK_IOVPIC:STRING=YES \ -DVTK_MODULE_ENABLE_VTK_IOAvmesh:STRING=YES \ -DVTK_MODULE_ENABLE_VTK_IOH5part:STRING=YES \ -DVTK_MODULE_ENABLE_VTK_IOH5Rage:STRING=YES \ -DVTK_MODULE_ENABLE_VTK_IOOMF:STRING=YES \ -DVTK_MODULE_ENABLE_VTK_IOParallelExodus:STRING=YES \ -DVTK_MODULE_ENABLE_VTK_IOParallelLSDyna:STRING=YES \ -DVTK_MODULE_ENABLE_VTK_IOPIO:STRING=YES \ -DVTK_MODULE_ENABLE_VTK_IOTRUCHAS:STRING=YES \ `# Required by ParaView 6.1.1 (CMakeLists.txt:568 hard-fails without them).` \ -DVTK_MODULE_ENABLE_VTK_WebCore:STRING=YES \ -DVTK_MODULE_ENABLE_VTK_WebGLExporter:STRING=YES \ -DVTK_MODULE_ENABLE_VTK_WebPython:STRING=YES \ -DVTK_MODULE_ENABLE_VTK_cli11:STRING=YES \ -DVTK_MODULE_ENABLE_VTK_FiltersParallelDIY2:STRING=YES \ -DVTK_MODULE_ENABLE_VTK_FiltersParallelVerdict:STRING=YES \ -DVTK_MODULE_ENABLE_VTK_FiltersParallelStatistics:STRING=YES \ -DVTK_MODULE_ENABLE_VTK_ImagingOpenGL2:STRING=YES \ -DVTK_MODULE_USE_EXTERNAL_VTK_cli11:BOOL=ON \ -DVTK_MODULE_USE_EXTERNAL_VTK_doubleconversion:BOOL=ON \ -DVTK_MODULE_USE_EXTERNAL_VTK_eigen:BOOL=OFF \ -DVTK_MODULE_USE_EXTERNAL_VTK_expat:BOOL=ON \ -DVTK_MODULE_USE_EXTERNAL_VTK_fast_float:BOOL=OFF \ -DVTK_MODULE_USE_EXTERNAL_VTK_fmt:BOOL=ON \ -DVTK_MODULE_USE_EXTERNAL_VTK_freetype:BOOL=ON \ -DVTK_MODULE_USE_EXTERNAL_VTK_hdf5:BOOL=ON \ -DVTK_MODULE_USE_EXTERNAL_VTK_jpeg:BOOL=ON \ -DVTK_MODULE_USE_EXTERNAL_VTK_jsoncpp:BOOL=ON \ -DVTK_MODULE_USE_EXTERNAL_VTK_libharu:BOOL=ON \ -DVTK_MODULE_USE_EXTERNAL_VTK_libproj:BOOL=ON \ -DVTK_MODULE_USE_EXTERNAL_VTK_libxml2:BOOL=ON \ -DVTK_MODULE_USE_EXTERNAL_VTK_lz4:BOOL=ON \ -DVTK_MODULE_USE_EXTERNAL_VTK_lzma:BOOL=ON \ -DVTK_MODULE_USE_EXTERNAL_VTK_netcdf:BOOL=ON \ -DVTK_MODULE_USE_EXTERNAL_VTK_nlohmannjson:BOOL=ON \ -DVTK_MODULE_USE_EXTERNAL_VTK_ogg:BOOL=ON \ -DVTK_MODULE_USE_EXTERNAL_VTK_pegtl:BOOL=ON \ -DVTK_MODULE_USE_EXTERNAL_VTK_png:BOOL=ON \ -DVTK_MODULE_USE_EXTERNAL_VTK_pugixml:BOOL=ON \ -DVTK_MODULE_USE_EXTERNAL_VTK_sqlite:BOOL=ON \ -DVTK_MODULE_USE_EXTERNAL_VTK_theora:BOOL=ON \ -DVTK_MODULE_USE_EXTERNAL_VTK_tiff:BOOL=ON \ -DVTK_MODULE_USE_EXTERNAL_VTK_utf8:BOOL=ON \ -DVTK_MODULE_USE_EXTERNAL_VTK_zlib:BOOL=ON \ -DVTK_MODULE_USE_EXTERNAL_VTK_exprtk:BOOL=OFF \ -DVTK_MODULE_USE_EXTERNAL_VTK_gl2ps:BOOL=OFF \ -DVTK_MODULE_USE_EXTERNAL_VTK_ioss:BOOL=OFF \ -DVTK_MODULE_USE_EXTERNAL_VTK_scn:BOOL=OFF \ -DVTK_MODULE_USE_EXTERNAL_VTK_token:BOOL=OFF \ -DVTK_MODULE_USE_EXTERNAL_VTK_verdict:BOOL=OFF \ -DVTK_MODULE_USE_EXTERNAL_VTK_vtkviskores:BOOL=ON %cmake_build %install %cmake_install # Ship the ABI macro so a consumer spec can write # Requires: vtk(abi) = %%{vtk_abi} # and pick up the ABI of the VTK it is actually building against, with no spec # edit needed at the next bump. mkdir -p %{buildroot}%{_rpmmacrodir} cat > %{buildroot}%{_rpmmacrodir}/macros.vtk <<'EOF' %%vtk_abi %{vtk_abi} EOF # Remove the FindHDF5 cmake patch — this fix is already in cmake itself rm -f %{buildroot}%{_libdir}/cmake/vtk/patches/99/FindHDF5.cmake # Strip RPATHs from installed binaries find %{buildroot}%{_bindir} -type f -exec chrpath --delete {} \; 2>/dev/null || true # Separate Qt libraries into their own file lists for subpackage ls %{buildroot}%{_libdir}/libvtkGUISupportQt*.so.* \ %{buildroot}%{_libdir}/libvtkRenderingQt*.so.* \ %{buildroot}%{_libdir}/libvtkViewsQt*.so.* \ 2>/dev/null | sed "s|%{buildroot}||" > /tmp/vtk-qt-libs.txt || true %ldconfig_scriptlets %files %{_datadir}/licenses/VTK/ %doc README.md %{_libdir}/libvtk*.so.* # Viskores libs now ship from the sibling viskores package — drop the # libviskores*.so.* glob that was previously here. # Qt libs are in the -qt subpackage %exclude %{_libdir}/libvtkGUISupportQt*.so.* %exclude %{_libdir}/libvtkRenderingQt*.so.* %exclude %{_libdir}/libvtkViewsQt*.so.* %files devel %{_rpmmacrodir}/macros.vtk %{_includedir}/vtk/ %{_libdir}/cmake/vtk/ %{_libdir}/libvtk*.so %{_bindir}/vtk* %files -n python3-%{name} %{python3_sitearch}/vtkmodules/ %{python3_sitearch}/vtk.py %{python3_sitearch}/__pycache__/vtk.cpython-*.pyc %{_libdir}/vtk/ %files qt %{_libdir}/libvtkGUISupportQt*.so.* %{_libdir}/libvtkRenderingQt*.so.* %{_libdir}/libvtkViewsQt*.so.* %changelog * Sun Sep 27 2026 Morgan Hough - 9.7.0-7 - Rebuild for viskores 1.2.0 on f45-x86_64. No source change: viskores renamed its libraries between 1.1 and 1.2 -- libviskores_cont-1.1.so.1.1 became libviskores_cont.so.1.2, dropping the version from the base name as well as bumping it -- so 9.7.0-6, built when f45-x86_64 still carried viskores 1.1.1, requires 20 sonames that no longer exist there and is UNINSTALLABLE. - Scope is exactly one chroot. f44 (both arches) and f45-aarch64 already require libviskores_cont.so.1.2 and are fine; f45-x86_64 is the only one that took the viskores bump without the dependent rebuild. Confirmed by querying the superseded soname rather than the new one, which is the only way to see this: every package still asking for 1.1 shows up, while a query for 1.2 on f45-x86_64 returns nothing at all. - This blocks far more than it appears to. vtk itself being uninstallable on f45-x86_64 takes every VTK consumer on that chroot with it, which is why the Slicer stack there builds green and cannot be installed. * Thu Sep 17 2026 Morgan Hough - 9.7.0-6 - Rebuild so aarch64 links the same Viskores as x86_64. The two arches of 9.7.0-5 were built against DIFFERENT Viskores ABIs under one NVR: x86_64 requires libviskores_cont.so.1.2, aarch64 requires libviskores_cont-1.1.so.1.1. Viskores 1.2 changed the soname scheme, and it landed on aarch64 after the VTK 9.7 wave without an aarch64 VTK rebuild. - The symptom is an unresolvable aarch64 buildroot, because "Requires: viskores-devel" carries no version: it resolves to the newest devel (1.2.0-1) while the binary's soname deps pin the 1.1 runtime, and the two Viskores cannot be installed together. Reported by the t2 session, which hit it as "cannot install both viskores-1.2.0-1 and viskores-1.1.0-3" while rebuilding shapeworks on aarch64. Every aarch64 build pulling vtk-devel is exposed, not just that one. - The unversioned Requires is the underlying defect and is NOT fixed here: it will recur at Viskores 1.3 unless viskores-devel ships a version macro the way vtk-devel ships macros.vtk and ctk-devel now ships macros.ctk. Filed as follow-up rather than done here, because it needs a viskores change first. - aarch64 consumers that link Viskores directly (3dslicer, slicer-preview, tomviz) need rebuilding after this, or they stay pinned to the 1.1 sonames that will no longer be installable alongside the new vtk. * Sat Sep 12 2026 Morgan Hough - 9.7.0-5 - Add a vtk(abi) guard, at legion's request, on top of the -4 patched rebuild. vtk now Provides vtk(abi) = 9.7 and vtk-devel ships %%{_rpmmacrodir}/macros.vtk defining %%vtk_abi, so a consumer carrying "Requires: vtk(abi) = %%{vtk_abi}" re-pins itself on every rebuild with no spec edit. - Why this is needed alongside 2475c05: that pin is a floor. It closes the downgrade case it was designed for (Fedora's older VTK, the vtkCartesianGrid ImportError), but ">= 9.6.2" is satisfied by 9.7.0, so a 9.6-built consumer installs against 9.7 and fails at load. An ldd -r sweep of 10 consumers on the live repo on 2026-09-09 found f3d, vmtk, pcl-tools and vtkAddon broken exactly that way -- all four INSTALL cleanly first -- plus tomviz failing to install. The consumer sweep replaces the floor rather than adding to it, so each spec carries one pin. - Verified in mock before submission: vtk Provides vtk(abi) = 9.7, vtk-devel ships the macro file, and it expands to 9.7 for a consuming build. * Sat Sep 12 2026 Morgan Hough - 9.7.0-4 - Rebuild with vtk-x11-status-macro.patch (build 10980224, from legion). The 9.7.0-2 serving in the repo was an uploaded SRPM built without it, so the X11 Status typedef was still live in the installed vtkX11Functions.h and every OpenCASCADE TU with HAVE_VTK failed. Release-bumped rather than rebuilt at the same NVR, which COPR would not have superseded. -3 is deliberately skipped: it is held by in-progress vtk-testing work that needs the 1.07 GB VTKData tarball as a second Source. * Sun Aug 23 2026 Morgan Hough - 9.7.0-2 - Enable the CommonCache module. ParaView 6.2 refuses to configure against a VTK without it: "Please reconfigure VTK with the following parameters to add required modules: -DVTK_MODULE_ENABLE_VTK_CommonCache=WANT". - Add vtk-x11-status-macro.patch. vtkX11Functions.h, new in 9.7, declares `typedef Status (*vtkXInitThreadsType)(void);` -- but Status is a macro (Xlib.h: #define Status int), and OpenCASCADE #undefs it across dozens of its headers, so every OCCT translation unit built with HAVE_VTK failed to parse the VTK header. Spelled as int, which is what the macro expands to. - Purely additive for existing consumers: no soname or existing symbol changes, so packages already built against 9.7.0-1 do not need rebuilding. * Sun Aug 23 2026 Morgan Hough - 9.7.0-1 - Update to VTK 9.7.0 (upstream v9.7.0, after rc0-rc4). - Source0 now derives its directory from the new %%global majmin, so the release/./ path no longer has to be hand-edited on a bump. - ABI NOTE: this package builds with VTK_VERSIONED_INSTALL=OFF and an empty VTK_CUSTOM_LIBRARY_SUFFIX, so its libraries are libvtk*.so.1 with no version in the name. 9.7.0 therefore provides the SAME sonames as 9.6.2 and cannot be installed alongside it; every consumer must be rebuilt. Staged in the mhough/vtk97 COPR off the vtk-9.7 branch rather than landing in mhough/neurofedora -- see docs/COORDINATION.md. * Wed Jul 29 2026 Morgan Hough - 9.6.2-14 - python3-vtk: declare the PyPI-style virtual provides. VTK installs vtkmodules/ with no .dist-info, so nothing generated python3dist(vtk) / python3.14dist(vtk) -- which Fedora's own python3-vtk does carry. Any package with a pyproject-style dependency on vtk (pyvista, and through it pyacvd and the trame-vtk stack) therefore could not be satisfied by this build, so dnf reached for Fedora's python3-vtk and dragged in vtk 9.5.2, colliding with 9.6.2 on every SONAME. The user-visible symptom was a wall of 'cannot install both vtk-9.5.2 and vtk-9.6.2' that never mentioned Python. Declare both provides explicitly. * Fri Jun 26 2026 Morgan Hough - 9.6.2-13 - Fix rawhide FTBFS against GDAL 3.13: add -fpermissive on f45+ so IO/GDAL/vtkGDALRasterReader.cxx tolerates GDAL's new CSLConstList (const char* const*) return types. Also picks up the rawhide Python 3.15 wrappings. F44 unchanged. * Wed Jun 10 2026 Morgan Hough - 9.6.2-12 - Rebuild for rawhide's Python 3.15 transition. The -11 python3-vtk in copr_base still required python(abi)=3.14 (an older same-NVR build shadowed the rebuilt one in the aggregate repo metadata), blocking paraview's rawhide builddep. Bump the release so the fresh python3-vtk (python 3.15) strictly supersedes. * Mon Jun 1 2026 Morgan Hough - 9.6.2-11 - Unbundle Viskores. Consume the new sibling COPR package viskores-1.1.0-2 instead of building bundled vtkviskores. Drops Provides: bundled(viskores), drops libviskores* from %%files (now owned by viskores package), flips VTK_MODULE_USE_EXTERNAL_VTK_vtkviskores:BOOL=ON, removes the vtkviskores ThirdParty subtree in %%prep, adds BR: viskores-devel. Tracks [[vtk-viskores-split-backlog]]. - Add Requires: cli11-devel + viskores-devel to vtk-devel. Closes the recurring transitive-BR fires caused by VTK -7+ enabling the cli11 module while vtk-devel didn't yet Require cli11-devel. Affected itksnap -0.11, ANTs -12, ANTs3 -3, ITK6 b02-8. Tracks [[vtk-devel-transitive-requires]]. * Sat May 30 2026 Morgan Hough - 9.6.2-10 - Stop stripping libviskores_cont_testing-*. ViskoresTargets.cmake (installed by VTK's cmake config) exports a viskores::cont_testing imported target referencing libviskores_cont_testing-.so.1.1.0, so removing the file breaks every downstream find_package(VTK) at imported-target validation. Build 10527588 caught this: paraview config failed in 90s with "imported target ... references the file ... but this file does not exist". The libviskores*.so.* glob already packages the testing libs into main. * Sat May 30 2026 Morgan Hough - 9.6.2-9 - Package the bundled Viskores libraries surfaced by -8's compile run: /usr/lib64/libviskores_-.so.* go in main, .so + viskores.pc in -devel. Strip libviskores_cont_testing-* (Viskores test suite only). Build 10527106 hit "Installed (but unpackaged) file(s) found" with ~70 viskores libs after the AcceleratorsVTKmFilters module landed. * Sat May 30 2026 Morgan Hough - 9.6.2-8 - Enable VTK_MODULE_ENABLE_VTK_IOGDAL + VTK_MODULE_ENABLE_VTK_AcceleratorsVTKmFilters + add gdal-devel BR. ParaView 6.1.1's plugin scan walks Plugins/*/paraview.plugin files unconditionally regardless of plugin CONDITION, so VTKmFilters' REQUIRES_MODULES VTK::AcceleratorsVTKmFilters lands in the required list even with PARAVIEW_USE_VISKORES=OFF. Same for VTK::IOGDAL via Remoting/Application. The paraview-side disables in -1 do not actually suppress the requirements, so satisfy them at the VTK layer instead. Viskores remains bundled. * Sat May 30 2026 Morgan Hough - 9.6.2-7 - Add VTK_MODULE_ENABLE_VTK_WebPython + VTK_MODULE_ENABLE_VTK_cli11. ParaView 6.1.1 surfaced these as a second set of required modules in build 10526865 (after -6 satisfied WebCore + WebGLExporter): * VTK::cli11 is a DEPENDS of paraview's VTKExtensions/Core * VTK::WebPython is required when PARAVIEW_ENABLE_WEB && PARAVIEW_USE_PYTHON (both on for neurofedora). IOGDAL and AcceleratorsVTKmFilters are handled on the paraview side (disable GDAL + Viskores plugin) rather than adding gdal-devel + vtk-m to VTK's BRs. * Sat May 30 2026 Morgan Hough - 9.6.2-6 - Enable VTK_MODULE_ENABLE_VTK_WebCore + VTK_MODULE_ENABLE_VTK_WebGLExporter. ParaView 6.1.1 hard-fails at CMakeLists.txt:568 if these aren't built ("Please reconfigure VTK with the following parameters..."). Surfaced by paraview-6.1.1-1 build 10524649. AcceleratorsVTKmFilters (also required) is handled by disabling the VTKmFilters plugin in paraview. * Sun May 24 2026 Morgan Hough - 9.6.2-5 - Pre-define HDF5_IS_PARALLEL=FALSE so VTK's `USE_VARIABLES` check passes whether the EXTERNAL or INTERNAL hdf5 path is taken — the dual-form _USE_EXTERNAL_* flags in -4 didn't actually flip the path on rawhide; this is the belt-and-suspenders satisfying-the-check. * Sat May 23 2026 Morgan Hough - 9.6.2-4 - Set BOTH cmake cache-var forms for the bundling flag (CamelCase user-facing + lowercase library-form). -3 set only the lowercase; rawhide still used external HDF5 → HDF5_IS_PARALLEL missing → FTBFS. - Add -DVTK_MODULE_ENABLE_VTK_IOPIO:STRING=WANT so ParaView (which requires the VTK::IOPIO module) builds against this VTK. * Sat May 23 2026 Morgan Hough - 9.6.2-3 - VTK module name fix: cache var is VTK_MODULE_USE_EXTERNAL_vtkhdf5 (lowercase `vtkhdf5`), not `VTK_hdf5`. -2 spec set the wrong name → flag silently ignored → external HDF5 still tried → HDF5_IS_PARALLEL missing → FTBFS - Also bundle vtkfreetype: rawhide's freetype cmake config can't be found by VTK 9.7 (`Could NOT find freetype (missing: freetype_DIR)`) - Provides: bundled(hdf5) 1.14.6, bundled(freetype) * Sat May 23 2026 Morgan Hough - 9.6.2-2 - Drop vtk-tk9.patch (was for 9.5; VTK 9.7 has native Tk 9 support — all 24 hunks rejected against the 9.6 tree, failing %prep — build 10505998) * Sat May 23 2026 Morgan Hough - 9.6.2-1 - Update to VTK 9.7.2 - Bundle vtkhdf5 (don't unbundle): system HDF5 2.x on rawhide/F45 dropped the HDF5_IS_PARALLEL cmake variable that VTK's external-HDF5 module requires (FTBFS on rawhide build 10504829) - Add -DVTK_MODULE_USE_EXTERNAL_VTK_hdf5:BOOL=OFF * Tue Mar 24 2026 Morgan Hough - 9.5.2-11 - Enable VTK::ImagingOpenGL2 module (provides libvtkImagingOpenGL2.so.1): module is not in the Imaging group so VTK_GROUP_ENABLE_Imaging=YES did not enable it; required by FreeSurfer 8.2.0 RPM * Thu Mar 19 2026 Morgan Hough - 9.5.2-10 - vtk-devel: add Requires qt6-qtdeclarative-devel (VTK cmake config runs find_package(Qt6Qml) which requires Qt6Declarative headers) * Thu Mar 19 2026 Morgan Hough - 9.5.2-9 - Add missing vtk-devel Requires: zlib-devel, python3-devel (VTK cmake config calls find_package(ZLIB) and find_package(Python3)) * Tue Mar 17 2026 Morgan Hough - 9.5.2-8 - Downgrade libpq-devel and mariadb-connector-c-devel from Requires to Recommends: libpq-devel conflicts with postgresql-private-devel on F43, causing unresolvable dep chains for all vtk-devel consumers * Tue Mar 17 2026 Morgan Hough - 9.5.2-7 - Enable 15 additional VTK modules required by ParaView with external VTK: RenderingMatplotlib, RenderingVolumeAMR, RenderingParallel, IOXdmf2, IOVPIC, IOAvmesh, IOH5part, IOH5Rage, IOOMF, IOParallelExodus, IOParallelLSDyna, IOPIO, IOTRUCHAS, FiltersParallelDIY2, FiltersParallelVerdict, FiltersParallelStatistics * Tue Mar 17 2026 Morgan Hough - 9.5.2-6 - vtk-devel: add ~35 transitive Requires for cmake find_package consumers VTK-vtk-module-find-packages.cmake runs find_package() for all unbundled module dependencies; downstream packages need these -devel packages installed - vtk-devel: add Requires on vtk-qt subpackage (Qt .so symlinks need it) * Fri Feb 27 2026 Morgan Hough - 9.5.2-5 - Explicitly enable VTK_MODULE_ENABLE_VTK_RenderingExternal=YES: module is not in the Rendering group so VTK_GROUP_ENABLE_Rendering=YES did not enable it; required by ITK-SNAP 4.x standalone.cmake FIND_PACKAGE(VTK COMPONENTS ...) * Thu Feb 26 2026 Morgan Hough - 9.5.2-4 - Add debug_package suppression via define scope to fix EPEL 9 SRPM rebuild failure caused by auto-injected debuginfo stanza * Thu Feb 26 2026 Morgan Hough - 9.5.2-3 - Fix unpackaged files: add licenses/VTK/ to base, add vtk.py and libdir/vtk/hierarchy/ to python3-vtk subpackage * Thu Feb 26 2026 Morgan Hough - 9.5.2-2 - Bundle fast_float and eigen3 instead of using system versions; Fedora ships fast_float 8.x and eigen3 5.x (F44+) but VTK expects older major versions, causing SameMajorVersion cmake compat failures identical to ITK/Eigen3 issue * Wed Feb 25 2026 Morgan Hough - 9.5.2-1 - Initial COPR package of VTK 9.7.2 for Fedora 43/44 - Simplified spec: no MPI, no Java, no testing/examples/doc packages - Targets neuroimaging apps requiring VTK >= 9.3 (ITK-SNAP, medInria) - Based on Fedora rawhide vtk.spec with GDAL, OpenCASCADE, Anari disabled - Fetched patches from Fedora: vtk-libharu.patch, vtk-tk9.patch