%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 Name: vtk Version: 9.5.2 Release: 5%{?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/9.5/VTK-%{version}.tar.gz # Patch required libharu version check (system libharu >= 2.3.0 is sufficient) Patch0: vtk-libharu.patch # Tk 9.0 compatibility fix Patch1: vtk-tk9.patch 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: hdf5-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: bundled(eigen3) Provides: bundled(fast_float) 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(viskores) 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.5 for applications requiring a newer VTK than the Fedora system package (9.2.6). %package devel Summary: Development files for %{name} Requires: %{name}%{?_isa} = %{version}-%{release} Requires: python3-%{name}%{?_isa} = %{version}-%{release} Requires: cmake Requires: fmt-devel%{?_isa} Requires: cmake(Qt6Core) Requires: cmake(Qt6Widgets) Requires: cmake(Qt6OpenGL) Requires: cmake(Qt6OpenGLWidgets) %description devel This provides the VTK header files and cmake config required to compile C++ programs that use VTK 9.5. %package -n python3-%{name} Summary: Python 3 bindings for %{name} Requires: %{name}%{?_isa} = %{version}-%{release} %description -n python3-%{name} Python 3 bindings for VTK 9.5. %package qt Summary: Qt6 widgets and rendering for %{name} Requires: %{name}%{?_isa} = %{version}-%{release} %description qt Qt6 rendering and widget libraries for VTK 9.5. %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 vtkfreetype vtkhdf5 vtkjpeg vtkjsoncpp vtklibharu \ vtklibproj vtklibxml2 vtklz4 vtklzma vtknetcdf vtknlohmannjson \ vtkogg vtkpegtl vtkpng vtkpugixml vtksqlite vtktheora vtktiff \ vtkutf8 vtkzlib do rm -rf ThirdParty/*/${x} done %build export CFLAGS="%{optflags} -D_UNICODE -DHAVE_UINTPTR_T" export CXXFLAGS="%{optflags} -D_UNICODE -DHAVE_UINTPTR_T" %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_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_IOOCCT:STRING=NO \ -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=OFF %cmake_build %install %cmake_install # 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.* # Qt libs are in the -qt subpackage %exclude %{_libdir}/libvtkGUISupportQt*.so.* %exclude %{_libdir}/libvtkRenderingQt*.so.* %exclude %{_libdir}/libvtkViewsQt*.so.* %files devel %{_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 * 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.5.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