summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'sci-libs/hdf5/hdf5-1.6.6.ebuild')
-rw-r--r--sci-libs/hdf5/hdf5-1.6.6.ebuild98
1 files changed, 66 insertions, 32 deletions
diff --git a/sci-libs/hdf5/hdf5-1.6.6.ebuild b/sci-libs/hdf5/hdf5-1.6.6.ebuild
index 14d775f21863..65f75db12cd7 100644
--- a/sci-libs/hdf5/hdf5-1.6.6.ebuild
+++ b/sci-libs/hdf5/hdf5-1.6.6.ebuild
@@ -1,6 +1,6 @@
# Copyright 1999-2008 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
-# $Header: /var/cvsroot/gentoo-x86/sci-libs/hdf5/hdf5-1.6.6.ebuild,v 1.6 2008/04/15 14:06:33 markusle Exp $
+# $Header: /var/cvsroot/gentoo-x86/sci-libs/hdf5/hdf5-1.6.6.ebuild,v 1.7 2008/06/04 06:12:36 nerdboy Exp $
inherit eutils fixheadtails flag-o-matic fortran toolchain-funcs
@@ -10,8 +10,9 @@ SRC_URI="ftp://ftp.hdfgroup.org/HDF5/current/src/${P}.tar.gz"
LICENSE="NCSA-HDF"
SLOT="0"
-KEYWORDS="~amd64 ~hppa ~ppc ~ppc64 ~x86 ~sparc"
-# need to update szip to get alpha, ia64, etc back in here,
+KEYWORDS="~amd64 ~ppc ~ppc64 ~x86 ~sparc"
+# need to update szip to get alpha, ia64, etc back in here,
+# and hppa needs both szip and mpich2 (mask mpe-sdk for the latter)
IUSE="cxx debug fortran mpi ssl szip threads tools zlib "
DEPEND="!sparc? ( mpi? ( >=sys-cluster/mpich2-1.0.6
@@ -29,13 +30,23 @@ RDEPEND="${DEPEND}
dev-lang/perl"
pkg_setup() {
+ if has test ${FEATURES} && use mpi ; then
+ elog ""
+ elog "Parallel tests will launch 3 mpd processes on this box,"
+ elog "so it may take some time on a slow machine (only a few"
+ elog "minutes on a reasonably fast machine). Hit Ctl-C now"
+ elog "and emerge with FEATURES=-test if you'd rather not..."
+ elog ""
+ epause 9
+ fi
+
# The above gcc dep is a hack to insure at least one Fortran 90
# compiler is installed if the user enables fortran support. Feel
# free to improve it...
if use fortran ; then
fortran_pkg_setup
case "${FORTRANC}" in
- gfortran|ifc|ifort|f95)
+ gfortran|ifc|ifort|f95|pgf90)
export F9X="${FORTRANC}"
;;
g77|f77|f2c)
@@ -58,10 +69,15 @@ src_unpack() {
if use mpi; then
# this is required for mpich2, and should be safe otherwise
- epatch "${FILESDIR}/${PN}-mpich2.patch" || die "mpich2 patch failed"
+ epatch "${FILESDIR}/${PN}-mpich2.patch"
fi
+ # fix test script stuff
ht_fix_file "${S}"/bin/release "${S}"/tools/h5dump/testh5dump.sh.in
+ sed -i -e "s:+4l:+4:g" tools/h5dump/testh5dump.sh.in || die "oops"
+
+ # fix sort key
+ sed -i -e "s:sort +2:sort -k 2:g" bin/ltmain.sh || die "sed failed"
}
@@ -96,27 +112,29 @@ src_compile() {
# ebuild/emerge. As a work around, we save the ARCH variable as
# EBUILD_ARCH and restore it when we are done.
EBUILD_ARCH="${ARCH}"
+
unset ARCH
if use mpi ; then
- export NPROCS=1
- export CC="mpicc"
- if built_with_use sys-cluster/mpich2 fortran ; then
- export F9X="mpif90"
+ EBUILD_CC="${CC}"
+ # set NPROCS explicitly if needed
+ export NPROCS=${NPROCS:=2}
+ export CC="$(which mpicc)"
+ if [[ ${FORTRANC} == gfortran ]] ; then
+ export F9X="$(which mpif90)"
fi
if built_with_use sys-cluster/mpich2 pvfs2 ; then
- export LIBS="$(sh pvfs2-config --libs) -lmpich"
+ export LIBS="${LIBS} $(sh pvfs2-config --libs) -lmpich"
else
- export LIBS="-lmpich"
+ export LIBS="${LIBS} -lmpich"
fi
-# if built_with_use sys-cluster/mpich2 mpe ; then
-# myconf="${myconf} --with-mpe=/usr/include,/usr/$(get_libdir)"
-# fi
append-ldflags "${LIBS}"
fi
econf --prefix=/usr \
$(use_enable zlib) \
+ $(use_enable fortran) \
+ $(use_enable mpi parallel) \
$(use_with ssl) \
--enable-linux-lfs \
--sysconfdir=/etc \
@@ -131,19 +149,30 @@ src_compile() {
# emake has occasional segfaults
make || die "make failed"
+ use mpi && CC="${EBUILD_CC}"
}
src_test() {
- # make test is not reliable, and the mpi tests have a weird failure
+ # all tests pass; a few are skipped, and MPI skips parts if it sees
+ # only one process on the build host.
export HDF5_Make_Ignore=yes
if use mpi ; then
+ EBUILD_CC="${CC}"
export HDF5_PARAPREFIX="${S}/testpar"
- export CC="/usr/bin/mpicc"
+ export CC="$(which mpicc)"
+ export MPI_UNIVERSE="localhost 4"
+ export NPROCS=3
install -g portage -o portage -m 0600 "${FILESDIR}"/mpd.conf "${HOME}"/.mpd.conf
- /usr/bin/mpd --daemon
+ mpd --daemon --listenport=4268
+ mpd --daemon -h localhost -p 4268 -n
+ mpd --daemon -h localhost -p 4268 -n
+ elog "NPROCS = ${NPROCS}"
+ elog "mpdtrace output:"
+ mpdtrace
fi
make check || die "make test failed"
- use mpi && /usr/bin/mpdallexit
+ use mpi && mpdallexit
+ use mpi && CC="${EBUILD_CC}"
export HDF5_Make_Ignore=no
}
@@ -182,7 +211,7 @@ src_install() {
use mpi && doexe testpar/testphdf5 testpar/t_mpi
fi
- dodoc README.txt MANIFEST
+ dodoc README.txt
dohtml doc/html/*
if use mpi ; then
@@ -196,21 +225,26 @@ src_install() {
}
pkg_postinst() {
- elog
- elog "There are currently 2 non-fatal test errors in the mpi tests,"
- elog "however, all C++, Fortran, and other tests pass successfully."
- elog "The only expected failure is currently in the PHDF5 section"
- elog "under MPI functionality tests. The second section using the"
- elog "MPIPOSIX driver should work, along with all other tests."
- elog
- elog "Suggested USE flags for fortran and mpi support using gfortran:"
- elog "USE=\"fortran mpi -cxx\""
- elog
- ewarn "Note 1: currently testing pvfs2 support (with mpi). Please"
+ echo
+ elog "Use the fortran flag for gfortran or ifc, and add the f90"
+ elog "flag to override the fortran flag if you have a different"
+ elog "f90 compiler installed (gfortran requires gcc 4.x). Note that"
+ elog "gfortran only works as mpif90 and is not detected properly by"
+ elog "configure without the mpi wrapper."
+ echo
+ elog "There should not be any more test errors in the mpi tests,"
+ elog "and all C++, Fortran, and other tests pass successfully."
+ elog "Suggested USE flags for fortran and mpi support using"
+ elog "gfortran: USE=\"fortran mpi -cxx\""
+ echo
+ ewarn "Note 1: Needs more SMP and cluster testing, as well as"
+ ewarn "more testing on a virtual (parallel) filesystem."
+ echo
+ ewarn "Note 2: currently testing pvfs2 support (with mpi). Please"
ewarn "report any problems in the usual way."
elog
- ewarn "Note 2: you'll need rawio support enabled in your kernel or"
- ewarn "certain asynchronous IO operations will fail. Either enable"
+ ewarn "Note 3: you'll need rawio support enabled in your kernel or"
+ ewarn "certain asynchronous IO operations may fail. Either enable"
ewarn "the RAW driver (under Character Devices) or patch your kernel"
ewarn "with the new PAIO drivers and use libposix-aio. See both:"
ewarn "http://sourceforge.net/projects/paiol and"