Blob Blame Raw
%{!?build_mpi:%define build_mpi 1}
%define pv_maj 3
%define pv_min 2
%define pv_patch 1
%define pv_majmin %{pv_maj}.%{pv_min}

Name:           paraview
Version:        %{pv_majmin}.%{pv_patch}
Release:        4%{?dist}
Summary:        Parallel visualization application

Group:          Applications/Engineering
License:        BSD
URL:            http://www.paraview.org/
Source0:        http://www.paraview.org/files/v%{pv_majmin}/paraview-%{version}.tar.gz
Source1:        paraview_22x22.png
Source2:        paraview.xml
Patch0:         paraview-3.2-qt.patch
Patch1:         paraview-3.2.1-rpath.patch
Patch2:         paraview-3.2.1-install.patch
Patch3:         paraview-3.2.1-doc.patch
Patch4:         paraview-3.2.1-assistant-qt4.patch
Patch5:         paraview-3.2.1-make.patch
Patch6:         paraview-3.2.1-gcc43.patch
BuildRoot:      %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)

BuildRequires:  cmake
%if %{build_mpi}
BuildRequires:  openmpi-devel
%endif
BuildRequires:  qt4-devel, mesa-libOSMesa-devel
BuildRequires:  python-devel, tk-devel, hdf5-devel
BuildRequires:  freetype-devel, libtiff-devel, zlib-devel
BuildRequires:  expat-devel
BuildRequires:  /usr/bin/desktop-file-install
BuildRequires:  doxygen, graphviz
BuildRequires:  readline-devel
Requires:       %{name}-data = %{version}-%{release}
Requires:       qt4-assistant
Requires(post):   /usr/bin/update-desktop-database
Requires(postun): /usr/bin/update-desktop-database
Obsoletes:      paraview-demos <= %{version}-%{release}


%description
ParaView is an application designed with the need to visualize large data
sets in mind. The goals of the ParaView project include the following:

    * Develop an open-source, multi-platform visualization application.
    * Support distributed computation models to process large data sets.
    * Create an open, flexible, and intuitive user interface.
    * Develop an extensible architecture based on open standards.

ParaView runs on distributed and shared memory parallel as well as single
processor systems and has been successfully tested on Windows, Linux and
various Unix workstations and clusters. Under the hood, ParaView uses the
Visualization Toolkit as the data processing and rendering engine and has a
user interface written using a unique blend of Tcl/Tk and C++.

NOTE: This version has NOT been compiled with MPI support.


%if %{build_mpi}
%package        mpi
Summary:        Parallel visualization application
Group:          Applications/Engineering
Requires:       %{name}-data = %{version}-%{release}
Provides:       %{name}
Requires(post):   /usr/bin/update-desktop-database
Requires(postun): /usr/bin/update-desktop-database

%description    mpi
ParaView is an application designed with the need to visualize large data
sets in mind. The goals of the ParaView project include the following:

    * Develop an open-source, multi-platform visualization application.
    * Support distributed computation models to process large data sets.
    * Create an open, flexible, and intuitive user interface.
    * Develop an extensible architecture based on open standards.

ParaView runs on distributed and shared memory parallel as well as single
processor systems and has been successfully tested on Windows, Linux and
various Unix workstations and clusters. Under the hood, ParaView uses the
Visualization Toolkit as the data processing and rendering engine and has a
user interface written using a unique blend of Tcl/Tk and C++.

NOTE: This version has been compiled with OpenMPI support and requires an
operating OpenMPI runtime enviroment.
%endif

%package        data
Summary:        Data files for ParaView
Group:          Applications/Engineering
Requires:       %{name} = %{version}-%{release}
Requires(post):   /usr/bin/update-mime-database
Requires(postun): /usr/bin/update-mime-database

%description    data
%{summary}.


%package        devel
Summary:        Development files for ParaView
Group:          Applications/Engineering
Requires:       %{name} = %{version}-%{release}

%description    devel
%{summary}.


%package        mpi-devel
Summary:        Development files for the mpi version of ParaView
Group:          Applications/Engineering
Requires:       %{name}-mpi = %{version}-%{release}

%description    mpi-devel
%{summary}.


%prep
%setup -q -n ParaView%{version}
%patch -p1 -b .qt
%patch1 -p1 -b .rpath
%patch2 -p1 -b .install
%patch3 -p1 -b .doc
%patch4 -p1 -b .assistant-qt4
%patch5 -p0 -b .make
%patch6 -p1 -b .gcc43


%build
rm -rf fedora fedora-mpi
mkdir fedora
pushd fedora
export CC='gcc'
export CXX='g++'
export MAKE='make'
export CFLAGS="$RPM_OPT_FLAGS"
export CXXFLAGS="$RPM_OPT_FLAGS"
%cmake .. \
        -DPV_INSTALL_LIB_DIR:PATH=/%{_lib}/paraview \
        -DCMAKE_CXX_COMPILER:FILEPATH=$CXX \
        -DCMAKE_C_COMPILER:FILEPATH=$CC \
        -DTCL_LIBRARY:PATH=tcl \
        -DTK_LIBRARY:PATH=tk \
        -DPARAVIEW_ENABLE_PYTHON:BOOL=ON \
        -DPARAVIEW_USE_SYSTEM_HDF5:BOOL=ON \
        -DVTK_OPENGL_HAS_OSMESA:BOOL=ON \
        -DVTK_USE_INFOVIS:BOOL=OFF \
        -DVTK_USE_SYSTEM_EXPAT:BOOL=ON \
        -DVTK_USE_SYSTEM_FREETYPE: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 \
        -DBUILD_DOCUMENTATION:BOOL=ON \
        -DBUILD_EXAMPLES:BOOL=ON
cmake ..
make VERBOSE=1 %{?_smp_mflags}
popd
%if %{build_mpi}
mkdir fedora-mpi
pushd fedora-mpi
export CC='gcc'
export CXX='mpic++'
export MAKE='make'
export CFLAGS="$RPM_OPT_FLAGS"
export CXXFLAGS="$RPM_OPT_FLAGS"
%cmake .. \
        -DPV_INSTALL_LIB_DIR:PATH=/%{_lib}/paraview-mpi \
        -DCMAKE_CXX_COMPILER:FILEPATH=$CXX \
        -DCMAKE_C_COMPILER:FILEPATH=$CC \
        -DTCL_LIBRARY:PATH=tcl \
        -DTK_LIBRARY:PATH=tk \
        -DPARAVIEW_ENABLE_PYTHON:BOOL=ON \
        -DPARAVIEW_USE_SYSTEM_HDF5:BOOL=ON \
        -DICET_BUILD_TESTING:BOOL=ON \
        -DVTK_USE_MPI:BOOL=ON \
        -DMPI_INCLUDE_PATH:PATH="%{_includedir}/openmpi" \
        -DMPI_LIBRARY:STRING="-L%{_libdir}/openmpi" \
        -DVTK_OPENGL_HAS_OSMESA:BOOL=ON \
        -DVTK_USE_INFOVIS:BOOL=OFF \
        -DVTK_USE_SYSTEM_EXPAT:BOOL=ON \
        -DVTK_USE_SYSTEM_FREETYPE: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 \
        -DBUILD_DOCUMENTATION:BOOL=ON \
        -DBUILD_EXAMPLES:BOOL=ON
cmake ..
make VERBOSE=1 %{?_smp_mflags}
%endif

%install
rm -rf $RPM_BUILD_ROOT

#Fix permissions
find . \( -name \*.txt -o -name \*.xml -o -name '*.[ch]' -o -name '*.[ch][px][px]' \) -print0 | xargs -0 chmod -x

# Create some needed directories
install -d $RPM_BUILD_ROOT%{_datadir}/applications
install -d $RPM_BUILD_ROOT%{_datadir}/pixmaps
install -m644 %SOURCE1 $RPM_BUILD_ROOT%{_datadir}/pixmaps
install -d $RPM_BUILD_ROOT%{_datadir}/mime/packages
install -m644 %SOURCE2 $RPM_BUILD_ROOT%{_datadir}/mime/packages

%if %{build_mpi}
# Install mpi version
pushd fedora-mpi
make install DESTDIR=$RPM_BUILD_ROOT

#ld.conf.d file
install -d $RPM_BUILD_ROOT%{_sysconfdir}/ld.so.conf.d
echo %{_libdir}/paraview-mpi > $RPM_BUILD_ROOT%{_sysconfdir}/ld.so.conf.d/paraview-mpi-%{_arch}.conf

#Create desktop file
cat > paraview-mpi.desktop <<EOF
[Desktop Entry]
Encoding=UTF-8
Name=ParaView Viewer MPI
GenericName=Data Viewer
Comment=ParaView allows MPI enabled viewing of large data sets
Type=Application
Terminal=false
Icon=paraview_22x22
MimeType=application/x-paraview;
Categories=Application;Graphics;
Exec=mpirun C paraview-mpi
EOF

desktop-file-install --vendor=fedora \
       --add-category=X-Fedora \
       --dir %{buildroot}%{_datadir}/applications/ \
       paraview-mpi.desktop

popd

#Move the mpi binaries, includes, and man pages out of the way
pushd $RPM_BUILD_ROOT/%{_bindir}
for f in *
do
   mv $f ${f}-mpi
done
popd
mv $RPM_BUILD_ROOT/%{_includedir}/paraview-%{pv_majmin} $RPM_BUILD_ROOT/%{_includedir}/paraview-%{pv_majmin}-mpi
rm -rf $RPM_BUILD_ROOT%{_mandir}

#Remove mpi copy of documentation
rm -rf $RPM_BUID_ROOT%{_datadir}/paraview/Documentation-mpi
rm -rf $RPM_BUID_ROOT%{_libdir}/paraview-mpi/doc
%endif

#Install the normal version
pushd fedora
make install DESTDIR=$RPM_BUILD_ROOT

#ld.conf.d file
install -d $RPM_BUILD_ROOT%{_sysconfdir}/ld.so.conf.d
echo %{_libdir}/paraview > $RPM_BUILD_ROOT%{_sysconfdir}/ld.so.conf.d/paraview-%{_arch}.conf

#Create desktop file
cat > paraview.desktop <<EOF
[Desktop Entry]
Encoding=UTF-8
Name=ParaView Viewer
GenericName=Data Viewer
Comment=ParaView allows viewing of large data sets
Type=Application
Terminal=false
Icon=paraview_22x22
MimeType=application/x-paraview;
Categories=Application;Graphics;
Exec=paraview
EOF

desktop-file-install --vendor=fedora \
       --add-category=X-Fedora \
       --dir %{buildroot}%{_datadir}/applications/ \
       paraview.desktop

popd

#Don't ship the VTK Qt Designer plugin
rm -r $RPM_BUILD_ROOT/usr/plugins


%clean
rm -rf $RPM_BUILD_ROOT


%post
/sbin/ldconfig
update-desktop-database &> /dev/null ||:


%postun
/sbin/ldconfig
update-desktop-database &> /dev/null ||:


%if %{build_mpi}
%post   mpi
/sbin/ldconfig
update-desktop-database &> /dev/null ||:

%postun mpi
/sbin/ldconfig
update-desktop-database &> /dev/null ||:
%endif

%post   data
update-mime-database %{_datadir}/mime &> /dev/null || :

%postun data
update-mime-database %{_datadir}/mime &> /dev/null || :


%files
%defattr(-,root,root,-)
%doc License_v1.1.txt
%{_sysconfdir}/ld.so.conf.d/paraview-%{_arch}.conf
%{_bindir}/paraview
%{_bindir}/pvbatch
%{_bindir}/pvdataserver
%{_bindir}/pvpython
%{_bindir}/pvrenderserver
%{_bindir}/pvserver
%{_bindir}/pvTestDriver
%doc %{_datadir}/paraview/
%{_datadir}/applications/fedora-paraview.desktop
%{_libdir}/paraview/
%exclude %{_libdir}/paraview/doc/


%if %{build_mpi}
%files mpi
%defattr(-,root,root,-)
%doc License_v1.1.txt
%{_sysconfdir}/ld.so.conf.d/paraview-mpi-%{_arch}.conf
%{_bindir}/paraview-mpi
%{_bindir}/pvbatch-mpi
%{_bindir}/pvdataserver-mpi
%{_bindir}/pvpython-mpi
%{_bindir}/pvrenderserver-mpi
%{_bindir}/pvserver-mpi
%{_bindir}/pvTestDriver-mpi
%{_datadir}/applications/fedora-paraview-mpi.desktop
%{_libdir}/paraview-mpi/
%endif


%files data
%defattr(-,root,root,-)
%{_datadir}/pixmaps/paraview_22x22.png
%{_datadir}/mime/packages/paraview.xml


%files devel
%defattr(-,root,root,-)
%{_includedir}/paraview-%{pv_majmin}/
%doc %{_libdir}/paraview/doc/


%files mpi-devel
%defattr(-,root,root,-)
%{_includedir}/paraview-%{pv_majmin}-mpi/


%changelog
* Mon Feb 18 2008 - Orion Poplawski <orion@cora.nwra.com> - 3.2.1-4
- Add patch to compile with gcc 4.3

* Fri Jan 18 2008 - Orion Poplawski <orion@cora.nwra.com> - 3.2.1-3
- Add patch to fix parallel make
- Obsolete demos package (bug #428528)

* Tue Dec 18 2007 - Orion Poplawski <orion@cora.nwra.com> - 3.2.1-2
- Name ld.so.conf.d file with .conf extension
- Drop parallel make for now

* Mon Dec 03 2007 - Orion Poplawski <orion@cora.nwra.com> - 3.2.1-1
- Update to 3.2.1
- Use macros for version numbers
- Add patches to fix documentation install location and use assistant-qt4,
  not install copies of Qt libraries, and not use rpath.
- Install ld.so.conf.d file
- Fixup desktop files

* Thu Aug 23 2007 - Orion Poplawski <orion@cora.nwra.com> - 3.0.2-2
- Update license tag to BSD
- Fix make %%{_smp_mflags}
- Rebuild for ppc32

* Wed Jul 11 2007 - Orion Poplawski <orion@cora.nwra.com> - 3.0.2-1
- Update to 3.0.2
- Turn mpi build back on
- Add devel packages
- Remove demo package no longer in upstream
- Use cmake macros

* Thu Mar 08 2007 - Orion Poplawski <orion@cora.nwra.com> - 2.4.4-6
- Don't build mpi version until upstream fixes the build system

* Fri Dec 22 2006 - Orion Poplawski <orion@cora.nwra.com> - 2.4.4-5
- Fix .so permissions
- Patch for const issue
- Patch for new cmake
- Build with openmpi

* Thu Dec 14 2006 - Jef Spaleta <jspaleta@gmail.com> - 2.4.4-4
- Bump and build for python 2.5

* Fri Oct  6 2006 - Orion Poplawski <orion@cora.nwra.com> - 2.4.4-3
- Install needed python libraries to get around make install bug

* Wed Oct  4 2006 - Orion Poplawski <orion@cora.nwra.com> - 2.4.4-2
- Re-enable OSMESA support for FC6
- Enable python wrapping

* Fri Sep 15 2006 - Orion Poplawski <orion@cora.nwra.com> - 2.4.4-1
- Update to 2.4.4

* Thu Jun 29 2006 - Orion Poplawski <orion@cora.nwra.com> - 2.4.3-8
- No OSMesa support in FC5
- Make data sub-package pull in main package (bug #193837)
- A patch from CVS to fix vtkXOpenRenderWindow.cxx
- Need lam-devel for FC6

* Fri Apr 21 2006 - Orion Poplawski <orion@cora.nwra.com> - 2.4.3-7
- Re-enable ppc

* Mon Apr 17 2006 - Orion Poplawski <orion@cora.nwra.com> - 2.4.3-6
- Exclude ppc due to gcc bug #189160

* Wed Apr 12 2006 - Orion Poplawski <orion@cora.nwra.com> - 2.4.3-5
- Cleanup permissions

* Mon Apr 10 2006 - Orion Poplawski <orion@cora.nwra.com> - 2.4.3-4
- Add icon and cleanup desktop file

* Mon Apr 10 2006 - Orion Poplawski <orion@cora.nwra.com> - 2.4.3-3
- Add VTK_USE_MANGLE_MESA for off screen rendering
- Cleanup source permisions
- Add an initial .desktop file
- Make requirement on -data specific to version
- Don't package Ice-T man pages and cmake files

* Thu Apr  6 2006 - Orion Poplawski <orion@cora.nwra.com> - 2.4.3-2
- Add mpi version

* Tue Apr  4 2006 - Orion Poplawski <orion@cora.nwra.com> - 2.4.3-1
- Initial Fedora Extras version