]> Pileus Git - ~andy/sunrise/blob - sci-libs/openfoam/openfoam-1.4.1_p20080118.ebuild
1c6f52471cfc711f829bb12ff4a69ca41c254115
[~andy/sunrise] / sci-libs / openfoam / openfoam-1.4.1_p20080118.ebuild
1 # Copyright 1999-2008 Gentoo Foundation
2 # Distributed under the terms of the GNU General Public License v2
3 # $Header:  $
4
5 inherit eutils java-pkg-2 versionator multilib toolchain-funcs
6
7 MY_PN="OpenFOAM"
8 MY_PV=$(get_version_component_range 1-3 ${PV})
9 MY_P="${MY_PN}-${MY_PV}"
10
11 DESCRIPTION="Open Field Operation and Manipulation - CFD Simulation Toolbox"
12 HOMEPAGE="http://www.opencfd.co.uk/openfoam/"
13 SRC_URI="mirror://sourceforge/foam/${MY_P}.General.gtgz
14         http://dev.gentooexperimental.org/~tommy/${P}.patch"
15
16 LICENSE="GPL-2"
17 SLOT="0"
18 KEYWORDS="~amd64 ~x86"
19 IUSE="examples lam mpich"
20
21 DEPEND="!=sci-libs/openfoam-bin-${MY_PV}*
22         !=sci-libs/openfoam-kernel-${MY_PV}*
23         !=sci-libs/openfoam-meta-${MY_PV}*
24         !=sci-libs/openfoam-solvers-${MY_PV}*
25         !=sci-libs/openfoam-utilities-${MY_PV}*
26         !=sci-libs/openfoam-wmake-${MY_PV}*
27         =dev-java/sun-java3d-bin-1.4*
28         net-misc/mico
29         <virtual/jdk-1.5
30         sci-libs/parmetis
31         || ( >sci-visualization/paraview-3.0 sci-visualization/opendx )
32         !mpich? ( !lam? ( sys-cluster/openmpi ) )
33         lam? ( sys-cluster/lam-mpi )
34         mpich? ( sys-cluster/mpich2 )"
35
36 S=${WORKDIR}/${MY_P}
37
38 pkg_setup() {
39         if use lam && use mpich ; then
40                 die "Please choose only one MPI implementation as default."
41         fi
42
43         if ! version_is_at_least 4.1 $(gcc-version) ; then
44                 die "${PN} requires >=sys-devel/gcc-4.1 to compile."
45         fi
46
47         if use amd64 ; then
48                 elog
49                 elog "In order to use OpenFOAM you should add the following lines to ~/.bashrc :"
50                 elog 'WM_64="on"'
51                 elog "source /usr/$(get_libdir)/OpenFOAM/bashrc"
52         else
53                 elog
54                 elog "In order to use OpenFOAM you should add the following line to ~/.bashrc :"
55                 elog "source /usr/$(get_libdir)/OpenFOAM/bashrc"
56         fi
57
58         elog
59         elog "In order to get FoamX running, you have to do the following: "
60         elog "mkdir -p ~/.${MY_P}/apps "
61         elog "cp -r /usr/$(get_libdir)/${MY_PN}/${MY_P}/.${MY_P}/apps/FoamX ~/.${MY_P}/apps "
62         elog
63
64         java-pkg-2_pkg_setup
65 }
66
67 src_unpack() {
68         ln -s "${DISTDIR}"/${MY_P}.General.gtgz ${MY_P}.General.tgz
69         unpack ./${MY_P}.General.tgz
70
71         cd "${S}"
72         epatch "${DISTDIR}"/${P}.patch
73         epatch "${FILESDIR}"/compile-${PV}.patch
74         epatch "${FILESDIR}"/${PN}-paraFoam-${PV}.patch
75 }
76
77 src_compile() {
78         use amd64 && export WM_64="on"
79
80         if use lam ; then
81                 export WM_MPLIB=LAM
82         elif use mpich ; then
83                 export WM_MPLIB=MPICH
84         else
85                 export WM_MPLIB=OPENMPI
86         fi
87
88         sed -i -e "s|WM_PROJECT_VERSION=|WM_PROJECT_VERSION=${MY_PV} #|"        \
89                 -e "s|export WM_PROJECT_INST_DIR=\$HOME/\$WM_PROJECT|# export WM_PROJECT_INST_DIR=\$HOME/\$WM_PROJECT|" \
90                 -e "s|#export WM_PROJECT_INST_DIR=/usr/local/\$WM_PROJECT|export WM_PROJECT_INST_DIR=/usr/$(get_libdir)/\$WM_PROJECT|"  \
91                 -e "s|[^#]export WM_MPLIB=| #export WM_MPLIB=|" \
92                 -e "s|#export WM_MPLIB=$|export WM_MPLIB="${WM_MPLIB}"|" \
93                 -e "s|SOURCE \$WM_PROJECT_DIR/\$FOAM_DOT_DIR/apps|#SOURCE \$WM_PROJECT_DIR/\$FOAM_DOT_DIR/apps|"        \
94                         "${S}"/.${MY_P}/bashrc
95
96         sed -i -e "s|WM_PROJECT_VERSION |WM_PROJECT_VERSION ${MY_PV} #|"        \
97                 -e "s|setenv WM_PROJECT_INST_DIR \$HOME/\$WM_PROJECT|# setenv WM_PROJECT_INST_DIR \$HOME/\$WM_PROJECT|" \
98                 -e "s|#setenv WM_PROJECT_INST_DIR /usr/local/\$WM_PROJECT|setenv WM_PROJECT_INST_DIR /usr/$(get_libdir)/\$WM_PROJECT|"  \
99                 -e "s|[^#]setenv WM_MPLIB | #setenv WM_MPLIB |" \
100                 -e "s|#setenv WM_MPLIB OPENMPI|setenv WM_MPLIB "${WM_MPLIB}"|" \
101                 -e "s|SOURCE \$WM_PROJECT_DIR/\$FOAM_DOT_DIR/apps|#SOURCE \$WM_PROJECT_DIR/\$FOAM_DOT_DIR/apps|"        \
102                         "${S}"/.${MY_P}/cshrc
103
104         sed -i -e "s|FOAM_JOB_DIR=\$WM_PROJECT_INST_DIR/jobControl|FOAM_JOB_DIR=\$HOME/\$WM_PROJECT/jobControl|"        \
105                 -e "s|WM_COMPILER_DIR=|WM_COMPILER_DIR=/usr # |"        \
106                 -e 's|JAVA_HOME=|JAVA_HOME=${JAVA_HOME} # |'    \
107                 -e 's@OPENMPI_VERSION=@OPENMPI_VERSION=`/usr/bin/ompi_info --version ompi full --parsable | grep ompi:version:full | cut -d: -f4-` # @' \
108                 -e 's|[^#]export OPENMPI_HOME=|# export OPENMPI_HOME=|' \
109                 -e 's|OPENMPI_ARCH_PATH=|OPENMPI_ARCH_PATH=/usr # |'    \
110                 -e 's@LAM_VERSION=@LAM_VERSION=`/usr/bin/laminfo -version lam full | awk ''{print \$\$2}''` # @'        \
111                 -e 's|[^#]export LAMHOME=|# export LAMHOME=|'   \
112                 -e 's|LAM_ARCH_PATH=|LAM_ARCH_PATH=/usr # |'    \
113                 -e 's|MPICH_VERSION=|MPICH_VERSION=`/usr/bin/mpich2version --version` # |'      \
114                 -e 's|[^#]export MPICH_PATH=$FOAM_SRC|# export MPICH_PATH=$FOAM_SRC|'   \
115                 -e 's|MPICH_ARCH_PATH=|MPICH_ARCH_PATH=/usr # |'        \
116                 -e 's|AddLib $OPENMPI_ARCH_PATH|# AddLib $OPENMPI_ARCH_PATH|'   \
117                 -e 's|AddPath $OPENMPI_ARCH_PATH|# AddPath $OPENMPI_ARCH_PATH|' \
118                 -e 's|AddLib $LAM_ARCH_PATH|# AddLib $LAM_ARCH_PATH|'   \
119                 -e 's|AddPath $LAM_ARCH_PATH|# AddPath $LAM_ARCH_PATH|' \
120                 -e 's|AddLib $MPICH_ARCH_PATH|# AddLib $MPICH_ARCH_PATH|'       \
121                 -e 's|AddPath $MPICH_ARCH_PATH|# AddPath $MPICH_ARCH_PATH|'     \
122                 -e 's|$FOAM_LIBBIN/openmpi-$OPENMPI_VERSION|$FOAM_LIBBIN/openmpi|'      \
123                 -e 's|$FOAM_LIBBIN/lam-$LAM_VERSION|$FOAM_LIBBIN/lam|'  \
124                 -e 's|$FOAM_LIBBIN/mpich-$MPICH_VERSION|$FOAM_LIBBIN/mpich|'    \
125                 -e 's|MICO_VERSION=|MICO_VERSION=`/usr/bin/mico-config --version` # |'  \
126                 -e "s|[^#]export MICO_PATH=|# export MICO_PATH=|"       \
127                 -e "s|MICO_ARCH_PATH=|MICO_ARCH_PATH=/usr # |"  \
128                         "${S}"/.bashrc
129
130         sed -i -e "s|FOAM_JOB_DIR \$WM_PROJECT_INST_DIR/jobControl|FOAM_JOB_DIR \$HOME/\$WM_PROJECT/jobControl|"        \
131                 -e "s|WM_COMPILER_DIR |WM_COMPILER_DIR /usr # |"        \
132                 -e 's|JAVA_HOME |JAVA_HOME ${JAVA_HOME} # |'    \
133                 -e 's@OPENMPI_VERSION @OPENMPI_VERSION `/usr/bin/ompi_info --version ompi full --parsable | grep ompi:version:full | cut -d: -f4-` # @' \
134                 -e 's|[^#]setenv OPENMPI_HOME|# setenv OPENMPI_HOME|'   \
135                 -e 's|OPENMPI_ARCH_PATH |OPENMPI_ARCH_PATH /usr # |'    \
136                 -e 's@LAM_VERSION @LAM_VERSION `/usr/bin/laminfo -version lam full | awk ''{print \$\$2}''` # @'        \
137                 -e 's|[^#]setenv LAMHOME|# setenv LAMHOME|'     \
138                 -e 's|LAM_ARCH_PATH |LAM_ARCH_PATH /usr # |'    \
139                 -e 's|MPICH_VERSION |MPICH_VERSION `/usr/bin/mpich2version --version` # |'      \
140                 -e 's|[^#]setenv MPICH_PATH $FOAM_SRC|# setenv MPICH_PATH $FOAM_SRC|'   \
141                 -e 's|MPICH_ARCH_PATH |MPICH_ARCH_PATH /usr # |'        \
142                 -e 's|AddLib $OPENMPI_ARCH_PATH|# AddLib $OPENMPI_ARCH_PATH|'   \
143                 -e 's|AddPath $OPENMPI_ARCH_PATH|# AddPath $OPENMPI_ARCH_PATH|' \
144                 -e 's|AddLib $LAM_ARCH_PATH|# AddLib $LAM_ARCH_PATH|'   \
145                 -e 's|AddPath $LAM_ARCH_PATH|# AddPath $LAM_ARCH_PATH|' \
146                 -e 's|AddLib $MPICH_ARCH_PATH|# AddLib $MPICH_ARCH_PATH|'       \
147                 -e 's|AddPath $MPICH_ARCH_PATH|# AddPath $MPICH_ARCH_PATH|'     \
148                 -e 's|$FOAM_LIBBIN/openmpi-$OPENMPI_VERSION|$FOAM_LIBBIN/openmpi|'      \
149                 -e 's|$FOAM_LIBBIN/lam-$LAM_VERSION|$FOAM_LIBBIN/lam|'  \
150                 -e 's|$FOAM_LIBBIN/mpich-$MPICH_VERSION|$FOAM_LIBBIN/mpich|'    \
151                 -e 's|MICO_VERSION |MICO_VERSION `/usr/bin/mico-config --version` # |'  \
152                 -e "s|[^#]setenv MICO_PATH |# setenv MICO_PATH |"       \
153                 -e "s|MICO_ARCH_PATH |MICO_ARCH_PATH /usr # |"  \
154                         "${S}"/.cshrc
155
156         sed -i -e "s|/lib/j3d-org.jar|/lib/j3d-org.jar:/usr/share/sun-java3d-bin/lib/vecmath.jar:/usr/share/sun-java3d-bin/lib/j3dutils.jar:/usr/share/sun-java3d-bin/lib/j3dcore.jar|" \
157                 "${S}"/applications/utilities/mesh/manipulation/patchTool/Java/Allwmake
158
159         sed -i -e "s|:../lib/j3d-org.jar|:../lib/j3d-org.jar:/usr/share/sun-java3d-bin/lib/vecmath.jar:/usr/share/sun-java3d-bin/lib/j3dutils.jar:/usr/share/sun-java3d-bin/lib/j3dcore.jar|"   \
160                 "${S}"/applications/utilities/mesh/manipulation/patchTool/Java/Make/options
161
162         sed -i -e "s|-lmetis \\\|-lmetis|"      \
163         -e 's|../metis-5.0pre2/include|/usr/include/metis|'     \
164         -e 's|-lGKlib||'        \
165         "${S}"/applications/utilities/parallelProcessing/decompositionMethods/decompositionMethods/Make/options \
166         || die "could not replace metis options"
167
168         sed -i -e 's|wmake libso metis|# wmake libso metis|'    \
169         "${S}"/applications/utilities/parallelProcessing/decompositionMethods/Allwmake  \
170         || die "could not replace metis options"
171
172         sed -i -e 's|wmake libso ParMetis|# wmake libso ParMetis|'      \
173         "${S}"/applications/utilities/parallelProcessing/decompositionMethods/parMetisDecomp/Allwmake   \
174         || die "could not replace metis options"
175
176         sed -i -e 's|parMetisDecomp/ParMetis-3.1/ParMETISLib|/usr/include/parmetis|'    \
177         "${S}"/applications/utilities/parallelProcessing/decompositionMethods/parMetisDecomp/Make/options       \
178         || die "could not replace metis options"
179
180         cp "${S}"/.${MY_P}/bashrc "${S}"/.${MY_P}/bashrc.bak || "cannot copy bashrc"
181
182         sed -i -e "s|WM_PROJECT_INST_DIR=/usr/$(get_libdir)/\$WM_PROJECT|WM_PROJECT_INST_DIR="${WORKDIR}"|"             \
183                 -e "s|WM_PROJECT_DIR=\$WM_PROJECT_INST_DIR/\$WM_PROJECT-\$WM_PROJECT_VERSION|WM_PROJECT_DIR="${S}"|"    \
184                 "${S}"/.${MY_P}/bashrc.bak      \
185                 || die "could not replace source options"
186
187         source "${S}"/.${MY_P}/bashrc.bak
188
189         find "${S}"/wmake -name dirToString | xargs rm -rf
190         find "${S}"/wmake -name wmkdep | xargs rm -rf
191
192         cd "${S}"
193         ./Allwmake || die "could not build"
194
195         rm "${S}"/bin/paraFoam.pvs
196         rm "${S}"/.${MY_P}/bashrc.bak
197
198         sed -i -e "s|/\$WM_OPTIONS||" "${S}"/.bashrc || die "could not delete \$WM_OPTIONS in .bashrc"
199         sed -i -e "s|/\$WM_OPTIONS||" "${S}"/.cshrc || die "could not delete \$WM_OPTIONS in .cshrc"
200         rm "${S}"/applications/utilities/mesh/conversion/ccm26ToFoam/libccmio/config/{irix64_6.5-mips4,irix_6.5-mips3,sunos64_5.8-ultra,linux64_2.6-pwr4-glibc_2.3.3}/qmake
201 }
202
203 src_test() {
204         cd "${S}"/bin
205         ./foamInstallationTest
206 }
207
208 src_install() {
209         insinto /usr/$(get_libdir)/"${MY_PN}"/${MY_P}
210         doins -r .bashrc .cshrc .${MY_P}
211
212         use examples && doins -r tutorials
213
214         insopts -m0755
215         doins -r bin
216
217         insinto /usr/$(get_libdir)/${MY_PN}/${MY_P}/applications/bin
218         doins -r applications/bin/${WM_OPTIONS}/*
219
220         insinto /usr/$(get_libdir)/${MY_PN}/${MY_P}/lib
221         doins -r lib/${WM_OPTIONS}/*
222
223         insinto /usr/$(get_libdir)/${MY_PN}/${MY_P}/wmake
224         doins -r wmake/*
225
226         insopts -m0644
227         find "${S}"/applications -type d \( -name "${WM_OPTIONS}" -o -name linuxDebug -o -name linuxOpt \)  | xargs rm -rf
228
229         insinto /usr/$(get_libdir)/${MY_PN}/${MY_P}/applications
230         doins -r applications/solvers applications/test applications/utilities
231
232         insinto /usr/share/${MY_PN}/${MY_P}/doc
233         doins -r README doc/Guides-a4 doc/Guides-usletter
234
235         dosym /usr/$(get_libdir)/${MY_PN}/${MY_P}/.${MY_P}/bashrc /usr/$(get_libdir)/${MY_PN}/bashrc
236         dosym /usr/$(get_libdir)/${MY_PN}/${MY_P}/.${MY_P}/cshrc /usr/$(get_libdir)/${MY_PN}/cshrc
237 }