# # spec file for package vtk # # Copyright (c) 2012 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: 5.8.0 Release: 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/5.8/%{name}-%{version}.tar.gz # PATCH-FIX-UPSTREAM vtk-pythondestdir.patch --badshah400@gmail.com Correct installation destination for python libraries Patch0: vtk-pythondestdir.patch # PATCH-FIX-UPSTREAM vtk-system.patch --badshah400@gmail.com Use system libraries # http://public.kitware.com/Bug/view.php?id=11823 Patch1: vtk-system.patch # PATCH-FIX-UPSTREAM vtk-sqldatabaseschema.patch --badshah400@gmail.com Resolve problems with vtkSQLdatabaseschema.cxx, patch came from upstream Patch2: vtk-sqldatabaseschema.patch # patch to fix the soname for libVTKnetcdf_cxx Patch3: vtk-soversion2.patch # PATCH-FIX-UPSTREAM vtk-boost149.patch idoenmez@suse.de -- Fix compilation with boost 1.49 Patch4: vtk-boost149.patch BuildRequires: Mesa-devel BuildRequires: MesaGLw-devel BuildRequires: boost-devel BuildRequires: chrpath BuildRequires: cmake BuildRequires: doxygen BuildRequires: fdupes BuildRequires: freeglut-devel BuildRequires: freetype2-devel BuildRequires: gcc-c++ BuildRequires: gcc-java BuildRequires: gnuplot BuildRequires: graphviz BuildRequires: java-devel BuildRequires: libQtWebKit-devel BuildRequires: libexpat-devel BuildRequires: libgcj-devel BuildRequires: libiodbc-devel BuildRequires: libjpeg-devel BuildRequires: libmysqlclient-devel BuildRequires: libpng-devel BuildRequires: libqt4-devel BuildRequires: libtheora-devel BuildRequires: libtiff-devel BuildRequires: openmotif-devel BuildRequires: postgresql-devel BuildRequires: python-devel BuildRequires: python-qt4-devel BuildRequires: sqlite3-devel BuildRequires: tcl-devel BuildRequires: tk-devel BuildRequires: wget BuildRequires: xorg-x11-devel BuildRequires: zlib-devel BuildRequires: pkgconfig(libxml-2.0) 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-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: postgresql-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 %patch0 -p1 %patch1 -p1 %patch2 -p1 %patch3 -p1 %patch4 -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 CC='gcc' export CXX='g++' export MAKE='make' export CFLAGS="%{optflags}" export CXXFLAGS="%{optflags}" cmake . \ -DBUILD_DOCUMENTATION:BOOL=ON \ -DBUILD_EXAMPLES:BOOL=ON \ -DBUILD_SHARED_LIBS:BOOL=ON \ -DBUILD_TESTING:BOOL=ON \ -DCMAKE_INSTALL_PREFIX:PATH=%{_prefix} \ -DSIP_INCLUDE_DIR:Path=%{py_incdir} \ -DVTK_INSTALL_LIB_DIR:PATH=/%{_lib}/%{name}\ -DVTK_INSTALL_QT_DIR:STRING=/%{qtdir}/plugins/designer \ -DVTK_USE_GL2PS:BOOL=ON \ -DVTK_USE_GUISUPPORT:BOOL=ON \ -DVTK_USE_MYSQL:BOOL=ON \ -DVTK_USE_OGGTHEORA_ENCODER:BOOL=ON \ -DVTK_USE_ODBC:BOOL=ON \ -DVTK_USE_PARALLEL:BOOL=ON \ -DVTK_USE_PARALLEL_BGL:BOOL=ON \ -DVTK_USE_QT:BOOL=ON \ -DVTK_USE_QVTK_QTOPENGL:BOOL=ON \ -DVTK_USE_RENDERING:BOOL=ON \ -DVTK_USE_SYSTEM_EXPAT:BOOL=ON \ -DVTK_USE_SYSTEM_FREETYPE:BOOL=ON \ -DVTK_USE_SYSTEM_OGGTHEORA:BOOL=ON \ -DVTK_USE_SYSTEM_JPEG:BOOL=ON \ -DVTK_USE_SYSTEM_LIBXML2:BOOL=ON \ -DVTK_USE_SYSTEM_PNG:BOOL=ON \ -DVTK_USE_SYSTEM_TIFF:BOOL=ON \ -DVTK_USE_SYSTEM_ZLIB:BOOL=ON \ -DVTK_WRAP_JAVA:BOOL=ON \ -DVTK_WRAP_PYTHON:BOOL=ON \ -DVTK_WRAP_PYTHON_SIP:BOOL=ON \ -DVTK_WRAP_TCL:BOOL=ON \ -DVTK_USE_BOOST:BOOL=ON \ -DVTK_USE_TEXT_ANALYSIS:BOOL=ON make %{?_smp_mflags} # 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 %install %makeinstall # link the directories to %%{_libdir}. Moving them breaks the cmake macros. echo `ls %{buildroot}%{_libdir}/%{name}/*.so*` echo `ls %{buildroot}%{_libdir}/%{name}/*.so* | sed -e's,^%{buildroot}%{_libdir}/,,'` ls %{buildroot}%{_libdir}/%{name}/*.so* | sed -e's,^%{buildroot}%{_libdir}/,,' | xargs ln -st %{buildroot}%{_libdir} # Gather list of non-binding libraries ls %{buildroot}%{_libdir}/lib*.so.* \ %{buildroot}%{_libdir}/%{name}/lib*.so.* | grep -Ev '(Java|QVTK|Qt|Python|TCL)' | sed -e's,^%{buildroot},,' > libs.list # Gather list of devel libraries ls %{buildroot}%{_libdir}/*.so \ %{buildroot}%{_libdir}/%{name}/*.so | sed -e's,^%{buildroot},,' > devel.list # List of executable utilities cat > utils.list << EOF %{name}EncodeString %{name}WrapHierarchy lproj EOF # List of executable examples cat > examples.list << EOF HierarchicalBoxPipeline MultiBlock Arrays Cube RGrid SGrid Medical1 Medical2 Medical3 finance AmbientSpheres Cylinder DiffuseSpheres SpecularSpheres Cone Cone2 Cone3 Cone4 Cone5 Cone6 EOF # List of executable test binaries cat > testing.list << EOF CommonCxxTests TestCxxFeatures TestInstantiator FilteringCxxTests GraphicsCxxTests GenericFilteringCxxTests ImagingCxxTests IOCxxTests RenderingCxxTests VTKBenchMark VolumeRenderingCxxTests WidgetsCxxTests SocketClient SocketServer EOF # List of devel utilities and files cat > utils.list << EOF %{name}EncodeString %{name}WrapHierarchy lproj EOF # Install utils/examples/testing, too for filelist in utils.list examples.list testing.list; do for file in `cat $filelist`; do install -p bin/$file %{buildroot}%{_bindir} done perl -pi -e's,^,%{_bindir}/,' $filelist done # Remove any remnants of rpaths chrpath -d %{buildroot}%{_bindir}/* # Main package contains utils and core libs cat libs.list utils.list > main.list # Make shared libs and scripts executable chmod a+x %{buildroot}%{_libdir}/%{name}/doxygen/*.pl chmod a+x %{buildroot}%{_libdir}/%{name}/testing/*.{py,tcl} # Remove exec bit from non-scripts and %%doc for file in `find %{buildroot} -type f -perm 0755 | xargs -r file | grep ASCII | awk -F: '{print $1}'`; do head -1 $file | grep '^#!' > /dev/null && continue chmod 0644 $file done find Utilities/Upgrading -type f | xargs chmod -x # Verdict places the docs in the false folder rm -rf %{buildroot}%{_libdir}/%{name}/doc #Move tcl script to %%{_datadir}/tcl/%%{name}/ mkdir -p %{buildroot}%{_datadir}/tcl/%{name}/ mv %{buildroot}%{_libdir}/%{name}/tcl/ %{buildroot}%{_datadir}/tcl/%{name}/ mv %{buildroot}%{_libdir}/%{name}/*.tcl %{buildroot}%{_datadir}/tcl/%{name}/ %fdupes -s %{buildroot} %clean rm -rf %{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 main.list %defattr(-,root,root,-) %doc Copyright.txt README.html %{name}Logo.jpg %{name}Banner.gif Wrapping/*/README* %dir %{_libdir}/%{name}/ %files devel -f devel.list %defattr(-,root,root,-) %doc Utilities/Upgrading %{_libdir}/%{name}/*.cmake %{_libdir}/%{name}/doxygen/ %{_libdir}/%{name}/CMake/ %{_libdir}/%{name}/hints/ %{_includedir}/%{name}-5.8/ %files java %defattr(-,root,root,-) %{_bindir}/%{name}ParseJava %{_bindir}/%{name}WrapJava %{_libdir}/*Java.so.* %{_libdir}/%{name}/*Java.so.* %{_libdir}/%{name}/java/ %files -n python-%{name} %defattr(-,root,root,-) %{_bindir}/%{name}python %{_bindir}/%{name}WrapPython %{_bindir}/%{name}WrapPythonInit %{_libdir}/libvtkPythonCore.so.* %{_libdir}/libvtkRenderingPythonTkWidgets.so.* %{_libdir}/*PythonD.so.* %{_libdir}/%{name}/libvtkPythonCore.so.* %{_libdir}/%{name}/libvtkRenderingPythonTkWidgets.so.* %{_libdir}/%{name}/*PythonD.so.* %{python_sitelib}/VTK-%{version}-py%{py_ver}.egg-info %{python_sitelib}/%{name}/ %exclude %{python_sitelib}/%{name}/QVTKPython.so %exclude %{python_sitelib}/%{name}/*PythonSIP.so %files -n python-%{name}-qt %defattr(-,root,root,-) %{python_sitelib}/%{name}/QVTKPython.so %{python_sitelib}/%{name}/*PythonSIP.so %files qt %defattr(-,root,root,-) %{_libdir}/libQVTK.so.* %{_libdir}/%{name}/libQVTK.so.* %dir %{_prefix}/%{qtdir}/plugins/designer %{_prefix}/%{qtdir}/plugins/designer/libQVTKWidgetPlugin.so %files tcl %defattr(-,root,root,-) %{_bindir}/%{name} %{_bindir}/%{name}WrapTcl %{_bindir}/%{name}WrapTclInit %{_datadir}/tcl/%{name}/ %{_libdir}/lib%{name}*TCL.so.* %{_libdir}/%{name}/lib%{name}*TCL.so.* %files examples -f examples.list %defattr(-,root,root,-) %files testing -f testing.list %defattr(-,root,root,-) %{_libdir}/%{name}/testing/ %changelog