%define lib_ver 5.2 %define qtdir %{_libdir}/qt3 Name: vtk Summary: The Visualization Toolkit - A high level 3D visualization library Version: %{lib_ver}.1 Release: 1 Packager: Werner Hoch License: BSD Group: System Environment/Libraries URL: http://www.vtk.org Source: vtk-%{version}.tar.bz2 Patch0: vtk-5.2.1-pythondestdir.patch Buildroot: %{_tmppath}/%{name}-%{version}-%{release}-root BuildRequires: cmake, tcl-devel, tk-devel, qt3-devel, python-devel BuildRequires: libexpat-devel, libjpeg-devel, libpng-devel, freetype2-devel BuildRequires: libtiff-devel, zlib-devel BuildRequires: doxygen, graphviz, gnuplot # tar-1.14.90+ uses --strip-components option BuildRequires: tar > 1.14.90 BuildRequires: chrpath %if 0%{?suse_version} >= 1110 BuildRequires: freeglut-devel %endif %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 Requires: vtk = %{version} Group: Development/Libraries %description devel 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 Requires: vtk = %{version} Group: System Environment/Libraries %description tcl tcl bindings for VTK %package python Summary: Python bindings for VTK Requires: vtk = %{version} Group: System Environment/Libraries %description python python bindings for VTK %package qt Summary: QT VTK widget Requires: vtk = %{version} Requires: qt3 Group: Development/Libraries %description qt Qt VTK widget %package examples Summary: Examples for VTK Requires: vtk = %{version}, vtkdata = %{version} Group: Applications/Engineering %description examples 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-progs Summary: Testing programs for VTK Requires: %{name} = %{version}, vtkdata = %{version} Group: Applications/Engineering %description testing-progs Testing programs for VTK %prep %setup -n VTK -q %patch0 -p1 # Replace relative path ../../../VTKData with %{_datadir}/vtkdata # otherwise it will break on symlinks. grep -rl '\.\./\.\./\.\./\.\./VTKData' . | xargs \ perl -pi -e's,\.\./\.\./\.\./\.\./VTKData,%{_datadir}/%{name}data,g' %build cmake . \ -DDESIRED_QT_VERSION=3 \ -DCMAKE_C_FLAGS:STRING="$RPM_OPT_FLAGS" \ -DCMAKE_CXX_FLAGS:STRING="$RPM_OPT_FLAGS" \ -DCMAKE_INSTALL_PREFIX:PATH=$RPM_BUILD_ROOT \ -DVTK_INSTALL_BIN_DIR:PATH=%{_bindir} \ -DVTK_INSTALL_INCLUDE_DIR:PATH=%{_includedir}/%{name} \ -DVTK_INSTALL_LIB_DIR:PATH=%{_libdir} \ -DVTK_DATA_ROOT:PATH=%{_datadir}/%{name}-data \ -DVTK_WRAP_PYTHON:BOOL=ON \ -DVTK_WRAP_TCL: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_USE_QVTK:BOOL=ON \ -DVTK_INSTALL_QT_DIR:STRING=%{qtdir}/plugins/designer \ -DVTK_LEGACY_REMOVE:BOOL=ON \ -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 \ -DVTK_HAVE_GETSOCKNAME_WITH_SOCKLEN_T:INTERNAL=1 make %{_smp_mflags} %install make install # python stuff is installed in the wrong directory /usr/local # http://www.vtk.org/Bug/view.php?id=4010 mv $RPM_BUILD_ROOT%{_prefix}/local/%{_lib}/python* $RPM_BUILD_ROOT%{_libdir}/ # install testing-progs and examples find bin -type f | egrep -v '\.' > bin-progs-list install -d $RPM_BUILD_ROOT%{_bindir} install -m 755 `cat bin-progs-list` $RPM_BUILD_ROOT%{_bindir} # generate the package testing-progs lists and store them in file-lists echo "%defattr (-, root, root)" > testing-progs-list find $RPM_BUILD_ROOT%{_bindir} -type f | \ sed -e "s#^$RPM_BUILD_ROOT##" | \ egrep -v '^%{_bindir}/(qt.*|vtk|pvtk|vtkWrap.*|vtkpython|pvtkpython)$'\ >> testing-progs-list # examples and testing files for d in Common Filtering GenericFiltering Graphics Hybrid IO \ Imaging Parallel Rendering VolumeRendering Widgets do install -d $RPM_BUILD_ROOT%{_datadir}/%{name}-examples/Testing/$d cp -a $d/Testing/* \ $RPM_BUILD_ROOT%{_datadir}/%{name}-examples/Testing/$d done cp -a Examples $RPM_BUILD_ROOT%{_datadir}/%{name}-examples # get rid of unwanted files find $RPM_BUILD_ROOT%{_datadir}/%{name}-examples \ -name "*.o" -exec rm {} ';' -o \ -name CMakeCache.txt -exec rm {} ';' -o \ -name Makefile -exec rm {} ';' -o \ -name DartTestfile.txt -exec rm {} ';' -o \ -name .NoDartCoverage -exec rm {} ';' -o \ -name "cmake.*" -exec rm {} ';' -o \ -name "cmake_install.*" -exec rm {} ';' -o \ -name "*.pyc" -exec rm {} ';' -o \ -name "*.pyo" -exec rm {} ';' find $RPM_BUILD_ROOT%{_datadir}/%{name}-examples \ -type d -name CVS | xargs rm -rf find $RPM_BUILD_ROOT%{_datadir}/%{name}-examples \ -name "CMake*" | xargs rm -rf # cmake install -d $RPM_BUILD_ROOT/%{_libdir}/vtk-%{lib_ver} mv $RPM_BUILD_ROOT/%{_libdir}/*.cmake $RPM_BUILD_ROOT/%{_libdir}/vtk-%{lib_ver} mv $RPM_BUILD_ROOT/%{_libdir}/CMake $RPM_BUILD_ROOT/%{_libdir}/vtk-%{lib_ver} mv $RPM_BUILD_ROOT/%{_libdir}/hints $RPM_BUILD_ROOT/%{_libdir}/vtk-%{lib_ver} # make scripts executable chmod a+x $RPM_BUILD_ROOT%{_libdir}/testing/*.{py,tcl} # fix tcl stuff install -d $RPM_BUILD_ROOT/usr/share/tcl/vtk-%{lib_ver}/testing mv $RPM_BUILD_ROOT/%{_libdir}/pkgIndex.tcl $RPM_BUILD_ROOT/usr/share/tcl/vtk-%{lib_ver} mv $RPM_BUILD_ROOT/%{_libdir}/tcl/* $RPM_BUILD_ROOT/usr/share/tcl/vtk-%{lib_ver} mv $RPM_BUILD_ROOT/%{_libdir}/testing/*.tcl $RPM_BUILD_ROOT/usr/share/tcl/vtk-%{lib_ver}/testing #python testing files --> remove them rm -rf $RPM_BUILD_ROOT/%{_libdir}/testing # remove doxygen scripts and verdict docs rm -rf $RPM_BUILD_ROOT/%{_libdir}/doxygen rm -rf $RPM_BUILD_ROOT/%{_libdir}/doc # Remove exec bit from not-scripts chmod 0644 Utilities/Upgrading/*.pdf chmod 0644 Utilities/Upgrading/*.txt for file in `find $RPM_BUILD_ROOT -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 # drop empty files find $RPM_BUILD_ROOT -size 0 | xargs rm -f # Remove any remnants of rpaths chrpath -d $RPM_BUILD_ROOT%{_bindir}/* # make doc-dirs for dir in vtk vtk-devel vtk-tcl vtk-testing-progs vtk-python; do install -d $RPM_BUILD_ROOT/%{_docdir}/"$dir" done %clean rm -rf $RPM_BUILD_ROOT %post -p /sbin/ldconfig %post tcl -p /sbin/ldconfig %post python -p /sbin/ldconfig %post qt -p /sbin/ldconfig %postun -p /sbin/ldconfig %postun tcl -p /sbin/ldconfig %postun python -p /sbin/ldconfig %postun qt -p /sbin/ldconfig %files %defattr(-,root,root) %{_libdir}/libvtkCommon.so.* %{_libdir}/libvtkFiltering.so.* %{_libdir}/libvtkGenericFiltering.so.* %{_libdir}/libvtkGraphics.so.* %{_libdir}/libvtkHybrid.so.* %{_libdir}/libvtkImaging.so.* %{_libdir}/libvtkIO.so.* %{_libdir}/libvtkParallel.so.* %{_libdir}/libvtkRendering.so.* %{_libdir}/libvtkftgl.so.* %{_libdir}/libvtkDICOMParser.so.* %{_libdir}/libvtkVolumeRendering.so.* %{_libdir}/libvtksys.so.* %{_libdir}/libvtkWidgets.so.* %{_libdir}/libvtkNetCDF.so.* %{_libdir}/libvtkexoIIc.so.* %{_libdir}/libvtkInfovis.so.* %{_libdir}/libvtkViews.so.* %{_libdir}/libvtklibxml2.so.* %{_libdir}/libvtkmetaio.so.* %{_libdir}/libvtksqlite.so.* %{_libdir}/libvtkverdict.so.* %doc README.html %doc vtkLogo.jpg %doc Copyright.txt %files devel %defattr(-,root,root,-) %dir %{_libdir}/vtk-%{lib_ver}/CMake %{_includedir}/* %{_libdir}/vtk-%{lib_ver}/CMake/* %{_libdir}/vtk-%{lib_ver}/*.cmake %{_libdir}/vtk-%{lib_ver}/hints %{_libdir}/libvtkCommon.so %{_libdir}/libvtkFiltering.so %{_libdir}/libvtkGenericFiltering.so %{_libdir}/libvtkGraphics.so %{_libdir}/libvtkHybrid.so %{_libdir}/libvtkImaging.so %{_libdir}/libvtkIO.so %{_libdir}/libvtkParallel.so %{_libdir}/libvtkRendering.so %{_libdir}/libvtkftgl.so %{_libdir}/libvtkDICOMParser.so %{_libdir}/libvtkVolumeRendering.so %{_libdir}/libvtksys.so %{_libdir}/libvtkWidgets.so %{_libdir}/libvtkNetCDF.so %{_libdir}/libvtkexoIIc.so %{_libdir}/libvtk*TCL.so %{_libdir}/libvtk*Python*.so %{_libdir}/libQVTK.so %{_libdir}/libvtkInfovis.so %{_libdir}/libvtkViews.so %{_libdir}/libvtklibxml2.so %{_libdir}/libvtkmetaio.so %{_libdir}/libvtksqlite.so %{_libdir}/libvtkverdict.so %doc README.html %doc vtkLogo.jpg %defattr(0644,root,root,-) %doc Utilities/Upgrading/*.txt %doc Utilities/Upgrading/*.pdf %doc Utilities/Upgrading/*.cmake %files testing-progs -f testing-progs-list %defattr(-,root,root,-) %doc README.html %doc vtkLogo.jpg %files tcl %defattr(-,root,root,-) %{_bindir}/vtkWrapTcl %{_bindir}/vtkWrapTclInit %{_bindir}/vtk %{_libdir}/libvtk*TCL.so.* %{_datadir}/tcl %doc README.html %doc vtkLogo.jpg %files python %defattr(-,root,root,-) %{_bindir}/vtkWrapPython %{_bindir}/vtkWrapPythonInit %{_bindir}/vtkpython %{_libdir}/libvtk*Python*.so.* %{py_sitedir}/* %doc README.html %doc vtkLogo.jpg %files qt %defattr(-,root,root,-) %{_libdir}/libQVTK.so.* %{_bindir}/qtevents %{_bindir}/qtimageviewer %{_bindir}/qtsimpleview %{qtdir}/plugins/designer/libQVTKWidgetPlugin.so %files examples %defattr(-,root,root,-) %{_datadir}/%{name}-examples %changelog * Sat Jan 03 2009 Werner Hoch - 5.2.1 - removed vtk-data - removed vtk-doc (doxygen) - new version 5.2.1 - build fixes for openSUSE 11.1 * Sat Aug 09 2008 Werner Hoch - 5.0.4 - switched to the specfile from Jaroslaw Zachwieja http://www2.warwick.ac.uk/fac/sci/csc/people/computingstaff/jaroslaw_zachwieja/vtk/ - use qt3 instead of qt4 * Thu Jul 18 2008 Werner Hoch - 5.0.4 - specfile taken from fedora core 9 and adapted to opensuse