# # spec file for package vtk # # Copyright (c) 2016 SUSE LINUX GmbH, Nuernberg, Germany. # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed # upon. The license for this file, and modifications and additions to the # file, is the same license as for the pristine package itself (unless the # license for the pristine package is not an Open Source License, in which # case the license is the MIT License). An "Open Source License" is a # license that conforms to the Open Source Definition (Version 1.9) # published by the Open Source Initiative. # Please submit bugfixes or comments via http://bugs.opensuse.org/ # Name: vtk Version: 7.0.0 Release: 0 %define series 7.0 # This is a variant BSD license, a cross between BSD and ZLIB. # For all intents, it has the same rights and restrictions as BSD. # http://fedoraproject.org/wiki/Licensing/BSD#VTKBSDVariant Summary: The Visualization Toolkit - A high level 3D visualization library License: BSD-3-Clause Group: Productivity/Scientific/Other Url: http://vtk.org/ Source: http://www.vtk.org/files/release/%{series}/VTK-%{version}.tar.gz # FIXME See if packaging can be tweaked to accommodate python-vtk's devel files in a devel package later Source1: vtk-rpmlintrc # PATCH-FIX-UPSTREAM vtk-fix-file-contains-date-time.patch badshah400@gmail.com -- Fix file containing DATE and TIME Patch1: vtk-fix-file-contains-date-time.patch # PATCH-FIX-UPSTREAM vtk-Rinterface-uintptr_t.patch badshah400@gmail.com -- Only use uintptr_t definition from R headers; no longer include stdint.h Patch2: vtk-Rinterface-uintptr_t.patch # PATCH-FIX-UPSTREAM vtk-gcc6.patch dmueller@suse.com -- Fix compilation with GCC >= 6.0 Patch3: vtk-gcc6.patch BuildRequires: Mesa-libGL-devel BuildRequires: R-base-devel BuildRequires: boost-devel BuildRequires: chrpath BuildRequires: cmake BuildRequires: doxygen BuildRequires: fdupes BuildRequires: freetype2-devel BuildRequires: gcc-c++ BuildRequires: gl2ps-devel BuildRequires: gnuplot BuildRequires: graphviz BuildRequires: hdf5-devel BuildRequires: java-devel BuildRequires: libQtWebKit-devel BuildRequires: libX11-devel BuildRequires: libXt-devel BuildRequires: libexpat-devel BuildRequires: libiodbc-devel BuildRequires: libjpeg-devel BuildRequires: libmysqlclient-devel BuildRequires: libnetcdf_c++-devel BuildRequires: libpng-devel BuildRequires: libtheora-devel BuildRequires: libtiff-devel BuildRequires: netcdf-devel BuildRequires: openmpi-devel BuildRequires: python3-devel BuildRequires: tcl-devel BuildRequires: tk-devel BuildRequires: wget BuildRequires: zlib-devel %if 0%{?suse_version} > 1320 BuildRequires: python3-qt5-devel BuildRequires: pkgconfig(Qt5OpenGL) BuildRequires: pkgconfig(Qt5OpenGLExtensions) BuildRequires: pkgconfig(Qt5Sql) BuildRequires: pkgconfig(Qt5WebKitWidgets) BuildRequires: pkgconfig(Qt5Widgets) %else BuildRequires: libqt4-devel BuildRequires: python3-qt4-devel %endif %if %{?sles_version} BuildRequires: libxml2-devel %else BuildRequires: pkgconfig(libxml-2.0) %endif # jsoncpp available for openSUSE > 13.2 %if 0%{?suse_version} > 1320 BuildRequires: jsoncpp-devel %endif BuildRoot: %{_tmppath}/%{name}-%{version}-build %if 0%{?suse_version} > 1320 %define qtdir %{_lib}/qt5 %else %define qtdir %{_lib}/qt4 %endif %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 modelling, decimation) and rendering techniques (e.g., hardware-accelerated volume rendering, LOD control). %package devel Summary: VTK header files for building C++ code Group: Development/Libraries/Other Requires: %{name} = %{version} Requires: %{name}-java = %{version} Requires: %{name}-qt = %{version} Requires: %{name}-tcl = %{version} Requires: Mesa-libGL-devel Requires: R-base-devel Requires: gl2ps-devel Requires: hdf5-devel # jsoncpp available for openSUSE > 13.2 %if 0%{?suse_version} > 1320 Requires: jsoncpp-devel %endif Requires: freetype2-devel Requires: libexpat-devel Requires: libjpeg-devel Requires: libmysqlclient-devel Requires: libnetcdf_c++-devel Requires: libogg-devel Requires: libpng-devel Requires: libtheora-devel Requires: libtiff-devel Requires: libxml2-devel Requires: netcdf-devel Requires: openmpi-devel Requires: python3-%{name} = %{version} Requires: python3-%{name}-qt = %{version} %description devel 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 modelling, decimation) and rendering techniques (e.g., hardware-accelerated volume rendering, LOD control). This provides the VTK header files required to compile C++ programs that use VTK to do 3D visualisation. %package java Summary: Java bindings for VTK Group: Development/Libraries/Java Requires: %{name} = %{version} %description java 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 modelling, decimation) and rendering techniques (e.g., hardware-accelerated volume rendering, LOD control). This package provides java bindings for VTK. %package -n python3-%{name} Summary: Python bindings for VTK Group: System/Libraries Requires: %{name} = %{version} # DESPITE NOT BEING A DEVEL PACKAGE, THIS REQUIRES OPENMPI-DEVEL TO RUN Requires: openmpi-devel %description -n python3-%{name} 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 modelling, decimation) and rendering techniques (e.g., hardware-accelerated volume rendering, LOD control). This package provides python bindings for VTK. %package -n python3-%{name}-qt Summary: Qt Python VTK widget Group: System/Libraries Requires: %{name} = %{version} Requires: %{name}-qt = %{version} Requires: python3-%{name} = %{version} %if 0%{?suse_version} > 1320 Requires: libQt5OpenGL-devel Requires: libQt5OpenGLExtensions-devel-static Requires: libQt5Sql-devel Requires: libQt5WebKitWidgets-devel Requires: libQt5Widgets-devel Requires: python3-qt5 %else Requires: libqt4-devel Requires: python3-qt4 %endif %description -n python3-%{name}-qt 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 modelling, decimation) and rendering techniques (e.g., hardware-accelerated volume rendering, LOD control). This package provides python-qt bindings for VTK. %package qt Summary: Qt VTK widget Group: Development/Libraries/C and C++ Requires: %{name} = %{version} %description qt 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 modelling, decimation) and rendering techniques (e.g., hardware-accelerated volume rendering, LOD control). This package provides Qt bindings for VTK. %package tcl Summary: Tcl bindings for VTK Group: System/Libraries Requires: %{name} = %{version} %description tcl 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 modelling, decimation) and rendering techniques (e.g., hardware-accelerated volume rendering, LOD control). This package provides tcl bindings for VTK. %package examples Summary: Examples for VTK Group: Productivity/Scientific/Other Requires: %{name} = %{version} Recommends: %{name}data = %{version} %description examples 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 modelling, decimation) and rendering techniques (e.g., hardware-accelerated volume rendering, LOD control). This package contains many well-commented examples showing how to use VTK. Examples are available in the C++, Tcl, Python and Java programming languages. %package testing Summary: Testing programs for VTK Group: Productivity/Scientific/Other Requires: %{name} = %{version} Requires: %{name}data = %{version} %description testing 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 modelling, decimation) and rendering techniques (e.g., hardware-accelerated volume rendering, LOD control). This package provides a few testing programs for VTK. %prep %setup -q -n VTK-%{version} %patch1 -p1 %patch2 -p1 %patch3 -p1 # Replace relative path ../../../VTKData with %%{_datadir}/%%{name}data-%%{version} # otherwise it will break on symlinks. grep -rl '\.\./\.\./\.\./\.\./VTKData' . | xargs perl -pi -e's,\.\./\.\./\.\./\.\./VTKData,%{_datadir}/%{name},g' %build export CFLAGS="%{optflags}" export CXXFLAGS="%{optflags}" mkdir build pushd build cmake .. \ -DCMAKE_CXX_COMPILER:STRING='mpicxx' \ -DCMAKE_C_COMPILER:STRING='mpicc' \ -DBUILD_DOCUMENTATION:BOOL=ON \ -DBUILD_EXAMPLES:BOOL=ON \ -DBUILD_SHARED_LIBS:BOOL=ON \ -DBUILD_TESTING:BOOL=OFF \ -DCMAKE_SKIP_RPATH:BOOL=ON \ -DVTK_CUSTOM_LIBRARY_SUFFIX="" \ -DCMAKE_INSTALL_PREFIX:PATH=%{_prefix} \ -DSIP_INCLUDE_DIR:Path=%{py3_incdir} \ -DVTK_INSTALL_ARCHIVE_DIR:PATH=%{_lib}/%{name} \ -DVTK_INSTALL_LIBRARY_DIR:PATH=%{_lib}/%{name}\ -DVTK_INSTALL_PACKAGE_DIR:PATH=%{_lib}/cmake/%{name} \ -DVTK_INSTALL_TCL_DIR:PATH=share/tcl/%{name} \ %if 0%{?suse_version} > 1320 -DVTK_QT_VERSION=5 \ %endif -DVTK_INSTALL_QT_DIR:STRING=/%{qtdir}/plugins/designer \ -DVTK_USE_OGGTHEORA_ENCODER:BOOL=ON \ -DVTK_USE_RENDERING:BOOL=ON \ %if 0%{?suse_version} > 1320 -DVTK_USE_SYSTEM_LIBRARIES:BOOL=ON \ %else -DVTK_USE_SYSTEM_LIBRARIES:BOOL=OFF \ %endif -DVTK_USE_SYSTEM_LIBPROJ4:BOOL=OFF \ -DVTK_INSTALL_PYTHON_MODULE_DIR:PATH=%{_lib}/python%{py3_ver}/site-packages \ -DVTK_WRAP_PYTHON:BOOL=ON \ -DVTK_WRAP_JAVA:BOOL=ON \ -DVTK_WRAP_PYTHON_SIP:BOOL=ON \ -DVTK_WRAP_TCL:BOOL=ON \ -DVTK_Group_MPI:BOOL=ON \ -DVTK_Group_Imaging:BOOL=ON \ -DVTK_Group_Qt:BOOL=ON \ -DModule_vtkTestingCore:BOOL=ON \ -DModule_vtkTestingRendering:BOOL=ON \ -DVTK_Group_Rendering:BOOL=ON \ -DVTK_Group_StandAlone:BOOL=ON \ -DVTK_Group_Tk:BOOL=ON \ -DVTK_Group_Views:BOOL=ON \ -DModule_vtkFiltersStatisticsGnuR:BOOL=ON \ -DVTK_WRAP_TCL:BOOL=ON \ -DVTK_USE_SYSTEM_HDF5:BOOL=ON \ -DVTK_USE_SYSTEM_NETCDF:BOOL=ON \ -DVTK_PYTHON_VERSION=3 \ -DCMAKE_NO_BUILTIN_CHRPATH:BOOL=ON make %{?_smp_mflags} VERBOSE=1 # Remove executable bits from sources (some of which are generated) find . -name \*.c -or -name \*.cxx -or -name \*.h -or -name \*.hxx -or -name \*.gif | xargs chmod -x popd %install pushd build %makeinstall # Install conf file to enable vtk to find its libraries mkdir -p %{buildroot}/%{_sysconfdir}/ld.so.conf.d echo %{_libdir}/%{name} > %{buildroot}/%{_sysconfdir}/ld.so.conf.d/%{name}.conf # Gather list of non-binding libraries ls %{buildroot}%{_libdir}/%{name}/lib*.so.* | grep -Ev '(Java|QVTK|Qt|Python|TCL)' | sed -e's,^%{buildroot},,' > libs.list # List of executable examples cat > examples.list << EOF Generate2DAMRDataSetWithPulse Generate3DAMRDataSetWithPulse HierarchicalBoxPipeline ImageSlicing DumpXMLFile ParticleReader GenerateCubesFromLabels GenerateModelsFromLabels Medical1 Medical2 Medical3 Medical4 Delaunay3D Delaunay3DAlpha finance MultiBlock BandedContours FilledContours TubesWithVaryingRadiusAndColors BalloonWidget Slider Slider2D LabeledMesh Arrays Cube RGrid SGrid AmbientSpheres Cylinder DiffuseSpheres SpecularSpheres Cone Cone2 Cone3 Cone4 Cone5 Cone6 FixedPointVolumeRayCastMapperCT GPURenderDemo EOF # Install examples for file in `cat examples.list`; do install -p bin/$file %{buildroot}%{_bindir} done perl -pi -e's,^,%{_bindir}/,' examples.list # Remove rpaths from installed binaries chrpath -d %{buildroot}%{_bindir}/* %fdupes -s %{buildroot} %post -p /sbin/ldconfig %postun -p /sbin/ldconfig %post java -p /sbin/ldconfig %postun java -p /sbin/ldconfig %post -n python3-%{name} -p /sbin/ldconfig %postun -n python3-%{name} -p /sbin/ldconfig %post -n python3-%{name}-qt -p /sbin/ldconfig %postun -n python3-%{name}-qt -p /sbin/ldconfig %post qt -p /sbin/ldconfig %postun qt -p /sbin/ldconfig %post tcl -p /sbin/ldconfig %postun tcl -p /sbin/ldconfig %files -f build/libs.list %defattr(-,root,root,-) %config %{_sysconfdir}/ld.so.conf.d/%{name}.conf %doc Copyright.txt %dir %{_libdir}/%{name}/ %files devel %defattr(-,root,root,-) %{_bindir}/%{name}EncodeString %{_bindir}/%{name}HashSource %{_bindir}/%{name}WrapHierarchy %if 0%{?suse_version} <= 1320 %{_bindir}/%{name}mkg3states %endif %{_datadir}/doc/%{name}-%{series}/ %{_libdir}/%{name}/*.so %{_libdir}/cmake/%{name}/ %{_libdir}/%{name}/libvtkWrappingTools.a %{_includedir}/%{name}-%{series}/ %{_datadir}/tcl/vtk/vtktcl.c %{_datadir}/%{name}-%{series}/ %files java %defattr(-,root,root,-) %{_bindir}/%{name}ParseJava %{_bindir}/%{name}WrapJava %{_libdir}/%{name}/%{name}.jar %{_libdir}/%{name}/*Java.so.* %files -n python3-%{name} %defattr(-,root,root,-) %{_bindir}/%{name}python %{_bindir}/p%{name}python %{_bindir}/%{name}WrapPython %{_bindir}/%{name}WrapPythonInit %{_libdir}/%{name}/*Python*.so.* %{python3_sitearch}/%{name}/ %dir %{_libdir}/%{name}/site-packages %{_libdir}/%{name}/site-packages/mpi4py/ %exclude %{_libdir}/%{name}/*QtPython*.so.* %files tcl %defattr(-,root,root,-) %{_bindir}/%{name} %{_bindir}/%{name}WrapTcl %{_bindir}/%{name}WrapTclInit %{_datadir}/tcl/%{name}/ %{_libdir}/%{name}/lib%{name}*TCL.so.* %exclude %{_libdir}/%{name}/*QtTCL.so.* %exclude %{_datadir}/tcl/vtk/vtktcl.c %files qt %defattr(-,root,root,-) %{_libdir}/%{name}/lib*Qt*.so.* %dir %{_prefix}/%{qtdir}/plugins/designer %{_prefix}/%{qtdir}/plugins/designer/libQVTKWidgetPlugin.so %exclude %{_libdir}/%{name}/*Python*.so.* %files -n python3-%{name}-qt %defattr(-,root,root,-) %{_libdir}/%{name}/*QtPython*.so.* %files examples -f build/examples.list %defattr(-,root,root,-) %changelog