# # spec file for package vtk # # Copyright (c) 2011 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/ # %define qtdir /%{_lib}/qt4 Name: vtk Version: 5.8.0 # get the first two version numbers Release: 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 License: BSD-3-Clause Summary: The Visualization Toolkit - A high level 3D visualization library Url: http://vtk.org/ Group: Productivity/Scientific/Other 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 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: 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: sqlite3-devel BuildRequires: tcl-devel BuildRequires: tk-devel BuildRequires: xorg-x11-devel BuildRequires: zlib-devel BuildRequires: pkgconfig(libxml-2.0) BuildRoot: %{_tmppath}/%{name}-%{version}-build %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: 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 %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 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 -n python-vtk Summary: Python bindings for VTK Group: System/Libraries Requires: %{name} = %{version} %{py_requires} %description -n python-vtk 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 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 testing Summary: Testing programs for VTK Group: Productivity/Scientific/Other Requires: %{name} = %{version} Requires: vtkdata = %{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 %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 examples Summary: Examples for VTK Group: Productivity/Scientific/Other Requires: %{name} = %{version} Requires: vtkdata = %{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. %prep %setup -q -n VTK %patch0 -p1 %patch1 -p1 %patch2 -p1 %patch3 -p1 # Replace relative path ../../../VTKData with %%{_datadir}/vtkdata-%%{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 . \ -DVTK_USE_QT:BOOL=ON \ -DCMAKE_INSTALL_PREFIX:PATH=%{_prefix} \ -DVTK_INSTALL_LIB_DIR:PATH=/%{_lib}/%{name} \ -DVTK_WRAP_PYTHON:BOOL=ON \ -DVTK_WRAP_TCL:BOOL=ON \ -DVTK_WRAP_JAVA:BOOL=ON \ -DVTK_USE_PARALLEL:BOOL=ON \ -DVTK_USE_RENDERING:BOOL=ON \ -DBUILD_DOCUMENTATION:BOOL=OFF \ -DBUILD_EXAMPLES:BOOL=ON \ -DBUILD_SHARED_LIBS:BOOL=ON \ -DBUILD_TESTING:BOOL=ON \ -DVTK_USE_GUISUPPORT:BOOL=ON \ -DVTK_INSTALL_QT_DIR:STRING=%{qtdir}/plugins/designer \ -DVTK_USE_GL2PS:BOOL=ON \ -DVTK_USE_SYSTEM_EXPAT:BOOL=ON \ -DVTK_USE_SYSTEM_JPEG:BOOL=ON \ -DVTK_USE_SYSTEM_PNG:BOOL=ON \ -DVTK_USE_SYSTEM_TIFF:BOOL=ON \ -DVTK_USE_SYSTEM_ZLIB:BOOL=ON \ -DVTK_USE_SYSTEM_EXPAT:BOOL=ON \ -DVTK_USE_SYSTEM_FREETYPE: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 make DESTDIR=%{buildroot} install mv %{buildroot}%{_libdir}/%{name}/lib*.so* %{buildroot}%{_libdir}/ # Gather list of non-python/tcl libraries ls %{buildroot}%{_libdir}/*.so.* | grep -Ev '(Java|QVTK|Qt|PythonD|TCL)' | sed -e's,^%{buildroot},,' > libs.list # List of executable utilities cat > utils.list << EOF vtkEncodeString vtkWrapHierarchy 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 # 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}/vtk/doc #Move tcl script to %%{_datadir}/tcl/vtk/ mkdir -p %{buildroot}%{_datadir}/tcl/vtk/ mv %{buildroot}%{_libdir}/%{name}/tcl/ %{buildroot}%{_datadir}/tcl/vtk/ 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 tcl -p /sbin/ldconfig %postun tcl -p /sbin/ldconfig %post -n python-vtk -p /sbin/ldconfig %postun -n python-vtk -p /sbin/ldconfig %post java -p /sbin/ldconfig %postun java -p /sbin/ldconfig %post qt -p /sbin/ldconfig %postun qt -p /sbin/ldconfig %files -f main.list %defattr(-,root,root,-) %doc Copyright.txt README.html vtkLogo.jpg vtkBanner.gif Wrapping/*/README* %files devel %defattr(-,root,root,-) %doc Utilities/Upgrading %{_libdir}/%{name}/doxygen %{_includedir}/%{name}-5.8/ %{_libdir}/%{name}/CMake/ %{_libdir}/%{name}/*.cmake %{_libdir}/%{name}/hints %{_libdir}/*.so %files tcl %defattr(-,root,root,-) %doc README.html %doc vtkLogo.jpg %{_bindir}/vtkWrapTcl %{_bindir}/vtkWrapTclInit %{_bindir}/vtk %{_libdir}/libvtk*TCL.so.* %{_datadir}/tcl/vtk/ %files -n python-vtk %defattr(-,root,root,-) %doc README.html %doc vtkLogo.jpg %{python_sitelib}/%{name}/ %{_libdir}/*PythonD.so.* %{_prefix}/lib/python%{py_ver}/site-packages/VTK-%{version}-py%{py_ver}.egg-info %{_bindir}/vtkWrapPython %{_bindir}/vtkWrapPythonInit %{_bindir}/vtkpython %files java %defattr(-,root,root,-) %doc README.html %doc vtkLogo.jpg %dir %{_libdir}/%{name} %{_bindir}/vtkParseJava %{_bindir}/vtkWrapJava %{_libdir}/%{name}/java/ %{_libdir}/*Java.so.* %files testing -f testing.list %defattr(-,root,root,-) %doc README.html %doc vtkLogo.jpg %dir %{_libdir}/%{name} %{_libdir}/%{name}/testing/ %files qt %defattr(-,root,root,-) %{_libdir}/libQVTK.so.* %dir %{_prefix}/%{qtdir}/plugins/designer %{_prefix}/%{qtdir}/plugins/designer/libQVTKWidgetPlugin.so %files examples -f examples.list %defattr(-,root,root,-) %doc README.html %doc vtkLogo.jpg %dir %{_libdir}/%{name} %changelog