152 lines
3.7 KiB
Bash
152 lines
3.7 KiB
Bash
# Copyright 1999-2015 Gentoo Foundation
|
|
# Distributed under the terms of the GNU General Public License v2
|
|
# $Id$
|
|
|
|
EAPI=5
|
|
|
|
FORTRAN_NEEDED=fortran
|
|
|
|
inherit eutils fortran-2 java-pkg-opt-2 toolchain-funcs
|
|
|
|
MY_P=${P/_/}
|
|
DESCRIPTION="MPI development tools"
|
|
HOMEPAGE="http://www-unix.mcs.anl.gov/perfvis/download/index.htm"
|
|
SRC_URI="ftp://ftp.mcs.anl.gov/pub/mpi/${PN%2}/${MY_P}.tar.gz"
|
|
|
|
LICENSE="mpich2"
|
|
SLOT="0"
|
|
KEYWORDS="~amd64 ~x86"
|
|
IUSE="minimal fortran threads debug"
|
|
|
|
COMMON_DEPEND="!minimal? ( x11-libs/libXtst
|
|
x11-libs/libXi )
|
|
|| ( sys-cluster/openmpi[fortran?,threads?]
|
|
sys-cluster/mpich2[fortran?,threads?] )"
|
|
|
|
DEPEND="!minimal? ( >=virtual/jdk-1.6 )
|
|
${COMMON_DEPEND}"
|
|
|
|
RDEPEND="
|
|
!minimal? ( >=virtual/jre-1.6 )
|
|
${COMMON_DEPEND}"
|
|
|
|
S="${WORKDIR}"/${MY_P}
|
|
MPE_IMP=""
|
|
|
|
# README:
|
|
# This ebuild is created to handle building with both mpich2 and openmpi.
|
|
# However, without empi (in the science overlay), and some further
|
|
# conversion to use mpi.eclass, we can only handle one implementation
|
|
# at a time. I still believe it's better to have the ebuild setup
|
|
# correctly in preperation.
|
|
|
|
pkg_setup() {
|
|
fortran-2_pkg_setup
|
|
local i
|
|
|
|
if has_version sys-cluster/openmpi; then
|
|
MPE_IMP=openmpi
|
|
elif has_version sys-cluster/mpich2; then
|
|
MPE_IMP=mpich2
|
|
else
|
|
die "Unknown MPI implementation"
|
|
fi
|
|
|
|
export JFLAGS="${JFLAGS} $(java-pkg_javac-args)"
|
|
|
|
if [[ "${MPE_IMP}" == openmpi ]] && [ -z "${MPE2_FORCE_OPENMPI_TEST}" ]; then
|
|
echo
|
|
elog "Currently src_test fails on collchk with openmpi, hence"
|
|
elog "testing is disabled by default. If you would like to"
|
|
elog "force testing, please add MPE_FORCE_OPENMPI_TEST=1"
|
|
elog "to your environment."
|
|
echo
|
|
fi
|
|
|
|
einfo "Building with support for: sys-cluster/${MPE_IMP}"
|
|
|
|
if ! minimal; then
|
|
java-pkg-opt-2_pkg_setup
|
|
fi
|
|
}
|
|
|
|
src_prepare() {
|
|
# Don't assume path contains ./
|
|
sed -i 's,\($MPERUN\) $pgm,\1 ./$pgm,' sbin/mpetestexeclog.in
|
|
epatch "${FILESDIR}"/slog2sdk-trace_rlog-makefile-fixes.patch
|
|
epatch "${FILESDIR}"/slog2sdk-trace_sample-makefile-fixes.patch
|
|
|
|
if ! minimal; then
|
|
java-pkg-opt-2_src_prepare
|
|
fi
|
|
}
|
|
|
|
src_configure() {
|
|
local c="--with-mpicc=/usr/bin/mpicc"
|
|
|
|
if use fortran; then
|
|
c="${c} --with-mpif77=/usr/bin/mpif77"
|
|
else
|
|
c="${c} --disable-f77"
|
|
fi
|
|
|
|
if use minimal; then
|
|
c="${c} --enable-slog2=no --disable-rlog --disable-sample"
|
|
else
|
|
c="${c} --with-java2=$(java-config --jdk-home) --enable-slog2=build"
|
|
fi
|
|
|
|
if [[ "${MPE_IMP}" == openmpi ]]; then
|
|
c="${c} --disable-rlog --disable-sample"
|
|
fi
|
|
|
|
econf ${c} \
|
|
--sysconfdir=/etc/${PN} \
|
|
--datadir=/usr/share/${PN} \
|
|
--with-htmldir=/usr/share/${PN} \
|
|
--with-docdir=/usr/share/${PN} \
|
|
--enable-collchk \
|
|
--enable-wrappers \
|
|
$(use_enable !minimal graphics) \
|
|
$(use_enable threads threadlogging) \
|
|
$(use_enable debug g)
|
|
}
|
|
|
|
src_test() {
|
|
local rc
|
|
|
|
cd "${S}"
|
|
if [[ "${MPE_IMP}" == mpich2 ]]; then
|
|
echo "MPD_SECRETWORD=junk" > "${T}"/mpd.conf
|
|
chmod 600 "${T}"/mpd.conf
|
|
export MPD_CONF_FILE="${T}/mpd.conf"
|
|
"${ROOT}"usr/bin/mpd -d --pidfile="${T}"/mpd.pid
|
|
elif [[ "${MPE_IMP}" == openmpi* ]] && [ -z "${MPE2_FORCE_OPENMPI_TEST}" ]; then
|
|
elog
|
|
elog "Skipping tests for openmpi"
|
|
elog
|
|
return 0
|
|
fi
|
|
|
|
# No parallel make:
|
|
# http://trac.mcs.anl.gov/projects/mpich2/ticket/1095#comment:1
|
|
emake -j1 \
|
|
CC="${S}"/bin/mpecc \
|
|
FC="${S}"/bin/mpefc \
|
|
MPERUN="${ROOT}/usr/bin/mpiexec -n 4" \
|
|
CLOG2TOSLOG2="${S}/src/slog2sdk/bin/clog2TOslog2" \
|
|
check;
|
|
rc=${?}
|
|
if [[ "${MPE_IMP}" == mpich2 ]]; then
|
|
"${ROOT}"usr/bin/mpdallexit || kill $(<"${T}"/mpd.pid)
|
|
fi
|
|
|
|
return ${rc}
|
|
}
|
|
|
|
src_install() {
|
|
# No parallel make:
|
|
# http://trac.mcs.anl.gov/projects/mpich2/ticket/1095#comment:1
|
|
emake -j1 DESTDIR="${D}" install || die
|
|
rm -f "${D}"/usr/sbin/mpeuninstall || die
|
|
}
|