%define major 1 %define libname %mklibname %{name} %{major} %define devname %mklibname %{name} -d %define libqtname %mklibname qt%{name} %{major} %define staticdevelname %mklibname %{name} -s -d %bcond_with static %define short_version %(echo %{version} | cut -d. -f1,2) %define vtknamever %{name}-%{short_version} %define vtklibdir %{_libdir}/%{vtknamever} %define vtktcldir %{tcl_sitearch}/%{vtknamever} # as paraview, let's avoid requiring too much RAM with full cpu counts %ifarch %{arm} aarch64 %define _smp_ncpus_max $(expr $(nproc) / 4) %else %define _smp_ncpus_max $(expr $(nproc) / 2) %endif Name: vtk Version: 9.1.0 Release: %mkrel 7 Summary: Toolkit for 3D computer graphics, image processing, and visualization License: BSD Group: Graphics/3D URL: http://www.vtk.org/ Source0: http://www.vtk.org/files/release/%{short_version}/VTK-%{version}.tar.gz Source1: http://www.vtk.org/files/release/%{short_version}/VTKData-%{version}.tar.gz Patch1: vtk-linking.patch # Duplicate define conflict with Xutil, see: # https://gitlab.kitware.com/vtk/vtk/-/issues/18048 Patch3: vtk-AllValues.patch #https://gitlab.kitware.com/vtk/vtk/-/issues/18033 Patch5: vtk-freetype-2.10.3-provide-FT_CALLBACK_DEF.patch # Build with ffmpeg 5.0 # https://gitlab.kitware.com/vtk/vtk/-/commit/948b6f491294f1a9aa48ba265adae28291de95a0 Patch6: vtk-9.1.0-ffmpeg.patch BuildRequires: cmake >= 1.8 BuildRequires: ninja BuildRequires: hdf5 BuildRequires: perl BuildRequires: doxygen BuildRequires: graphviz BuildRequires: cvs BuildRequires: gnuplot BuildRequires: wget BuildRequires: cgns-devel BuildRequires: utf8cpp-devel BuildRequires: pkgconfig(expat) >= 2.0.1 #BuildRequires: pkgconfig(fmt) >= 8.1.0 BuildRequires: pkgconfig(libjpeg) BuildRequires: pkgconfig(libpng) BuildRequires: pkgconfig(libtiff-4) BuildRequires: pkgconfig(zlib) BuildRequires: pkgconfig(freetype2) BuildRequires: pkgconfig(gl) BuildRequires: pkgconfig(glew) BuildRequires: gl2ps-devel #(eatdirt) try to compile with projects.h, which is more than osoleted #BuildRequires: pkgconfig(proj) BuildRequires: pkgconfig(jsoncpp) BuildRequires: pkgconfig(x11) BuildRequires: pkgconfig(xcursor) BuildRequires: pkgconfig(xt) BuildRequires: pkgconfig(theora) BuildRequires: pkgconfig(Qt5Concurrent) BuildRequires: pkgconfig(Qt5Core) BuildRequires: pkgconfig(Qt5Gui) BuildRequires: pkgconfig(Qt5Network) BuildRequires: pkgconfig(Qt5Sql) BuildRequires: pkgconfig(Qt5X11Extras) BuildRequires: pkgconfig(Qt5Designer) BuildRequires: pkgconfig(Qt5WebKit) BuildRequires: pkgconfig(Qt5Widgets) BuildRequires: pkgconfig(Qt5OpenGL) BuildRequires: python3-qt5-devel BuildRequires: pkgconfig(tk) >= 8.5 BuildRequires: pkgconfig(tcl) >= 8.5 BuildRequires: pkgconfig(libxml-2.0) BuildRequires: boost-devel BuildRequires: pkgconfig(python3) #BuildRequires: R-base BuildRequires: python3-sip-devel BuildRequires: hdf5-devel BuildRequires: pkgconfig(blas) BuildRequires: pkgconfig(lapack) BuildRequires: pkgconfig(ompi) #not supporting the new API yet #netcdf-cxx4-devel BuildRequires: netcdf-cxx-devel BuildRequires: pkgconfig(netcdf-fortran) BuildRequires: pkgconfig(netcdf) BuildRequires: python3-mpi4py-devel BuildRequires: pkgconfig(liblz4) BuildRequires: pkgconfig(eigen3) BuildRequires: double-conversion-devel BuildRequires: pkgconfig(pugixml) BuildRequires: pkgconfig(proj) BuildRequires: java-devel #(eatdirt) vtk is ahead of official libharu releases, they use their #own modifications which are currently in push request #https://github.com/libharu/libharu/pull/157/files #BuildRequires: libharu-devel %description The Visualization ToolKit (VTK) is an object oriented software system for 3D computer graphics, image processing, and visualization. VTK includes a textbook, a C++ class library, and several interpreted interface layers including Tcl/Tk, Java, and Python. VTK supports a wide variety of visualization algorithms including scalar, vector, tensor, texture, and volumetric methods. It also supports advanced modeling techniques like implicit modeling, polygon reduction, mesh smoothing, cutting, contouring, and Delaunay triangulation. Moreover, dozens of imaging algorithms have been integrated into the system. This allows mixing 2D imaging / 3D graphics algorithms and data. %package -n %{libname} Summary: Toolkit for 3D computer graphics, image processing, and visualization Group: System/Libraries #Requires: R-base %description -n %{libname} %{summary}. %package -n %{devname} Summary: VTK header files for building C++ code Group: Development/C++ #VTKTargets.cmake needs /usr/bin/vtkEncodeString-8.1 Requires: %{name} = %{version}-%{release} #VTKTargets.cmake needs /usr/lib/vtk-8.1/libvtkWrappingTools-8.1.a %if %{with static} Requires: %{name}-static-devel = %{version}-%{release} %else Obsoletes: %{_lib}vtk-static-devel < %{version}-%{release} %endif #VTKTargets.cmake needs /usr/bin/vtkWrapPython-8.1 Requires: python3-%{name} = %{version}-%{release} # VTK-targets.cmake refers to /usr/lib(64)/python3.9/site-packages/mpi4py/include Requires: python3-mpi4py-devel # Header only devel pkg Requires: eigen3-devel Requires: utf8cpp-devel # VTK-targets.cmake refers to /usr/lib/jvm/java/include Requires: java-devel # vtkconfig.cmake requires Requires: pkgconfig(Qt5OpenGL) Requires: pkgconfig(Qt5Sql) Requires: %{libname} = %{version}-%{release} Requires: %{libqtname} = %{version}-%{release} Provides: %{name}-devel = %{version}-%{release} Provides: lib%{name}-devel = %{version}-%{release} %description -n %{devname} This package provides the VTK header files required to compile C++ programs that use VTK to do 3D visualisation. %package -n %{staticdevelname} Summary: Static development files for VTK Group: Development/C++ Requires: %{devname} = %{version}-%{release} Provides: %{name}-static-devel = %{version}-%{release} Provides: lib%{name}-static-devel = %{version}-%{release} %description -n %{staticdevelname} %{summary}. %package -n python3-%{name} Summary: Python 3 bindings for VTK Group: Development/Python Requires: %{libname} = %{version}-%{release} Provides: %{name}-python = %{version}-%{release} %{?python_provide:%python_provide python3-%{name}} Provides: python-vtk = %{version}-%{release} Provides: python3dist(vtk) = %{version} Provides: python%{python3_version}dist(vtk) = %{version} %description -n python3-%{name} %{summary}. %package -n %{libqtname} Summary: The QT VTK widget plugin Requires: %{libname} = %{version}-%{release} Group: System/Libraries %description -n %{libqtname} The vtkQt classes combine VTK and Qt(TM) for X11. %prep %setup -q -n VTK-%{version} -b1 %autopatch -p1 %build export CFLAGS="%{optflags} -D_UNICODE -DHAVE_UINTPTR_T" export CXXFLAGS="%{optflags} -D_UNICODE -DHAVE_UINTPTR_T" export CPPFLAGS=-DACCEPT_USE_OF_DEPRECATED_PROJ_API_H %ifarch %{arm} export JAVA_TOOL_OPTIONS=-Xmx2048m %endif %cmake -GNinja \ -DBUILD_DOCUMENTATION:BOOL=ON \ -DBUILD_EXAMPLES:BOOL=ON \ -DBUILD_SHARED_LIBS:BOOL=ON \ -DBUILD_STATIC_LIBS:BOOL=%{?with_static:ON}%{!?with_static:OFF} \ -DBUILD_TESTING:BOOL=ON \ -DCMAKE_INSTALL_LIBDIR:PATH=%{_lib} \ -DINCLUDE_INSTALL_DIR:PATH=include \ -DVTK_FORBID_DOWNLOADS:BOOL=ON \ -DVTK_INSTALL_LIBRARY_DIR=%{_libdir} \ -DVTK_INSTALL_ARCHIVE_DIR=%{_libdir} \ -DVTK_QT_VERSION=5 \ -DCMAKE_INSTALL_QMLDIR:PATH=%{_qt5_qmldir} \ -DVTK_PYTHON_VERSION=3 \ -DVTK_PYTHON_OPTIONAL_LINK:BOOL=OFF \ -DVTK_INSTALL_PYTHON_MODULES_DIR=%{python3_sitearch} \ -DVTK_INSTALL_PACKAGE_DIR=%{_libdir}/cmake/%{vtknamever} \ -DVTK_INSTALL_TCL_DIR:PATH=%{vtktcldir} \ %ifarch %{arm} -DVTK_USE_64BITS_IDS:BOOL=OFF \ %endif -DVTK_USE_OGGTHEORA_ENCODER=ON \ -DVTK_USE_EXTERNAL:BOOL=ON \ -DVTK_MODULE_USE_EXTERNAL_VTK_exprtk:BOOL=OFF \ -DVTK_MODULE_USE_EXTERNAL_VTK_fmt:BOOL=OFF \ -DVTK_MODULE_USE_EXTERNAL_VTK_pegtl:BOOL=OFF \ -DVTK_MODULE_USE_EXTERNAL_VTK_ioss:BOOL=OFF \ -DVTK_MODULE_USE_EXTERNAL_VTK_libharu:BOOL=OFF \ -DVTK_USE_MPI:BOOL=ON \ -DVTK_USE_TK:BOOL=ON \ -DVTK_GROUP_ENABLE_Imaging:STRING=YES \ -DVTK_GROUP_ENABLE_MPI:STRING=YES \ -DVTK_GROUP_ENABLE_Qt:STRING=YES \ -DVTK_GROUP_ENABLE_Rendering:STRING=YES \ -DVTK_GROUP_ENABLE_StandAlone:STRING=YES \ -DVTK_GROUP_ENABLE_Tk:STRING=YES \ -DVTK_GROUP_ENABLE_Views:STRING=YES \ -DVTK_MODULE_ENABLE_VTK_FiltersParallelDIY2:STRING=NO \ -DVTK_WRAP_PYTHON:BOOL=ON \ -DVTK_WRAP_JAVA:BOOL=ON %cmake_build %install %cmake_install # not needed rm -rf %{buildroot}%{_libdir}/cmake/vtk-%{short_version}/patches/3.{1*,2{1,2}} #clean java files #__rm -f %%{buildroot}%%{_bindir}/vtkParseJava* #__rm -f %%{buildroot}%%{_bindir}/vtkWrapJava* %files %license %{_datadir}/licenses/VTK/ %doc README.md Copyright.txt vtkBanner.gif vtkLogo.ico #{_bindir}/vtk #{_bindir}/pvtk #{_bindir}/vtkHashSource-* #{_bindir}/vtkEncodeString-* #{_bindir}/vtkWrapTcl-* #{_bindir}/vtkWrapTclInit-* %{_bindir}/vtkParseJava-%{short_version} %{_bindir}/vtkProbeOpenGLVersion-%{short_version} %{_bindir}/vtkWrapHierarchy-%{short_version} %{_bindir}/vtkWrapJava-%{short_version} %dir %{_libdir}/java/ %{_libdir}/java/vtk.jar %dir %{_libdir}/java/vtk-*/ %{_libdir}/java/vtk-*/*.so %dir %{_libdir}/vtk/ %{_libdir}/vtk/hierarchy/ %files -n %{libname} %{_libdir}/libvtk*.so.%{major} %{_libdir}/libvtk*.so.%{version} %files -n %{libqtname} %{_qt5_qmldir}/VTK.%{short_version}/ %files -n %{devname} %{_includedir}/* %{_libdir}/*.so %{_libdir}/cmake/%{vtknamever}/ %if %{with static} %files -n %{staticdevelname} %{_libdir}/*.a %endif %files -n python3-%{name} %{python3_sitearch}/* %{_bindir}/pvtkpython %{_bindir}/vtkpython %{_bindir}/vtkWrapPython-%{short_version} %{_bindir}/vtkWrapPythonInit-%{short_version}