%define lib_ver 5.0 %define qtdir %{_libdir}/qt3 Name: vtk Summary: The Visualization Toolkit - A high level 3D visualization library Version: %{lib_ver}.4 Release: 2 Packager: Werner Hoch License: BSD Group: System Environment/Libraries Source: http://www.vtk.org/files/release/5.0/vtk-%{version}.tar.bz2 Source1: http://www.vtk.org/files/release/5.0/vtkdata-%{version}.tar.bz2 Patch0: vtk-5.0.0-pythondestdir.patch Patch1: vtk-5.0.4-gcc43.patch URL: http://www.vtk.org Buildroot: %{_tmppath}/%{name}-%{version}-%{release}-root BuildRequires: cmake, tcl-devel, tk-devel, qt3-devel, python-devel BuildRequires: expat, libjpeg-devel, libpng-devel, freetype2-devel BuildRequires: libtiff-devel, zlib-devel, doxygen, graphviz # tar-1.14.90+ uses --strip-components option BuildRequires: tar > 1.14.90 BuildRequires: chrpath %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}, vtk-data = %{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}, vtk-data = %{version} Group: Applications/Engineering %description testing-progs Testing programs for VTK %package data Summary: Data for VTK Requires: vtk = %{version} Group: Development/Libraries %description data Example data file for VTK %package doc Summary: Documentation for VTK Requires: vtk = %{version} Group: Development/Libraries %description doc This package contains the doxygen-generated documentation from the VTK source %prep %setup -n VTK -q %patch0 -p1 %patch1 -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}-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} \ -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=ON \ -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} cd Utilities/Doxygen make DoxygenDoc %install rm -rf $RPM_BUILD_ROOT make install if [ "%{_lib}" != lib -a "`ls $RPM_BUILD_ROOT%{_prefix}/lib/*`" != "" ]; then mkdir -p $RPM_BUILD_ROOT%{_libdir} mv $RPM_BUILD_ROOT%{_prefix}/%{_lib}/* $RPM_BUILD_ROOT%{_libdir}/ fi mv $RPM_BUILD_ROOT%{_prefix}/local/%{_lib}/python* $RPM_BUILD_ROOT%{_libdir}/ # install doc install -d -m 755 $RPM_BUILD_ROOT%{_datadir}/%{name}-docs cp -a Utilities/Doxygen/doc/html $RPM_BUILD_ROOT%{_datadir}/%{name}-docs/api # 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} # install data install -d $RPM_BUILD_ROOT%{_datadir}/%{name}-data tar -xjvf %{SOURCE1} --strip-components 1 \ -C $RPM_BUILD_ROOT%{_datadir}/%{name}-data # fix permissions and wrong eol encoding find $RPM_BUILD_ROOT%{_datadir}/%{name}-data -type f | xargs chmod 644 sed -i 's/\r//' $RPM_BUILD_ROOT%{_datadir}/%{name}-data/Data/usa.vtk 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 # 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 # set correct execution bit on libs, so they are processed by # find-debuginfo find $RPM_BUILD_ROOT%{_libdir} -type f -name \*.so\* | xargs chmod +x # Make shared libs and scripts executable chmod a+x $RPM_BUILD_ROOT%{_libdir}/lib*.so.* chmod a+x $RPM_BUILD_ROOT%{_libdir}/vtk-5.0/doxygen/*.pl chmod a+x $RPM_BUILD_ROOT%{_libdir}/vtk-5.0/testing/*.{py,tcl} # Remove exec bit from not-scripts for file in `find $RPM_BUILD_ROOT Utilities/Upgrading -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}/* %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.* %doc README.html %doc vtkLogo.jpg %doc Copyright.txt %files devel %defattr(-,root,root) %dir %{_libdir}/vtk-%{lib_ver}/CMake %dir %{_libdir}/vtk-%{lib_ver}/doxygen %{_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 %doc README.html %doc vtkLogo.jpg %doc Utilities/Upgrading/*.txt %doc Utilities/Upgrading/*.pdf %doc Utilities/Upgrading/*.cmake %doc %{_libdir}/vtk-%{lib_ver}/doxygen/* %files testing-progs -f testing-progs-list %defattr(-,root,root,-) %doc README.html %doc vtkLogo.jpg %files tcl %defattr(-,root,root,-) %dir %{_libdir}/vtk-%{lib_ver}/testing %{_bindir}/vtkWrapTcl %{_bindir}/vtkWrapTclInit %{_libdir}/libvtk*TCL.so.* %{_bindir}/vtk %{_libdir}/vtk-%{lib_ver}/tcl %{_libdir}/vtk-%{lib_ver}/testing/*.tcl %{_libdir}/vtk-%{lib_ver}/pkgIndex.tcl %doc README.html %doc vtkLogo.jpg %files python %defattr(-,root,root,-) %{_bindir}/vtkWrapPython %{_bindir}/vtkWrapPythonInit %{_bindir}/vtkpython %{_libdir}/libvtk*Python*.so.* %{_libdir}/python*/site-packages/* %{_libdir}/vtk-%{lib_ver}/testing/*.py* %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 %files data %defattr(-,root,root,-) %{_datadir}/%{name}-data %files doc %defattr(-,root,root,-) %{_datadir}/%{name}-docs %clean rm -rf $RPM_BUILD_ROOT %changelog * 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