File vtk.spec of Package vtk

#
# spec file for package vtk
#
# Copyright (c) 2014 SUSE LINUX Products 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:        6.1.0
Release:        0
%define series 6.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
# PATCH-FIX-UPSTREAM vtk-system.patch badshah400@gmail.com -- Use system libraries, http://public.kitware.com/Bug/view.php?id=11823
Patch0:         vtk-system.patch
# 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-install-missing-modules.patch badshah400@gmail.com -- Install some cmake modules missed in upstream packaging (will be required if in future we can get paraview to use system installed vtk)
Patch2:         vtk-install-missing-modules.patch
# PATCH-FIX-UPSTREAM vtk-Mesa10.3-build-failures.patch badshah400@gmail.com --  Actually define GLX_GLXEXT_LEGACY to prevent the system glext.h include; fixes buld failures with Mesa >= 10.3; fix taken from upstream git and rebased
Patch3:         vtk-Mesa10.3-build-failures.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:  libpng-devel
BuildRequires:  libqt4-devel
BuildRequires:  libtheora-devel
BuildRequires:  libtiff-devel
BuildRequires:  python-devel
BuildRequires:  python-qt4-devel
BuildRequires:  tcl-devel
BuildRequires:  tk-devel
BuildRequires:  wget
BuildRequires:  zlib-devel
%if %{?sles_version}
BuildRequires:  libxml2-devel
%else 
BuildRequires:  pkgconfig(libxml-2.0)
%endif
BuildRoot:      %{_tmppath}/%{name}-%{version}-build
%define qtdir   %{_lib}/qt4

%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
Requires:       libexpat-devel
Requires:       libjpeg-devel
Requires:       libmysqlclient-devel
Requires:       libogg-devel
Requires:       libpng-devel
Requires:       libqt4-devel
Requires:       libtheora-devel
Requires:       libtiff-devel
Requires:       python-%{name} = %{version}
Requires:       python-%{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 python-%{name}
Summary:        Python bindings for VTK
Group:          System/Libraries
Requires:       %{name} = %{version}
%{py_requires}

%description -n python-%{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 python-%{name}-qt
Summary:        Qt Python VTK widget
Group:          System/Libraries
Requires:       %{name} = %{version}
Requires:       %{name}-qt = %{version}
Requires:       python-%{name} = %{version}
Requires:       python-qt4
%{py_requires}

%description -n python-%{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}
Requires:       %{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}
%patch0 -p1
%patch1 -p1
%patch2 -p1
%if 0%{?suse_version} > 1310
%patch3 -p1
%endif

# 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 .. \
    -DBUILD_DOCUMENTATION:BOOL=ON \
    -DBUILD_EXAMPLES:BOOL=ON \
    -DBUILD_SHARED_LIBS:BOOL=ON \
    -DBUILD_TESTING:BOOL=OFF \
    -DVTK_CUSTOM_LIBRARY_SUFFIX="" \
    -DCMAKE_INSTALL_PREFIX:PATH=%{_prefix} \
    -DSIP_INCLUDE_DIR:Path=%{py_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} \
    -DVTK_INSTALL_QT_DIR:STRING=/%{qtdir}/plugins/designer \
    -DVTK_USE_OGGTHEORA_ENCODER:BOOL=ON \
    -DVTK_USE_RENDERING:BOOL=ON \
    -DVTK_USE_SYSTEM_LIBRARIES:BOOL=OFF \
    -DVTK_USE_SYSTEM_LIBPROJ4:BOOL=OFF \
%if 0%{?suse_version} <= 1230
    -DVTK_USE_SYSTEM_GL2PS:BOOL=OFF \
%endif
    -DVTK_INSTALL_PYTHON_MODULE_DIR:PATH=%{_lib}/python%{py_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_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

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
LabeledMesh
MultiBlock
Arrays
Cube
RGrid
SGrid
ImageDataLIC2DDemo
StructuredGridLIC2DDemo
ImageSlicing
DumpXMLFile
ParticleReader
GenerateCubesFromLabels
GenerateModelsFromLabels
Medical1
Medical2
Medical3
Medical4
Delaunay3D
Delaunay3DAlpha
finance
AmbientSpheres
Cylinder
DiffuseSpheres
SpecularSpheres
SurfaceLICDemo
Cone
Cone2
Cone3
Cone4
Cone5
Cone6
BandedContours
FilledContours
TubesWithVaryingRadiusAndColors
FixedPointVolumeRayCastMapperCT
GPURenderDemo
BalloonWidget
Slider
Slider2D
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 python-%{name} -p /sbin/ldconfig
%postun -n python-%{name} -p /sbin/ldconfig

%post   -n python-%{name}-qt -p /sbin/ldconfig
%postun -n python-%{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}ParseOGLExt
%{_bindir}/%{name}WrapHierarchy
%{_bindir}/%{name}mkg3states
%{_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 python-%{name}
%defattr(-,root,root,-)
%{_bindir}/%{name}python
%{_bindir}/%{name}WrapPython
%{_bindir}/%{name}WrapPythonInit
%{_libdir}/%{name}/*Python*.so.*
%{python_sitearch}/%{name}/
%exclude %{_libdir}/%{name}/*QtPython27D.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}/*Python27D.so.*

%files -n python-%{name}-qt
%defattr(-,root,root,-)
%{_libdir}/%{name}/*QtPython27D.so.*

%files examples -f build/examples.list
%defattr(-,root,root,-)

%changelog
openSUSE Build Service is sponsored by