blob: 1cb535fa0e50dc17a8c84bba43de25164f6929e7 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
|
# Copyright 1999-2005 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: /var/cvsroot/gentoo-x86/sys-cluster/mpich/mpich-1.2.6-r4.ebuild,v 1.1 2005/11/07 01:31:39 spyderous Exp $
inherit eutils
# Set the MPICH_CONFIGURE_OPTS environment variable to change the signal
# mpich listens on or any other custom options (#38207).
# The default USR1 conflicts with pthreads. Options include SIGUSR2 and SIGBUS.
# For example: MPICH_CONFIGURE_OPTS="--with-device=ch_p4:-listener_sig=SIGBUS"
DESCRIPTION="MPICH - A portable MPI implementation"
HOMEPAGE="http://www-unix.mcs.anl.gov/mpi/mpich"
SRC_URI="ftp://ftp.mcs.anl.gov/pub/mpi/${P}.tar.gz"
LICENSE="as-is"
SLOT="0"
KEYWORDS="~x86 ~ppc ~amd64 ~ppc64"
IUSE="doc crypt"
PROVIDE="virtual/mpi"
DEPEND="virtual/libc
sys-devel/autoconf
sys-devel/automake
sys-devel/libtool"
RDEPEND="${DEPEND}
crypt? ( net-misc/openssh )
!crypt? ( net-misc/netkit-rsh )
!virtual/mpi
|| ( x11-libs/libX11
virtual/x11 )"
pkg_setup() {
if [ -n "${MPICH_CONFIGURE_OPTS}" ]; then
einfo "Custom configure options are ${MPICH_CONFIGURE_OPTS}."
fi
}
src_unpack() {
unpack ${A}
cd ${S}
grep -FrlZ '$(P) ' . | xargs -0 sed -i -e 's/\$(P)//'
# Fix broken romio
epatch ${FILESDIR}/${PV}-fix-romio-sandbox-breakage.patch
cd ${S}/romio
rm configure
autoreconf --install --verbose
}
src_compile() {
local RSHCOMMAND
if use crypt; then
RSHCOMMAND="ssh -x"
else
RSHCOMMAND="rsh"
fi
export RSHCOMMAND
local myconf="${myconf} ${MPICH_CONFIGURE_OPTS}"
./configure \
${myconf} \
--mandir=/usr/share/man \
--prefix=/usr \
--datadir=/usr/share/mpich || die
emake || die
}
src_install() {
dodir /usr/sbin
# mpich install process is really weird, need to do some hand work perhaps
# to skip installation of man pages, uncomment following line
# export MPIINSTALL_OPTS=-noman
./bin/mpiinstall -echo -prefix=${D}/usr || die
if use doc; then
dodir /usr/share/doc/${PF}
mv ${D}/usr/doc/* ${D}/usr/share/doc/${PF}
fi
rm -rf ${D}/usr/doc/
dodir /etc/mpich
mv ${D}/usr/etc/* ${D}/etc/mpich/
rmdir ${D}/usr/etc/
dodir /usr/share/${PN}
mv ${D}/usr/examples ${D}/usr/share/${PN}/examples1
mv ${D}/usr/share/examples ${D}/usr/share/${PN}/examples2
# rm -rf ${D}/usr/local
rm -f ${D}/usr/man/mandesc
mv ${D}/usr/share/{machines*,jumpshot-3,Makefile.sample,upshot} ${D}/usr/share/${PN}
dodoc COPYRIGHT README
use doc && \
mv ${D}/usr/www ${D}/usr/share/doc/${PF}/html || \
rm -rf ${D}/usr/www
# Dont let users deinstall without portage
rm ${D}/usr/sbin/mpiuninstall
# We dont have a real DESTDIR, so we have to fix all the files
dosed /usr/bin/mpirun /usr/bin/mpiman /usr/sbin/tstmachines
dosed /usr/sbin/chkserv /usr/sbin/chp4_servs
dosed /usr/bin/clog2TOslog2 /usr/bin/clog2print
dosed /usr/bin/clogTOslog2 /usr/bin/clogprint
dosed /usr/bin/jumpshot /usr/bin/logconvertor
dosed /usr/bin/mpicc /usr/bin/mpiCC /usr/bin/logviewer
dosed /usr/bin/mpicxx
dosed /usr/bin/mpireconfig /usr/bin/mpireconfig.dat
dosed /usr/bin/mpereconfig /usr/bin/mpereconfig.dat
dosed /usr/bin/rlogTOslog2 /usr/bin/rlogprint
dosed /usr/bin/slog2navigator /usr/bin/slog2print
dosed /usr/share/mpich/examples1/Makefile
dosed /usr/share/mpich/examples2/Makefile
dosed /usr/share/mpich/jumpshot-3/bin/jumpshot
dosed /usr/share/mpich/jumpshot-3/bin/slog_print
dosed /usr/share/mpich/Makefile.sample
dosed /usr/share/mpich/upshot/bin/upshot
# Fix datadir; mpich's build system screws it up even though we pass it
grep -rl 'datadir=.*' ${D} \
| xargs sed -i -e "s:datadir=.*:datadir=/usr/share/mpich:g"
# those are dangling symlinks
rm -f \
${D}/usr/share/mpich/examples1/mpirun \
${D}/usr/share/mpich/examples2/mpirun
mv ${D}/usr/man ${D}/usr/share/man
prepallman
#FIXME: Here, we should either clean the empty directories
# or use keepdir to make sure they stick around.
}
pkg_postinst() {
einfo "The data directory has moved from /usr/share"
einfo "to /usr/share/mpich."
einfo "Remeber to move your machines.* files."
}
|