2017-04-28 10:42:10 +02:00
#
# spec file for package vtk-compat_gl
#
# Copyright (c) 2017 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/
#
%define compat_gl 1
%define pkgname vtk
2017-08-09 09:38:23 +02:00
%define vtklib lib%{pkgname}1
%define vtkcompatlib libvtkcompat_gl1
%if %{compat_gl}
%define shlib %{vtkcompatlib}
%else
%define shlib %{vtklib}
%endif
2017-04-28 10:42:10 +02:00
%if %{compat_gl}
Name : vtk-compat_gl
%else
Name : vtk
%endif
2017-07-14 10:49:26 +02:00
Version : 8.0.0
2017-04-28 10:42:10 +02:00
Release : 0
2017-07-14 10:49:26 +02:00
%define series 8.0
2017-04-28 10:42:10 +02:00
# 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
2017-08-09 09:38:23 +02:00
# We need to use the compat conditionals here to avoid Factory's source validator from tripping up
%if %{compat_gl}
Source1 : vtk-compat_gl-rpmlintrc
%else
Source1 : vtk-rpmlintrc
%endif
2017-04-28 10:42:10 +02:00
# 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 boo#985386 badshah400@gmail.com -- Fix issues with uintptr_t redefinition by defining the HAVE_UINTPTR_T macro using cmake functions to avoid redefinition of uintptr_t, which is already defined in stdint.h called earlier; patch sent upstream
Patch2 : vtk-Rinterface-uintptr_t.patch
BuildRequires : Mesa-libGL-devel
BuildRequires : R-base-devel
BuildRequires : boost-devel
BuildRequires : chrpath
BuildRequires : cmake >= 3.4
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
2017-07-14 10:49:26 +02:00
BuildRequires : libharu-devel
2017-04-28 10:42:10 +02:00
BuildRequires : libiodbc-devel
BuildRequires : libjpeg-devel
2017-08-09 09:38:23 +02:00
BuildRequires : liblz4-devel >= 1.7.3
2017-04-28 10:42:10 +02:00
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
2017-08-09 09:38:23 +02:00
BuildRequires : python3-mpi4py-devel
2017-04-28 10:42:10 +02:00
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 & Leap
%if 0%{?suse_version} > 1320 || 0%{suse_version} == 1315
BuildRequires : jsoncpp-devel
%endif
BuildRoot : %{_tmppath} /%{name} -%{version} -build
%if 0%{?suse_version} > 1320
%define qtdir %{_lib}/qt5
%else
%define qtdir %{_lib}/qt4
%endif
2017-08-09 09:38:23 +02:00
Provides : python3-%{name} -qt = %{version}
2017-04-28 10:42:10 +02:00
%description
2017-08-05 18:43:24 +02:00
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).
2017-04-28 10:42:10 +02:00
2017-08-09 09:38:23 +02:00
%package -n %{shlib}
2017-08-09 12:08:22 +02:00
Summary : The Visualization Toolkit - A high level 3D visualization library
Group : System/Libraries
2017-08-09 09:38:23 +02:00
%if %{compat_gl}
Conflicts : %{vtklib}
%else
Conflicts : %{vtkcompatlib}
%endif
%description -n %{shlib}
VTK is a software system for image processing, 3D graphics, volume
rendering and visualization.
This package provides the shared libraries for VTK.
2017-04-28 10:42:10 +02:00
%package devel
Summary : VTK header files for building C++ code
2017-08-05 18:43:24 +02:00
Group : Development/Libraries/C and C++
2017-08-09 09:38:23 +02:00
Requires : %{shlib} = %{version}
2017-04-28 10:42:10 +02:00
Requires : Mesa-libGL-devel
Requires : R-base-devel
Requires : gl2ps-devel
Requires : hdf5-devel
# jsoncpp available for openSUSE > 13.2 & Leap
%if 0%{?suse_version} > 1320 || 0%{suse_version} == 1315
Requires : jsoncpp-devel
%endif
Requires : freetype2-devel
Requires : libexpat-devel
2017-07-18 01:39:39 +02:00
Requires : libharu-devel
2017-04-28 10:42:10 +02:00
Requires : libjpeg-devel
2017-07-18 01:39:39 +02:00
Requires : liblz4-devel
2017-04-28 10:42:10 +02:00
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
%if %{compat_gl}
Conflicts : vtk-devel
Provides : vtk-devel
%else
Conflicts : vtk-compat_gl-devel
%endif
%description devel
2017-08-05 18:43:24 +02:00
VTK is a software system for image processing, 3D graphics, volume
rendering and visualization.
2017-04-28 10:42:10 +02:00
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
2017-08-09 09:38:23 +02:00
Requires : %{shlib} = %{version}
2017-04-28 10:42:10 +02:00
%if %{compat_gl}
Conflicts : vtk-java
Provides : vtk-java
%else
Conflicts : vtk-compat_gl-java
%endif
%description java
2017-08-05 18:43:24 +02:00
VTK is a software system for image processing, 3D graphics, volume
rendering and visualization.
2017-04-28 10:42:10 +02:00
This package provides java bindings for VTK.
%package -n python3-%{name}
Summary : Python bindings for VTK
2017-08-05 18:43:24 +02:00
Group : Development/Languages/Python
2017-08-09 09:38:23 +02:00
Requires : %{shlib} = %{version}
2017-04-28 10:42:10 +02:00
# DESPITE NOT BEING A DEVEL PACKAGE, THIS REQUIRES OPENMPI-DEVEL TO RUN
Requires : openmpi-devel
%if %{compat_gl}
Conflicts : python3-vtk
Provides : python3-vtk
%else
Conflicts : python3-vtk-compat_gl
%endif
%description -n python3-%{name}
2017-08-05 18:43:24 +02:00
VTK is a software system for image processing, 3D graphics, volume
rendering and visualization.
2017-04-28 10:42:10 +02:00
2017-08-09 09:38:23 +02:00
This package provides python bindings for VTK.
2017-04-28 10:42:10 +02:00
%package qt
Summary : Qt VTK widget
Group : Development/Libraries/C and C++
2017-08-09 09:38:23 +02:00
Requires : %{shlib} = %{version}
2017-04-28 10:42:10 +02:00
%if %{compat_gl}
Conflicts : vtk-qt
Provides : vtk-qt
%else
Conflicts : vtk-compat_gl-qt
%endif
%description qt
2017-08-05 18:43:24 +02:00
VTK is a software system for image processing, 3D graphics, volume
rendering and visualization.
2017-04-28 10:42:10 +02:00
This package provides Qt bindings for VTK.
%package tcl
Summary : Tcl bindings for VTK
2017-08-09 12:08:22 +02:00
Group : Development/Languages/Tcl
2017-08-09 09:38:23 +02:00
Requires : %{shlib} = %{version}
2017-04-28 10:42:10 +02:00
%if %{compat_gl}
Conflicts : vtk-tcl
Provides : vtk-tcl
%else
Conflicts : vtk-compat_gl-tcl
%endif
%description tcl
2017-08-05 18:43:24 +02:00
VTK is a software system for image processing, 3D graphics, volume
rendering and visualization.
2017-04-28 10:42:10 +02:00
This package provides tcl bindings for VTK.
%package examples
Summary : Examples for VTK
Group : Productivity/Scientific/Other
2017-08-09 09:38:23 +02:00
Requires : %{shlib} = %{version}
2017-04-28 10:42:10 +02:00
Recommends: %{name} data = %{version}
%if %{compat_gl}
Conflicts : vtk-examples
Provides : vtk-examples
%else
Conflicts : vtk-compat_gl-examples
%endif
%description examples
2017-08-05 18:43:24 +02:00
VTK is a software system for image processing, 3D graphics, volume
rendering and visualization.
2017-04-28 10:42:10 +02:00
2017-08-05 18:43:24 +02:00
This package contains many examples showing how to use VTK. Examples
are available in the C++, Tcl, Python and Java programming languages.
2017-04-28 10:42:10 +02:00
%package testing
Summary : Testing programs for VTK
Group : Productivity/Scientific/Other
Requires : %{name} data = %{version}
2017-08-09 09:38:23 +02:00
Requires : %{shlib} = %{version}
2017-04-28 10:42:10 +02:00
%if %{compat_gl}
Conflicts : vtk-testing
Provides : vtk-testing
%else
Conflicts : vtk-compat_gl-testing
%endif
%description testing
2017-08-05 18:43:24 +02:00
VTK is a software system for image processing, 3D graphics, volume
rendering and visualization.
2017-04-28 10:42:10 +02:00
This package provides a few testing programs for VTK.
%prep
%setup -q -n VTK-%{version}
%patch1 -p1
%patch2 -p1
# Replace relative path ../../../VTKData with %%{_datadir}/%%{pkgname}data-%%{version}
# otherwise it will break on symlinks.
2017-08-09 12:08:22 +02:00
grep -rl '\.\./\.\./\.\./\.\./VTKData' . | xargs -r perl -pi -e's,\.\./\.\./\.\./\.\./VTKData,%{_datadir}/%{pkgname},g'
2017-04-28 10:42:10 +02:00
%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} \
2017-08-09 09:38:23 +02:00
-DVTK_INSTALL_ARCHIVE_DIR:PATH=%{_lib} \
-DVTK_INSTALL_LIBRARY_DIR:PATH=%{_lib} \
2017-04-28 10:42:10 +02:00
-DVTK_INSTALL_PACKAGE_DIR:PATH=%{_lib}/cmake/%{pkgname} \
-DVTK_INSTALL_TCL_DIR:PATH=share/tcl/%{pkgname} \
%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 %{compat_gl}
-DVTK_RENDERING_BACKEND:STRING='OpenGL' \
%endif
%if 0%{?suse_version} > 1320 || 0%{suse_version} == 1315
-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 \
-DVTK_USE_SYSTEM_DIY2=OFF \
2017-08-09 09:38:23 +02:00
-DVTK_USE_SYSTEM_GL2PS=OFF \
-DVTK_USE_SYSTEM_MPI4PY=ON
2017-04-28 10:42:10 +02:00
make %{?_smp_mflags} VERBOSE=1
2017-07-14 10:49:26 +02:00
make %{?_smp_mflags} DoxygenDoc
2017-04-28 10:42:10 +02:00
# Remove executable bits from sources (some of which are generated)
2017-08-09 12:08:22 +02:00
find . -name \*.c -o -name \*.cxx -o -name \*.h -o -name \*.hxx -o -name \*.gif -exec chmod -x " { } " " + "
2017-04-28 10:42:10 +02:00
popd
%install
pushd build
%makeinstall
# Gather list of non-binding libraries
2017-08-09 09:38:23 +02:00
ls %{buildroot} %{_libdir} /lib*.so.* | sed -e's,^%{buildroot},,' > libs.list
2017-04-28 10:42:10 +02:00
# 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}
2017-08-09 09:38:23 +02:00
%post -n %{shlib} -p /sbin/ldconfig
%postun -n %{shlib} -p /sbin/ldconfig
2017-04-28 10:42:10 +02:00
2017-08-09 09:38:23 +02:00
%files -n %{shlib} -f build/libs.list
2017-04-28 10:42:10 +02:00
%defattr (-,root,root,-)
%files devel
%defattr (-,root,root,-)
2017-08-09 09:38:23 +02:00
%doc Copyright.txt
2017-04-28 10:42:10 +02:00
%{_bindir} /%{pkgname} EncodeString
%{_bindir} /%{pkgname} HashSource
%{_bindir} /%{pkgname} WrapHierarchy
%if %{compat_gl}
%{_bindir} /%{pkgname} ParseOGLExt
%endif
%{_bindir} /pvtk
%if 0%{?suse_version} <= 1320 && 0%{?suse_version} != 1315
%{_bindir} /%{pkgname} mkg3states
%endif
%{_datadir} /doc/%{pkgname} -%{series} /
2017-08-09 09:38:23 +02:00
%{_libdir} /*.so
2017-04-28 10:42:10 +02:00
%if 0%{?suse_version} <= 1320 && 0%{?suse_version} != 1315
%{_libdir} /libvtktiff.so
%endif
%{_libdir} /cmake/%{pkgname} /
2017-08-09 09:38:23 +02:00
%{_libdir} /libvtkWrappingTools.a
2017-04-28 10:42:10 +02:00
%{_includedir} /%{pkgname} -%{series} /
2017-08-09 09:38:23 +02:00
%exclude %{_datadir} /tcl/vtk/vtktcl.c
2017-04-28 10:42:10 +02:00
%files java
%defattr (-,root,root,-)
%{_bindir} /%{pkgname} ParseJava
%{_bindir} /%{pkgname} WrapJava
2017-08-09 09:38:23 +02:00
%{_libdir} /%{pkgname} .jar
2017-04-28 10:42:10 +02:00
%files -n python3-%{name}
%defattr (-,root,root,-)
%{_bindir} /%{pkgname} python
%{_bindir} /p%{pkgname} python
%{_bindir} /%{pkgname} WrapPython
%{_bindir} /%{pkgname} WrapPythonInit
%{python3_sitearch} /%{pkgname} /
%files tcl
%defattr (-,root,root,-)
%{_bindir} /%{pkgname}
%{_bindir} /%{pkgname} WrapTcl
%{_bindir} /%{pkgname} WrapTclInit
%{_datadir} /tcl/%{pkgname} /
%files qt
%defattr (-,root,root,-)
%dir %{_prefix} /%{qtdir} /plugins/designer
%{_prefix} /%{qtdir} /plugins/designer/libQVTKWidgetPlugin.so
%files examples -f build/examples.list
%defattr (-,root,root,-)
%changelog