1 |
# Copyright 1999-2011 Gentoo Foundation |
2 |
# Distributed under the terms of the GNU General Public License v2 |
3 |
# $Header: /var/cvsroot/gentoo-x86/sys-cluster/openmpi/openmpi-1.4.2.ebuild,v 1.15 2011/06/21 09:57:18 jlec Exp $ |
4 |
|
5 |
EAPI=3 |
6 |
inherit eutils fortran-2 multilib flag-o-matic toolchain-funcs |
7 |
|
8 |
MY_P=${P/-mpi} |
9 |
S=${WORKDIR}/${MY_P} |
10 |
|
11 |
DESCRIPTION="A high-performance message passing library (MPI)" |
12 |
HOMEPAGE="http://www.open-mpi.org" |
13 |
SRC_URI="http://www.open-mpi.org/software/ompi/v1.4/downloads/${MY_P}.tar.bz2" |
14 |
LICENSE="BSD" |
15 |
SLOT="0" |
16 |
RESTRICT="mpi-threads? ( test )" |
17 |
KEYWORDS="alpha amd64 ia64 ppc ppc64 sparc x86 ~x86-fbsd" |
18 |
IUSE="+cxx elibc_FreeBSD fortran heterogeneous ipv6 mpi-threads pbs romio threads vt" |
19 |
RDEPEND=" |
20 |
fortran? ( virtual/fortran ) |
21 |
pbs? ( sys-cluster/torque ) |
22 |
vt? ( |
23 |
!dev-libs/libotf |
24 |
!app-text/lcdf-typetools |
25 |
) |
26 |
elibc_FreeBSD? ( dev-libs/libexecinfo ) |
27 |
!sys-cluster/mpich |
28 |
!sys-cluster/lam-mpi |
29 |
!sys-cluster/mpich2 |
30 |
!sys-cluster/mpiexec" |
31 |
DEPEND="${RDEPEND}" |
32 |
|
33 |
pkg_setup() { |
34 |
fortran-2_pkg_setup |
35 |
if use mpi-threads; then |
36 |
echo |
37 |
ewarn "WARNING: use of MPI_THREAD_MULTIPLE is still disabled by" |
38 |
ewarn "default and officially unsupported by upstream." |
39 |
ewarn "You may stop now and set USE=-mpi-threads" |
40 |
echo |
41 |
fi |
42 |
|
43 |
echo |
44 |
elog "OpenMPI has an overwhelming count of configuration options." |
45 |
elog "Don't forget the EXTRA_ECONF environment variable can let you" |
46 |
elog "specify configure options if you find them necessary." |
47 |
echo |
48 |
} |
49 |
|
50 |
src_prepare() { |
51 |
# Necessary for scalibility, see |
52 |
# http://www.open-mpi.org/community/lists/users/2008/09/6514.php |
53 |
if use threads; then |
54 |
echo 'oob_tcp_listen_mode = listen_thread' \ |
55 |
>> opal/etc/openmpi-mca-params.conf |
56 |
fi |
57 |
} |
58 |
|
59 |
src_configure() { |
60 |
local myconf=( |
61 |
--sysconfdir="${EPREFIX}/etc/${PN}" |
62 |
--without-xgrid |
63 |
--enable-pretty-print-stacktrace |
64 |
--enable-orterun-prefix-by-default |
65 |
--without-slurm) |
66 |
|
67 |
if use mpi-threads; then |
68 |
myconf+=(--enable-mpi-threads |
69 |
--enable-progress-threads) |
70 |
fi |
71 |
|
72 |
if use fortran; then |
73 |
if [[ $(tc-getFC) =~ g77 ]]; then |
74 |
myconf+=(--disable-mpi-f90) |
75 |
elif [[ $(tc-getFC) =~ if ]]; then |
76 |
# Enabled here as gfortran compile times are huge with this enabled. |
77 |
myconf+=(--with-mpi-f90-size=medium) |
78 |
fi |
79 |
else |
80 |
myconf+=(--disable-mpi-f90 --disable-mpi-f77) |
81 |
fi |
82 |
|
83 |
! use vt && myconf+=(--enable-contrib-no-build=vt) |
84 |
|
85 |
econf "${myconf[@]}" \ |
86 |
$(use_enable cxx mpi-cxx) \ |
87 |
$(use_enable romio io-romio) \ |
88 |
$(use_enable heterogeneous) \ |
89 |
$(use_with pbs tm) \ |
90 |
$(use_enable ipv6) |
91 |
} |
92 |
|
93 |
src_install () { |
94 |
emake DESTDIR="${D}" install || die "make install failed" |
95 |
dodoc README AUTHORS NEWS VERSION || die |
96 |
} |
97 |
|
98 |
src_test() { |
99 |
# Doesn't work with the default src_test as the dry run (-n) fails. |
100 |
cd "${S}" |
101 |
emake -j1 check || die "emake check failed" |
102 |
} |