On Mon, 2007-12-31 at 21:26 -0500, Adam C Powell IV wrote:
> On Wed, 2007-12-19 at 11:04 -0500, Adam C Powell IV wrote:
> > As OpenMPI is the successor to LAM (the LAM developers now work on
> > OpenMPI), please add an OpenMPI build of hdf5.
>
> Will you accept a patch if I provide one?
Okay, so I got impatient and went ahead and did it. Here's the patch.
Note that it includes a small patch to H5public.h for only the OpenMPI
case which is necessary for C++ programs to compile with
extern "C" { #include <hdf5.h> }
[this does not seem to be necessary for LAM or MPICH].
Cheers,
-Adam
--
GPG fingerprint: D54D 1AEE B11C CE9B A02B C5DD 526F 01E8 564E E4B6
Engineering consulting with open source tools
http://www.opennovation.com/
diff -urN hdf5-1.6.5-5/debian/changelog hdf5-1.6.5-6/debian/changelog
--- hdf5-1.6.5-5/debian/changelog 2008-01-01 21:22:32.000000000 -0500
+++ hdf5-1.6.5-6/debian/changelog 2008-01-01 21:24:04.000000000 -0500
@@ -1,3 +1,11 @@
+hdf5 (1.6.5-6) unstable; urgency=low
+
+ * Added OpenMPI version (closes: #457080)
+ * Patch to H5public.h for OpenMPI is for C++ programs which include
+ hdf5.h in an extern "C" block.
+
+ --
+
hdf5 (1.6.5-5) unstable; urgency=low
* Changed maintainer and added uploards for true in control.in
diff -urN hdf5-1.6.5-5/debian/control hdf5-1.6.5-6/debian/control
--- hdf5-1.6.5-5/debian/control 2008-01-01 21:22:32.000000000 -0500
+++ hdf5-1.6.5-6/debian/control 2008-01-01 21:22:50.000000000 -0500
@@ -3,7 +3,7 @@
Priority: optional
Maintainer: Debian GIS Project <[EMAIL PROTECTED]>
Uploaders: Francesco Paolo Lovergine <[EMAIL PROTECTED]>
-Build-Depends: libmpich1.0-dev (>= 1.2.7-1), zlib1g-dev, lam4-dev (>= 7.1.1-3.2), libjpeg62-dev, debhelper (>> 5)
+Build-Depends: libmpich1.0-dev (>= 1.2.7-1), zlib1g-dev, lam4-dev (>= 7.1.1-3.2), libopenmpi-dev, libjpeg62-dev, debhelper (>> 5)
Standards-Version: 3.7.2
Package: libhdf5-serial-1.6.5-0
@@ -74,6 +74,41 @@
.
Home page: http://hdf.ncsa.uiuc.edu/HDF5/
+Package: libhdf5-openmpi-1.6.5-0
+Section: libs
+Priority: extra
+Architecture: any
+Depends: ${shlibs:Depends}
+Conflicts: libhdf5-1.6.5-0
+Provides: libhdf5-1.6.5-0
+Description: Hierarchical Data Format 5 (HDF5) - runtime files - OpenMPI version
+ HDF5 is a file format and library for storing scientific data.
+ HDF5 was designed and implemented to address the deficiencies of
+ HDF4.x. It has a more powerful and flexible data model, supports
+ files larger than 2 GB, and supports parallel I/O.
+ .
+ This package contains runtime files for use with OpenMPI.
+ .
+ Home page: http://hdf.ncsa.uiuc.edu/HDF5/
+
+Package: libhdf5-openmpi-dev
+Section: libdevel
+Priority: extra
+Architecture: any
+Depends: libhdf5-openmpi-1.6.5-0 (= ${Source-Version}), libc6-dev, zlib1g-dev, libjpeg62-dev, libopenmpi-dev
+Conflicts: libhdf5-dev
+Provides: libhdf5-dev
+Suggests: libhdf5-doc
+Description: Hierarchical Data Format 5 (HDF5) - development files - OpenMPI version
+ HDF5 is a file format and library for storing scientific data.
+ HDF5 was designed and implemented to address the deficiencies of
+ HDF4.x. It has a more powerful and flexible data model, supports
+ files larger than 2 GB, and supports parallel I/O.
+ .
+ This package contains development files for use with OpenMPI.
+ .
+ Home page: http://hdf.ncsa.uiuc.edu/HDF5/
+
Package: libhdf5-mpich-1.6.5-0
Section: libs
Priority: extra
diff -urN hdf5-1.6.5-5/debian/control.in hdf5-1.6.5-6/debian/control.in
--- hdf5-1.6.5-5/debian/control.in 2008-01-01 21:22:32.000000000 -0500
+++ hdf5-1.6.5-6/debian/control.in 2008-01-01 21:22:50.000000000 -0500
@@ -3,7 +3,7 @@
Priority: optional
Maintainer: Debian GIS Project <[EMAIL PROTECTED]>
Uploaders: Francesco Paolo Lovergine <[EMAIL PROTECTED]>
-Build-Depends: libmpich1.0-dev (>= 1.2.7-1), zlib1g-dev, lam4-dev (>= 7.1.1-3.2), libjpeg62-dev, debhelper (>> 5)
+Build-Depends: libmpich1.0-dev (>= 1.2.7-1), zlib1g-dev, lam4-dev (>= 7.1.1-3.2), libopenmpi-dev, libjpeg62-dev, debhelper (>> 5)
Standards-Version: 3.7.2
Package: [EMAIL PROTECTED]@-0
@@ -74,6 +74,41 @@
.
Home page: http://hdf.ncsa.uiuc.edu/HDF5/
+Package: [EMAIL PROTECTED]@-0
+Section: libs
+Priority: extra
+Architecture: any
+Depends: ${shlibs:Depends}
+Conflicts: [EMAIL PROTECTED]@-0
+Provides: [EMAIL PROTECTED]@-0
+Description: Hierarchical Data Format 5 (HDF5) - runtime files - OpenMPI version
+ HDF5 is a file format and library for storing scientific data.
+ HDF5 was designed and implemented to address the deficiencies of
+ HDF4.x. It has a more powerful and flexible data model, supports
+ files larger than 2 GB, and supports parallel I/O.
+ .
+ This package contains runtime files for use with OpenMPI.
+ .
+ Home page: http://hdf.ncsa.uiuc.edu/HDF5/
+
+Package: libhdf5-openmpi-dev
+Section: libdevel
+Priority: extra
+Architecture: any
+Depends: [EMAIL PROTECTED]@-0 (= ${Source-Version}), libc6-dev, zlib1g-dev, libjpeg62-dev, libopenmpi-dev
+Conflicts: libhdf5-dev
+Provides: libhdf5-dev
+Suggests: libhdf5-doc
+Description: Hierarchical Data Format 5 (HDF5) - development files - OpenMPI version
+ HDF5 is a file format and library for storing scientific data.
+ HDF5 was designed and implemented to address the deficiencies of
+ HDF4.x. It has a more powerful and flexible data model, supports
+ files larger than 2 GB, and supports parallel I/O.
+ .
+ This package contains development files for use with OpenMPI.
+ .
+ Home page: http://hdf.ncsa.uiuc.edu/HDF5/
+
Package: [EMAIL PROTECTED]@-0
Section: libs
Priority: extra
diff -urN hdf5-1.6.5-5/debian/hdf5-H5public-openmpi.patch hdf5-1.6.5-6/debian/hdf5-H5public-openmpi.patch
--- hdf5-1.6.5-5/debian/hdf5-H5public-openmpi.patch 1969-12-31 19:00:00.000000000 -0500
+++ hdf5-1.6.5-6/debian/hdf5-H5public-openmpi.patch 2008-01-01 21:22:50.000000000 -0500
@@ -0,0 +1,10 @@
+--- usr/include/H5public.h.old 2008-01-01 16:55:04.000000000 -0500
++++ usr/include/H5public.h 2008-01-01 16:53:37.000000000 -0500
+@@ -50,6 +50,7 @@
+ # include <stddef.h>
+ #endif
+ #ifdef H5_HAVE_PARALLEL
++# define OMPI_SKIP_MPICXX
+ # include <mpi.h>
+ #ifndef MPI_FILE_NULL /*MPIO may be defined in mpi.h already */
+ # include <mpio.h>
diff -urN hdf5-1.6.5-5/debian/rules hdf5-1.6.5-6/debian/rules
--- hdf5-1.6.5-5/debian/rules 2008-01-01 21:22:32.000000000 -0500
+++ hdf5-1.6.5-6/debian/rules 2008-01-01 21:22:50.000000000 -0500
@@ -12,6 +12,7 @@
version ?= $(shell echo $(pkgversion) | sed 's/-[^-]*$$//')
serpack = $(package)-serial-$(version)-0
lampack = $(package)-lam-$(version)-0
+openmpipack = $(package)-openmpi-$(version)-0
mpichpack = $(package)-mpich-$(version)-0
virtpack = $(package)-$(version)-0
@@ -48,17 +49,19 @@
--enable-shared --enable-production=$(USE_PROD)
-configure: configure-stamp-debian configure-stamp-serial configure-stamp-lam configure-stamp-mpich
+configure: configure-stamp-debian configure-stamp-serial configure-stamp-lam configure-stamp-openmpi configure-stamp-mpich
configure-stamp-debian: debian/control.in
cd debian && for i in *_devlib; do j=`basename $$i _devlib`; \
ln -sf $$i $(package)-serial-dev.$$j ; \
ln -sf $$i $(package)-lam-dev.$$j ; \
+ ln -sf $$i $(package)-openmpi-dev.$$j ; \
ln -sf $$i $(package)-mpich-dev.$$j ; \
done
cd debian && for i in *_shlib; do j=`basename $$i _shlib`; \
ln -sf $$i $(serpack).$$j ; \
ln -sf $$i $(lampack).$$j ; \
+ ln -sf $$i $(openmpipack).$$j ; \
ln -sf $$i $(mpichpack).$$j ; \
done
sed "s/@VERSION@/$(version)/g" debian/shlibs.in > debian/$(serpack).shlibs
@@ -83,6 +86,16 @@
--enable-parallel=yes
touch configure-stamp-lam
+configure-stamp-openmpi: configure-stamp-debian
+ dh_testdir
+ -mkdir debian/build-openmpi
+# configure version with lam
+ cd debian/build-openmpi && CPPFLAGS=-I/usr/lib/openmpi/include \
+ CC=mpicc.openmpi CXX=mpic++.openmpi RUNPARALLEL=/usr/bin/mpirun.openmpi \
+ ../../configure $(CONFIGURE_FLAGS) \
+ --enable-parallel=yes
+ touch configure-stamp-openmpi
+
configure-stamp-mpich: configure-stamp-debian
dh_testdir
-mkdir debian/build-mpich
@@ -94,7 +107,7 @@
--enable-parallel=yes
touch configure-stamp-mpich
-build: build-stamp-serial build-stamp-lam build-stamp-mpich
+build: build-stamp-serial build-stamp-lam build-stamp-openmpi build-stamp-mpich
build-stamp-serial: configure-stamp-serial
dh_testdir
@@ -106,6 +119,11 @@
$(MAKE) -C debian/build-lam/
touch build-stamp-lam
+build-stamp-openmpi: configure-stamp-openmpi
+ dh_testdir
+ $(MAKE) -C debian/build-openmpi/
+ touch build-stamp-openmpi
+
build-stamp-mpich: configure-stamp-mpich
dh_testdir
$(MAKE) -C debian/build-mpich/
@@ -116,12 +134,13 @@
dh_testroot
-rm -rf debian/build-serial
-rm -rf debian/build-lam
+ -rm -rf debian/build-openmpi
-rm -rf debian/build-mpich
-find debian -type l | xargs rm -f
grep -v ^\% debian/control.in | sed "s/@VERSION@/$(version)/g" > debian/control
dh_clean configure-stamp* build-stamp* install-stamp* debian/*.shlibs
-install: install-serial install-lam install-mpich install-doc
+install: install-serial install-lam install-openmpi install-mpich install-doc
install-serial: build-stamp-serial
dh_testdir
@@ -139,6 +158,15 @@
dh_install -p$(lampack) -p$(package)-lam-dev \
--sourcedir=debian/build-lam/tmpinst
+install-openmpi: build-stamp-openmpi
+ dh_testdir
+ dh_testroot
+ -mkdir debian/build-openmpi/tmpinst
+ $(MAKE) -C debian/build-openmpi/ install prefix=$(CURDIR)/debian/build-openmpi/tmpinst/usr
+ (cd debian/build-openmpi/tmpinst/usr && patch -p1 < ../../../hdf5-H5public-openmpi.patch)
+ dh_install -p$(openmpipack) -p$(package)-openmpi-dev \
+ --sourcedir=debian/build-openmpi/tmpinst
+
install-mpich: build-stamp-mpich
dh_testdir
dh_testroot
@@ -164,7 +192,7 @@
dh_md5sums -i
dh_builddeb -i
-binary-arch: build install-serial install-lam install-mpich
+binary-arch: build install-serial install-lam install-openmpi install-mpich
dh_testdir
dh_testroot
dh_installdocs -a
@@ -176,11 +204,13 @@
dh_fixperms -a
# dh_makeshlibs -p$(serpack) -V "$(serpack) | $(virtpack)"
dh_makeshlibs -p$(lampack) -V $(lampack)
+ dh_makeshlibs -p$(openmpipack) -V $(openmpipack)
dh_makeshlibs -p$(mpichpack) -V $(mpichpack)
dh_installdeb -a
dh_shlibdeps -phdf5-tools -L$(serpack) -ldebian/$(serpack)/usr/lib
dh_shlibdeps -p$(serpack) -L$(serpack) -ldebian/$(serpack)/usr/lib
dh_shlibdeps -p$(lampack) -L$(lampack) -ldebian/$(lampack)/usr/lib
+ dh_shlibdeps -p$(openmpipack) -L$(openmpipack) -ldebian/$(openmpipack)/usr/lib
dh_shlibdeps -p$(mpichpack) -L$(mpichpack) -ldebian/$(mpichpack)/usr/lib
dh_gencontrol -a
dh_md5sums -a
@@ -188,4 +218,4 @@
binary: binary-indep binary-arch
-.PHONY: build clean binary-indep binary-arch binary install configure install-serial install-doc install-lam install-mpich
+.PHONY: build clean binary-indep binary-arch binary install configure install-serial install-doc install-lam install-openmpi install-mpich