From a24724a92f779cfd2ae8194505bf108544b67bf1 Mon Sep 17 00:00:00 2001 From: Dmitrij S. Kryzhevich Date: Apr 17 2013 08:08:25 +0000 Subject: MPI support --- diff --git a/mathgl.spec b/mathgl.spec index 57029a4..8348b08 100644 --- a/mathgl.spec +++ b/mathgl.spec @@ -1,36 +1,39 @@ -Name: mathgl -Version: 2.1.2 -Release: 2%{?dist} -Summary: Cross-platform library for making high-quality scientific graphics -Summary(de): Plattformübergreifende Bibliothek für hochwertige wissenschaftliche Graphiken -Summary(ru): MathGL - это библиотека для осуществления высококачественной визуализации данных -License: GPLv2+ -Group: Development/Libraries -Url: http://mathgl.sourceforge.net -Source0: http://downloads.sourceforge.net/%{name}/%{name}-%{version}.tar.gz +Name: mathgl +Version: 2.1.2 +Release: 3%{?dist} +Summary: Cross-platform library for making high-quality scientific graphics +Summary(de): Plattformübergreifende Bibliothek für hochwertige wissenschaftliche Graphiken +Summary(ru): Библиотека для осуществления высококачественной визуализации данных +License: GPLv2+ +Group: Development/Libraries +Url: http://mathgl.sourceforge.net +Source0: http://downloads.sourceforge.net/%{name}/%{name}-%{version}.tar.gz #Mathgl's enable all tries to use hdf4 and 5 at the same time -Patch0: mathgl-no-hdf4-and-hdf5-simultaneously.patch +Patch0: mathgl-no-hdf4-and-hdf5-simultaneously.patch #CMake looks for "FLUID" - the fltk UI designer. #This is not needed - instruct cmake to skip it at build time -Patch1: mathgl-fltk-skip-fluid.patch +Patch1: mathgl-fltk-skip-fluid.patch #Mathgl hardcodes the libdir as lib, then puts it in a var. # we will simply pass it as an arg to cmake. -Patch2: mathgl-disable-lib-installdir.patch +Patch2: mathgl-disable-lib-installdir.patch #Fix segfault due to overflow when initalising textures -Patch3: mathgl-fix-overflow.patch +Patch3: mathgl-fix-overflow.patch # Fix udav.desktop: Encoding and Icon keys -Patch4: mathgl-2.1.2-udav_desktop.patch +Patch4: mathgl-2.1.2-udav_desktop.patch -BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) +BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) + +Requires: %{name}-common = %{version}-%{release} # mandatory packages BuildRequires: gsl-devel libpng-devel BuildRequires: desktop-file-utils +BuildRequires: cmake # optional packages BuildRequires: freeglut-devel hdf-devel hdf5-static libjpeg-devel libtiff-devel fltk-devel qt4-devel @@ -39,7 +42,6 @@ BuildRequires: libharu-devel BuildRequires: swig octave-devel BuildRequires: libXmu-devel BuildRequires: python2-devel numpy -BuildRequires: cmake Requires(post): info @@ -60,34 +62,35 @@ Mathgl - это кроссплатформенная библиотека для использована в FLTK, Qt и OpenGL приложениях. %package devel -Summary: Libraries and header files for %{name} library -Group: Development/Libraries -Requires: %{name} = %{version}-%{release} -Requires: gsl-devel +Summary: Libraries and header files for %{name} library +Summary(ru): Библиотеки и файлы заголовков для %{name} +Group: Development/Libraries +Requires: %{name} = %{version}-%{release} +Requires: gsl-devel %description devel The %{name}-devel package contains libraries and header files for -developing applications that use %{name}. +developing applications that use serial version of %{name}. %description devel -l ru -Пакет %{name}-devel содержит библиотеки и файлы заголовков необходимые -для разработки приложений с использованием %{name}. +Пакет %{name}-devel содержит библиотеки и файлы заголовков, необходимые +для разработки приложений с использованием однопоточной версии %{name}. %package doc -Group: Documentation -Summary: HTML documentation and tutorial for the %{name} applications -BuildArch: noarch -BuildRequires: texi2html texinfo-tex +Group: Documentation +Summary: HTML documentation and tutorial for the %{name} applications +BuildArch: noarch +BuildRequires: texi2html texinfo-tex %description doc -This package contains the documentation in the HTML format of the %{name} +This package contains the documentation in the HTML and PDF format of the %{name} package. %package -n udav -Summary: UDAV viewer and editor for mathgl graphs -Summary(ru): UDAV - редактор и средство визуализации для MathGL -Group: Applications/Engineering -Requires: %{name} = %{version}-%{release} +Summary: Viewer and editor for mathgl graphs +Summary(ru): Редактор и средство визуализации для MathGL +Group: Applications/Engineering +Requires: %{name} = %{version}-%{release} %description -n udav UDAV is cross-platform program for interactive data array visualization @@ -100,15 +103,59 @@ UDAV - это кроссплатформенное приложение для � данных с применением библиотеки MathGL. UDAV, как GUI для MathGL, может быть использован для формирования различного вида научных иллюстраций. +%package common +Summary: Common files for %{name} +Group: Applications/Engineering +Requires: %{name} = %{version}-%{release} + +%description common +%{summary}. + +%package openmpi +Summary: OpenMPI version of %{name} library +Group: Applications/Engineering +BuildRequires: openmpi-devel +Requires: openmpi +Requires: %{name}-common = %{version}-%{release} + +%description openmpi +%{summary}. + +%package openmpi-devel +Summary: Devel files for OpenMPI version of %{name} library +Group: Applications/Engineering +Requires: %{name}-openmpi%{_isa} = %{version}-%{release} + +%description openmpi-devel +%{summary}. + +%package mpich2 +Summary: MPICH2 version of %{name} library +Group: Applications/Engineering +BuildRequires: mpich2-devel +Requires: mpich2 +Requires: %{name}-common = %{version}-%{release} + +%description mpich2 +%{summary}. + +%package mpich2-devel +Summary: Devel files for MPICH2 version of %{name} library +Group: Applications/Engineering +Requires: %{name}-mpich2%{_isa} = %{version}-%{release} + +%description mpich2-devel +%{summary}. + %prep %setup -q #convert EOL encodings, maintaining timestames for file in AUTHORS ChangeLog.txt README ; do - sed 's/\r//' $file > $file.new && \ - touch -r $file $file.new && \ - mv $file.new $file + sed 's/\r//' $file > $file.new && \ + touch -r $file $file.new && \ + mv $file.new $file done %patch0 @@ -117,25 +164,74 @@ done %patch3 %patch4 -p1 +# Fix hardcoded paths +sed -i s,/usr/local/share/doc/mathgl/,%{_docdir}/%{name}/, udav/udav_wnd.h +sed -i s,/usr/local/share/udav/,%{_datadir}/udav/, udav/udav_wnd.cpp + %build -mkdir -p %{_target_platform} -pushd %{_target_platform} -%{cmake} \ - -DMGL_LIB_INSTALL_DIR=%{_libdir} \ - -Denable-all=on \ - -Denable-hdf4=off \ - -Denable-doc=on \ - -Denable-all-swig=on \ - -Denable-all-widgets=on \ - -Denable-mpi=off \ - .. -popd - -make %{?_smp_mflags} -C %{_target_platform} + +%define building() \ +BUILD_MPI="-Denable-mpi=on" %buildcommon + +%define building_serial() \ +BUILD_MPI="-Denable-mpi=off" %buildcommon + +%define buildcommon() \ +mkdir -p %{_target_platform}_$MPI_COMPILER_NAME; \ +pushd %{_target_platform}_$MPI_COMPILER_NAME; \ +%{cmake} \\\ + -DMGL_LIB_INSTALL_DIR=%{_libdir} \\\ + -Denable-all=on \\\ + -Denable-hdf4=off \\\ + -Denable-doc=on \\\ + -Denable-all-swig=on \\\ + -Denable-all-widgets=on \\\ + $BUILD_MPI \\\ + ..; \ +popd; \ +make %{?_smp_mflags} -C %{_target_platform}_$MPI_COMPILER_NAME + +# serial +MPI_COMPILER_NAME=serial %building_serial + +# MPI vars +export CC=mpicc +export CXX=mpicxx + +# OpenMPI +%{_openmpi_load} +MPI_COMPILER_NAME=openmpi %building +%{_openmpi_unload} + +# MPICH2 +%{_mpich2_load} +MPI_COMPILER_NAME=mpich2 %building +%{_mpich2_unload} %install rm -rf %{buildroot} -make install DESTDIR=%{buildroot} -C %{_target_platform} INSTALL="install -p" + +# MPI install libs only +%define installing() \ +make install DESTDIR=%{buildroot}%{_libdir}/$MPI_COMPILER_NAME -C %{_target_platform}_$MPI_COMPILER_NAME INSTALL="install -p"; \ +mv %{buildroot}%{_libdir}/$MPI_COMPILER_NAME/%{_libdir} %{buildroot}%{_libdir}/$MPI_COMPILER_NAME/lib; \ +mkdir -p %{buildroot}%{_includedir}/$MPI_COMPILER/mgl2; \ +mv %{buildroot}%{_libdir}/$MPI_COMPILER_NAME/%{_includedir}/mgl2/* %{buildroot}%{_includedir}/$MPI_COMPILER/mgl2/; \ +rm -f %{buildroot}%{_libdir}/$MPI_COMPILER_NAME/lib/*.a; \ +rm -r %{buildroot}%{_libdir}/$MPI_COMPILER_NAME/usr + +# Serial +make install DESTDIR=%{buildroot} -C %{_target_platform}_serial INSTALL="install -p" + +# OpenMPI +%{_openmpi_load} +MPI_COMPILER_NAME=openmpi %installing +%{_openmpi_unload} + +# MPICH2 +%{_mpich2_load} +MPI_COMPILER_NAME=mpich2 %installing +%{_mpich2_unload} #Remove symlink to .so file in python dir. Let python find libs normally unlink %{buildroot}/%{python_sitelib}/_mathgl.so @@ -154,11 +250,13 @@ desktop-file-validate %{buildroot}%{_datadir}/applications/udav.desktop %post /sbin/ldconfig + +%post common /sbin/install-info %{_infodir}/%{name}_en.info %{_infodir}/dir || : -%preun +%preun common if [ $1 = 0 ] ; then - /sbin/install-info --delete %{_infodir}/%{name}_en.info %{_infodir}/dir || : + /sbin/install-info --delete %{_infodir}/%{name}_en.info %{_infodir}/dir || : fi %postun -p /sbin/ldconfig @@ -172,12 +270,13 @@ rm -rf %{buildroot} %doc AUTHORS ChangeLog.txt README COPYING README_V2 %{_libdir}/*.so.* %{_bindir}/mgl* -%{_datadir}/%{name}/ -%{python_sitelib}/* -%{_mandir}/man5/mgl.5.gz %{_mandir}/man1/mglconv.1.gz %{_mandir}/man1/mglview.1.gz -%{_infodir}/%{name}*.gz + +%files devel +%defattr(-,root,root,-) +%{_libdir}/*.so +%{_includedir}/mgl2/ %files -n udav -f udav.lang %{_bindir}/udav @@ -186,23 +285,49 @@ rm -rf %{buildroot} %dir %{_datadir}/udav/ %{_datadir}/pixmaps/*.png -%files devel -%defattr(-,root,root,-) -%{_includedir}/mgl2/ -%{_libdir}/*.so - %files doc %defattr(-,root,root,-) %doc %{_docdir}/%{name} +%files common +%defattr(-,root,root,-) +%{python_sitelib}/* +%{_datadir}/%{name}/ +%{_infodir}/%{name}*.gz +%{_mandir}/man5/mgl.5.gz + +%files openmpi +%defattr(-,root,root,-) +%doc COPYING +%{_libdir}/openmpi/lib/*.so.* + +%files openmpi-devel +%defattr(-,root,root,-) +%{_libdir}/openmpi/lib/*.so +%{_includedir}/openmpi-%{_arch}/mgl2/ + +%files mpich2 +%doc COPYING +%defattr(-,root,root,-) +%{_libdir}/mpich2/lib/*.so.* + +%files mpich2-devel +%defattr(-,root,root,-) +%{_libdir}/mpich2/lib/*.so +%{_includedir}/mpich2-%{_arch}/mgl2/ %changelog +* Mon Apr 15 2013 Dmitrij S. Kryzhevich - 2.1.2-3 +- MPI suport for MathGL library: add -common subpackage. +- MPI enabled for MathGL library: add OpenMPI and MPICH2 support. +- Reformat spec for better reading (spaces vs tabs, aligning). + * Mon Apr 15 2013 Dmitrij S. Kryzhevich - 2.1.2-2 - Fix spec for better cmake use. - Make vars in spec to be in one style. - Add some Russian translation. -- .info is installed. Remove copy. -- Make udav sub-package with name "udav". +- .info is installed. Remove copying. +- Make udav sub-package to be with name "udav". - Maintain traslation for udav. * Sun Apr 14 2013 2.1.2-1 @@ -371,5 +496,3 @@ rm -rf %{buildroot} * Fri Feb 29 2008 Nik - initial build of version 1.5 - -