SHA256
1
0
forked from pool/vtk
vtk/vtk-openmpi.spec

502 lines
16 KiB
RPMSpec
Raw Normal View History

#
# spec file for package vtk-openmpi
#
# Copyright (c) 2018 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 https://bugs.opensuse.org/
#
%define compat_gl 0
%define pkgname vtk
%define vtklib lib%{pkgname}1-openmpi
%define shlib %{vtklib}
%if 0%{?sle_version} <= 150000
%define mpiver openmpi2
%else
%define mpiver openmpi3
%endif
%define mpiprefix %{_libdir}/mpi/gcc/%{mpiver}
Name: vtk-openmpi
Version: 8.1.2
Release: 0
%define series 8.1
# 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
# We need to use the compat conditionals here to avoid Factory's source validator from tripping up
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-OPENSUSE 0001-Allow-compilation-on-GLES-platforms.patch VTK issue #17113 stefan.bruens@rwth-aachen.de -- Fix building with Qt GLES builds
Patch3: 0001-Allow-compilation-on-GLES-platforms.patch
# PATCH-FIX-UPSTREAM fix_qt5_example_cmake.patch -- Fix for recent Qt5 version https://gitlab.kitware.com/vtk/vtk/issues/17336
Patch4: fix_qt5_example_cmake.patch
BuildRequires: %{mpiver}
BuildRequires: %{mpiver}-devel
BuildRequires: R-base-devel
BuildRequires: chrpath
BuildRequires: cmake >= 3.4
BuildRequires: doxygen
BuildRequires: fdupes
BuildRequires: gcc-c++
BuildRequires: gl2ps-devel
BuildRequires: gnuplot
BuildRequires: graphviz
BuildRequires: hdf5-devel
BuildRequires: hdf5-openmpi-devel
BuildRequires: java-devel
BuildRequires: libjpeg-devel
BuildRequires: libmysqlclient-devel
BuildRequires: libnetcdf_c++-devel
BuildRequires: libtiff-devel
BuildRequires: python3-devel
BuildRequires: python3-mpi4py-devel
BuildRequires: python3-numpy-devel
BuildRequires: python3-qt5-devel
BuildRequires: wget
BuildRequires: pkgconfig(Qt5Core)
BuildRequires: pkgconfig(Qt5OpenGL)
BuildRequires: pkgconfig(Qt5OpenGLExtensions)
BuildRequires: pkgconfig(Qt5Sql)
BuildRequires: pkgconfig(Qt5WebKitWidgets)
BuildRequires: pkgconfig(Qt5Widgets)
BuildRequires: pkgconfig(expat)
BuildRequires: pkgconfig(freetype2)
BuildRequires: pkgconfig(gl)
BuildRequires: pkgconfig(jsoncpp)
BuildRequires: pkgconfig(libavcodec)
BuildRequires: pkgconfig(libavdevice)
BuildRequires: pkgconfig(libavformat)
BuildRequires: pkgconfig(libavutil)
BuildRequires: pkgconfig(libiodbc)
BuildRequires: pkgconfig(liblz4) >= 1.7.3
BuildRequires: pkgconfig(libpng)
BuildRequires: pkgconfig(libswscale)
BuildRequires: pkgconfig(netcdf)
BuildRequires: pkgconfig(tcl)
BuildRequires: pkgconfig(theora)
BuildRequires: pkgconfig(tk)
BuildRequires: pkgconfig(x11)
BuildRequires: pkgconfig(xt)
BuildRequires: pkgconfig(zlib)
%if 0%{?suse_version} >= 1500
BuildRequires: libboost_graph-devel
BuildRequires: libboost_graph_parallel-devel
BuildRequires: libboost_mpi-devel
BuildRequires: libboost_serialization-devel
%else
BuildRequires: boost-devel
%endif
Provides: python3-%{name}-qt = %{version}
%if %{?sles_version}
BuildRequires: libxml2-devel
%else
BuildRequires: pkgconfig(libxml-2.0)
%endif
%description
VTK is a 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 -n %{shlib}
Summary: The Visualization Toolkit - A high level 3D visualization library
Group: System/Libraries
Provides: %{name} = %{version}
%description -n %{shlib}
VTK is a 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 the shared libraries for VTK.
%package devel
Summary: VTK header files for building C++ code
# not strictly necessary, but required by VTKs cmake files
Group: Development/Libraries/C and C++
Requires: %{mpiver}
Requires: %{mpiver}-devel
Requires: %{name}-java = %{version}
Requires: %{name}-tcl = %{version}
Requires: %{shlib} = %{version}
Requires: R-base-devel
Requires: cmake >= 3.4
Requires: gcc-c++
Requires: gl2ps-devel
Requires: gnuplot
Requires: graphviz
Requires: hdf5-devel
Requires: hdf5-openmpi-devel
Requires: java-devel
Requires: libjpeg-devel
Requires: libmysqlclient-devel
Requires: libnetcdf_c++-devel
Requires: libtiff-devel
Requires: pkgconfig(Qt5Core)
Requires: pkgconfig(Qt5OpenGL)
Requires: pkgconfig(Qt5OpenGLExtensions)
Requires: pkgconfig(Qt5Sql)
Requires: pkgconfig(Qt5WebKitWidgets)
Requires: pkgconfig(Qt5Widgets)
Requires: pkgconfig(expat)
Requires: pkgconfig(freetype2)
Requires: pkgconfig(gl)
Requires: pkgconfig(jsoncpp)
Requires: pkgconfig(libavcodec)
Requires: pkgconfig(libavdevice)
Requires: pkgconfig(libavformat)
Requires: pkgconfig(libavutil)
Requires: pkgconfig(libiodbc)
Requires: pkgconfig(liblz4) >= 1.7.3
Requires: pkgconfig(libpng)
Requires: pkgconfig(libswscale)
Requires: pkgconfig(netcdf)
Requires: pkgconfig(tcl)
Requires: pkgconfig(theora)
Requires: pkgconfig(tk)
Requires: pkgconfig(x11)
Requires: pkgconfig(xt)
Requires: pkgconfig(zlib)
%description devel
VTK is a 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 development libraries and header files required to
compile C++ programs that use VTK to do 3D visualisation.
%package devel-doc
Summary: VTK API documentation
Group: Documentation/HTML
%description devel-doc
VTK is a 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 API documentation useful for developing
programs that use VTK to do 3D visualisation.
%package java
Summary: Java bindings for VTK
Group: Development/Libraries/Java
Requires: %{shlib} = %{version}
%description java
VTK is a 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: Development/Libraries/Python
Requires: %{shlib} = %{version}
Requires: python3-mpi4py
Requires: python3-numpy
Requires: python3-qt5
Conflicts: python3-vtk
Conflicts: python3-vtk-compat_gl
%description -n python3-%{name}
VTK is a 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 3.x bindings for VTK.
%package qt
Summary: Qt Designer plugin for QVTKWidget
Group: Development/Libraries/C and C++
Requires: %{shlib} = %{version}
%description qt
VTK is a 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 Qt Designer plugin for the QVTKWidget.
%package tcl
Summary: Tcl bindings for VTK
Group: Development/Languages/Tcl
Requires: %{shlib} = %{version}
%description tcl
VTK is a 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: Documentation/Other
Requires: %{shlib} = %{version}
Recommends: vtkdata = %{version}
%description examples
VTK is a 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 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: %{shlib} = %{version}
Requires: vtkdata = %{version}
%description testing
VTK is a 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
%patch3 -p1
%patch4 -p1
# Replace relative path ../../../VTKData with %%{_datadir}/%%{pkgname}data-%%{version}
# otherwise it will break on symlinks.
grep -rl '\.\./\.\./\.\./\.\./VTKData' . | xargs -r perl -pi -e's,\.\./\.\./\.\./\.\./VTKData,%{_datadir}/%{pkgname},g'
%build
source %{mpiprefix}/bin/mpivars.sh
export CFLAGS="%{optflags}"
export CXXFLAGS="%{optflags}"
# FindJava.cmake looks for javah executable. However,
# the build never invokes the tool. Define a bogus
# Java_JAVAH_EXECUTABLE in order to be able to build
# with JDK10 that does not have this tool, deprecated
# since JDK8.
%cmake \
-DBUILD_DOCUMENTATION:BOOL=ON \
-DBUILD_EXAMPLES:BOOL=ON \
-DBUILD_TESTING:BOOL=OFF \
-DCMAKE_C_COMPILER:PATH=%{mpiprefix}/bin/mpicc \
-DCMAKE_CXX_COMPILER::PATH=%{mpiprefix}/bin/mpicxx \
-DCMAKE_NO_BUILTIN_CHRPATH:BOOL=ON \
-DJava_JAVAH_EXECUTABLE:PATH=%{_bindir}/true \
-DModule_vtkTestingCore:BOOL=ON \
-DModule_vtkTestingRendering:BOOL=ON \
-DOpenGL_GL_PREFERENCE:STRING='GLVND' \
-DVTK_CUSTOM_LIBRARY_SUFFIX="" \
-DVTK_EXTERNAL_LIBHARU_IS_SHARED:BOOL=OFF \
-DVTK_Group_Imaging:BOOL=ON \
-DVTK_Group_MPI:BOOL=ON \
-DVTK_Group_Qt:BOOL=ON \
-DVTK_Group_Rendering:BOOL=ON \
-DVTK_Group_StandAlone:BOOL=ON \
-DVTK_Group_Tk:BOOL=ON \
-DVTK_Group_Views:BOOL=ON \
-DVTK_INSTALL_ARCHIVE_DIR:PATH=%{_lib} \
-DVTK_INSTALL_LIBRARY_DIR:PATH=%{_lib} \
-DVTK_INSTALL_PACKAGE_DIR:PATH=%{_lib}/cmake/%{pkgname} \
-DVTK_INSTALL_QT_DIR:STRING=%{_lib}/qt5/plugins/designer \
-DVTK_INSTALL_PYTHON_MODULE_DIR:PATH=%( realpath --relative-to=%{mpiprefix} %{python3_sitearch} ) \
-DVTK_INSTALL_TCL_DIR:PATH=share/tcl/%{pkgname} \
-DVTK_PYTHON_VERSION=3 \
-DVTK_QT_VERSION=5 \
-DVTK_USE_OGGTHEORA_ENCODER:BOOL=ON \
-DVTK_USE_SYSTEM_LIBRARIES:BOOL=ON \
-DVTK_USE_SYSTEM_DIY2=OFF \
-DVTK_USE_SYSTEM_GL2PS=OFF \
-DVTK_USE_SYSTEM_HDF5:BOOL=ON \
-DVTK_USE_SYSTEM_LIBHARU:BOOL=OFF \
-DVTK_USE_SYSTEM_LIBPROJ4:BOOL=OFF \
-DVTK_USE_SYSTEM_MPI4PY=ON \
-DVTK_USE_SYSTEM_NETCDF:BOOL=ON \
-DVTK_WRAP_JAVA:BOOL=ON \
-DVTK_WRAP_PYTHON:BOOL=ON \
-DVTK_WRAP_PYTHON_SIP:BOOL=ON \
-DVTK_WRAP_TCL:BOOL=ON \
-DCMAKE_INSTALL_PREFIX:PATH=%{mpiprefix}/ \
-DINCLUDE_INSTALL_DIR:PATH=%{mpiprefix}/include/ \
-DCMAKE_INSTALL_LIBDIR:PATH=%{mpiprefix}/%{_lib} \
-DLIB_INSTALL_DIR:PATH=%{mpiprefix}/%{_lib} \
-DSHARE_INSTALL_PREFIX:PATH=%{mpiprefix}/share/ \
-DVTK_INSTALL_DOC_DIR:PATH=%( realpath --relative-to=%{mpiprefix} %{_docdir}/%{name}-%{series} )
%make_jobs
make %{?_smp_mflags} DoxygenDoc
# Remove executable bits from sources (some of which are generated)
find . -name \*.c -o -name \*.cxx -o -name \*.h -o -name \*.hxx -o -name \*.gif -exec chmod -x "{}" "+"
%install
%cmake_install
# List of executable examples
cat > examples.list << EOF
AmbientSpheres
Arrays
BalloonWidget
BandedContours
Cone
Cone2
Cone3
Cone4
Cone5
Cone6
Cube
Cylinder
Delaunay3D
Delaunay3DAlpha
DiffuseSpheres
DumpXMLFile
FilledContours
FixedPointVolumeRayCastMapperCT
GPURenderDemo
Generate2DAMRDataSetWithPulse
Generate3DAMRDataSetWithPulse
GenerateCubesFromLabels
GenerateModelsFromLabels
HierarchicalBoxPipeline
ImageSlicing
LabeledMesh
Medical1
Medical2
Medical3
Medical4
MultiBlock
ParticleReader
RGrid
SGrid
Slider
Slider2D
SpecularSpheres
TubesWithVaryingRadiusAndColors
finance
EOF
# Install examples
for file in `cat examples.list`; do
install -p build/bin/$file %{buildroot}%{mpiprefix}/bin
done
perl -pi -e's,^,%{mpiprefix}/bin/,' examples.list
%fdupes -s %{buildroot}
%check
# Make sure the python library is at least importable
source %{_libdir}/mpi/gcc/%{mpiver}/bin/mpivars.sh
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:%{buildroot}%{mpiprefix}/%{_lib}
export PYTHONPATH=%{buildroot}%{python3_sitearch}
python3 -c "import vtk"
%post -n %{shlib} -p /sbin/ldconfig
%postun -n %{shlib} -p /sbin/ldconfig
%post -n python3-%{name} -p /sbin/ldconfig
%postun -n python3-%{name} -p /sbin/ldconfig
%files -n %{shlib}
%license Copyright.txt
%{_libdir}/mpi/gcc/%{mpiver}/%{_lib}/lib*.so.*
%files devel
%license Copyright.txt
%{mpiprefix}/bin/%{pkgname}EncodeString
%{mpiprefix}/bin/%{pkgname}HashSource
%{mpiprefix}/bin/%{pkgname}ParseJava
%{mpiprefix}/bin/%{pkgname}WrapHierarchy
%{mpiprefix}/bin/%{pkgname}WrapJava
%{mpiprefix}/bin/%{pkgname}WrapPython
%{mpiprefix}/bin/%{pkgname}WrapPythonInit
%{mpiprefix}/bin/%{pkgname}WrapTcl
%{mpiprefix}/bin/%{pkgname}WrapTclInit
%{mpiprefix}/%{_lib}/*.so
%dir %{mpiprefix}/%{_lib}/cmake/
%{mpiprefix}/%{_lib}/cmake/%{pkgname}/
%{mpiprefix}/%{_lib}/libvtkWrappingTools.a
%{mpiprefix}/include/%{pkgname}-%{series}/
# VTK JNI bindings
%exclude %{mpiprefix}/%{_lib}/libvtk*Java.so
%exclude %{mpiprefix}/%{_lib}/libvtkRenderingPythonTkWidgets*.so
%exclude %{mpiprefix}/share/tcl/vtk/vtktcl.c
%files devel-doc
%license Copyright.txt
%{_docdir}/%{name}-%{series}
%files java
%license Copyright.txt
%{mpiprefix}/%{_lib}/%{pkgname}.jar
%{mpiprefix}/%{_lib}/libvtk*Java.so
%files -n python3-%{name}
%license Copyright.txt
%{mpiprefix}/bin/%{pkgname}python
%{mpiprefix}/bin/p%{pkgname}python
%{mpiprefix}/%{_lib}/libvtkRenderingPythonTkWidgets*.so
%{python3_sitearch}/%{pkgname}/
%files tcl
%license Copyright.txt
%{mpiprefix}/bin/%{pkgname}
%{mpiprefix}/bin/p%{pkgname}
%{mpiprefix}/share/tcl
%{mpiprefix}/share/tcl/%{pkgname}/
%files qt
%license Copyright.txt
%dir %{mpiprefix}/%{_lib}/qt5/
%dir %{mpiprefix}/%{_lib}/qt5/plugins/
%dir %{mpiprefix}/%{_lib}/qt5/plugins/designer/
%{mpiprefix}/%{_lib}/qt5/plugins/designer/libQVTKWidgetPlugin.so
%files examples -f examples.list
%license Copyright.txt
%changelog