blob: 1ed13c30d987d75a24b7313748c90256986e66d9 (
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
150
151
152
153
154
155
156
|
# Copyright 1999-2011 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: /var/cvsroot/gentoo-x86/sys-cluster/charm/charm-5.9.ebuild,v 1.19 2011/10/05 18:40:35 aballier Exp $
inherit eutils toolchain-funcs flag-o-matic
DESCRIPTION="Charm++ is a message-passing parallel language and runtime system."
LICENSE="charm"
HOMEPAGE="http://charm.cs.uiuc.edu/"
SRC_URI="${P}.tar.gz"
SLOT="0"
KEYWORDS="~x86"
IUSE="cmkopt tcp smp doc"
RESTRICT="fetch"
DEPEND="
doc? (
app-text/poppler
dev-tex/latex2html
virtual/latex-base
dev-texlive/texlive-genericrecommended
dev-texlive/texlive-latexextra
)"
RDEPEND="${DEPEND}"
CHARM_ARCH="net-linux"
CHARM_DOWNLOAD="http://charm.cs.uiuc.edu/download/"
pkg_nofetch() {
echo
einfo "Please download ${P}.tar.gz from"
einfo "${CHARM_DOWNLOAD}"
einfo "and then move it to ${DISTDIR}"
echo
}
src_unpack() {
unpack ${A}
epatch "${FILESDIR}"/${P}-gcc-4.2.patch
# add -fPIC to generate PIC code for charm so's
epatch "${FILESDIR}"/${PN}-fpic-gentoo.patch
# for pdf/html docs we need to patch the makefiles
if use doc; then
epatch "${FILESDIR}"/${PN}-doc-makefile-gentoo.patch
fi
# patch the example Makefiles so they run out of
# the box
epatch "${FILESDIR}"/${PN}-examples-gentoo.patch
# enable proper detection of python in configure
epatch "${FILESDIR}"/${PN}-python-configure-gentoo.patch
# gcc-4.1 fixes
epatch "${FILESDIR}"/${P}-gcc4.patch
# TCP instead of default UDP for socket comunication
# protocol
if use tcp; then
CHARM_OPTS="${CHARM_OPTS} tcp"
fi
# enable direct SMP support using shared memory
if use smp; then
CHARM_OPTS="${CHARM_OPTS} smp"
fi
# compile with icc if requested (icc or icpc)
if [ $(tc-getCC) = icc ] || [ $(tc-getCXX) = ic* ]; then
CHARM_OPTS="${CHARM_OPTS} icc"
fi
# CMK optimization
if use cmkopt; then
append-flags -DCMK_OPTIMIZE=1
fi
}
src_compile() {
# build charmm++ first
./build charm++ net-linux ${CHARM_OPTS} ${CFLAGS} || \
die "Failed to build charm++"
# make pdf/html docs
if use doc; then
cd "${S}"/doc
make doc || die "failed to create pdf/html docs"
fi
}
src_install() {
# make charmc play well with gentoo before
# we move it into /usr/bin
einfo "Fixing paths in charmc wrapper"
epatch "${FILESDIR}"/${PN}-charmc-gentoo.patch
sed -e "s/gentoo-include/${P}/" -i ./src/scripts/charmc || \
die "failed patching charmc script"
# install binaries
cd "${S}"/bin
dobin ./charmd ./charmd_faceless ./charmr* ./charmc ./charmxi \
./conv-cpm ./dep.pl || die "Failed to install binaries"
# install headers
cd "${S}"/include
insinto /usr/include/${P}
doins * || die "failed to install header files"
# install static libs
cd "${S}"/lib
dolib.a * || die "failed to install static libs"
# install shared libs
cd "${S}"/lib_so
dolib.so * || die "failed to install shared libs"
# basic docs
cd "${S}"
dodoc CHANGES README || die "Failed to install docs"
# install examples after fixing path to charmc
find examples/ -name 'Makefile' | xargs sed \
-r "s:(../)+bin/charmc:/usr/bin/charmc:" -i || \
die "Failed to fix examples"
find examples/ -name 'Makefile' | xargs sed \
-r "s:./charmrun:./charmrun ++local:" -i || \
die "Failed to fix examples"
insinto /usr/share/doc/${PF}/examples
doins -r examples/charm++/*
# pdf/html docs
if use doc; then
cd "${S}"/doc
# install pdfs
insinto /usr/share/doc/${PF}/pdf
doins doc/pdf/* || die "failed to install pdf docs"
# install html
docinto html
dohtml -r doc/html/* || die "failed to install html docs"
fi
}
pkg_postinst() {
echo
einfo "Please test your charm installation by copying the"
einfo "content of /usr/share/doc/${PF}/examples to a"
einfo "temporary location and run 'make test'."
echo
}
|