# Copyright 1999-2007 Gentoo Foundation # Distributed under the terms of the GNU General Public License v2 # $Header: $ inherit eutils java-pkg-2 versionator multilib toolchain-funcs MY_PN="OpenFOAM" MY_PV=$(get_version_component_range 1-3 ${PV}) MY_P="${MY_PN}-${MY_PV}" DESCRIPTION="Open Field Operation and Manipulation - CFD Simulation Toolbox" HOMEPAGE="http://www.opencfd.co.uk/openfoam/" SRC_URI="mirror://sourceforge/foam/${MY_P}.General.gtgz x86? ( mirror://sourceforge/foam/${MY_P}.linuxGccDPOpt.gtgz ) amd64? ( mirror://sourceforge/foam/${MY_P}.linux64GccDPOpt.gtgz )" LICENSE="GPL-2" SLOT="0" KEYWORDS="-* ~amd64 ~x86" IUSE="examples lam mpich parafoam" RDEPEND="!sci-libs/openfoam dev-java/sun-java3d-bin net-misc/openssh net-misc/mico sys-libs/readline sys-libs/zlib =sys-devel/gcc-4.2 for execution." fi if use parafoam ; then elog elog " In order to use paraFoam you need the ParaView package, " elog " but not newer than version 2.4.* ! " elog " It is highly recommended to *DISABLE* this USE-Flag and use " elog " instead the native OpenFOAM support in ParaView-2.6.*: " elog " You have to open the controlDict file of each case and " elog " choose the OpenFOAM filter for the controlDict files. " elog else elog elog " You are building with parafoam disabled, this means " elog " that paraFoam will not be installed. " elog " You have to use instead the native OpenFOAM support in ParaView-2.6.*: " elog " You have to open the controlDict file of each case and " elog " choose the OpenFOAM filter for the controlDict files. " elog fi if use amd64 ; then elog elog "In order to use OpenFOAM you should add the following lines to ~/.bashrc :" elog 'WM_64="on"' elog "source /usr/$(get_libdir)/OpenFOAM/bashrc" elog else elog elog "In order to use OpenFOAM you should add the following line to ~/.bashrc :" elog "source /usr/$(get_libdir)/OpenFOAM/bashrc" elog fi java-pkg-2_pkg_setup } src_unpack() { ln -s "${DISTDIR}"/${MY_P}.General.gtgz ${MY_P}.General.tgz unpack ./${MY_P}.General.tgz use x86 && ln -s "${DISTDIR}"/${MY_P}.linuxGccDPOpt.gtgz ${MY_P}.binary.tgz use amd64 && ln -s "${DISTDIR}"/${MY_P}.linux64GccDPOpt.gtgz ${MY_P}.binary.tgz unpack ./${MY_P}.binary.tgz cd "${S}" epatch "${FILESDIR}"/${P}.patch } src_compile() { use amd64 && export WM_64="on" if use lam ; then export WM_MPLIB=LAM elif use mpich ; then export WM_MPLIB=MPICH else export WM_MPLIB=OPENMPI fi sed -i -e "s|WM_PROJECT_VERSION=|WM_PROJECT_VERSION=${MY_PV} #|" \ -e "s|export WM_PROJECT_INST_DIR=\$HOME/\$WM_PROJECT|# export WM_PROJECT_INST_DIR=\$HOME/\$WM_PROJECT|" \ -e "s|#export WM_PROJECT_INST_DIR=/usr/local/\$WM_PROJECT|export WM_PROJECT_INST_DIR=/usr/$(get_libdir)/\$WM_PROJECT|" \ -e "s|[^#]export WM_MPLIB=| #export WM_MPLIB=|" \ -e "s|#export WM_MPLIB=$|export WM_MPLIB="${WM_MPLIB}"|" \ -e "s|SOURCE \$WM_PROJECT_DIR/\$FOAM_DOT_DIR/apps|#SOURCE \$WM_PROJECT_DIR/\$FOAM_DOT_DIR/apps|" \ "${S}"/.${MY_P}/bashrc sed -i -e "s|WM_PROJECT_VERSION |WM_PROJECT_VERSION ${MY_PV} #|" \ -e "s|setenv WM_PROJECT_INST_DIR \$HOME/\$WM_PROJECT|# setenv WM_PROJECT_INST_DIR \$HOME/\$WM_PROJECT|" \ -e "s|#setenv WM_PROJECT_INST_DIR /usr/local/\$WM_PROJECT|setenv WM_PROJECT_INST_DIR /usr/$(get_libdir)/\$WM_PROJECT|" \ -e "s|[^#]setenv WM_MPLIB | #setenv WM_MPLIB |" \ -e "s|#setenv WM_MPLIB OPENMPI$|setenv WM_MPLIB "${WM_MPLIB}"|" \ -e "s|SOURCE \$WM_PROJECT_DIR/\$FOAM_DOT_DIR/apps|#SOURCE \$WM_PROJECT_DIR/\$FOAM_DOT_DIR/apps|" \ "${S}"/.${MY_P}/cshrc sed -i -e "s|FOAM_JOB_DIR=\$WM_PROJECT_INST_DIR/jobControl|FOAM_JOB_DIR=\$HOME/\$WM_PROJECT/jobControl|" \ -e "s|WM_COMPILER_DIR=|WM_COMPILER_DIR=/usr # |" \ -e 's|JAVA_HOME=|JAVA_HOME=${JAVA_HOME} # |' \ -e 's|[^#]export OPENMPI_HOME=|# export OPENMPI_HOME=|' \ -e 's|OPENMPI_ARCH_PATH=|OPENMPI_ARCH_PATH=/usr # |' \ -e 's|[^#]export LAMHOME=|# export LAMHOME=|' \ -e 's|LAM_ARCH_PATH=|LAM_ARCH_PATH=/usr # |' \ -e 's|[^#]export MPICH_PATH=$FOAM_SRC|# export MPICH_PATH=$FOAM_SRC|' \ -e 's|MPICH_ARCH_PATH=|MPICH_ARCH_PATH=/usr # |' \ -e 's|AddLib $OPENMPI_ARCH_PATH|# AddLib $OPENMPI_ARCH_PATH|' \ -e 's|AddPath $OPENMPI_ARCH_PATH|# AddPath $OPENMPI_ARCH_PATH|' \ -e 's|AddLib $LAM_ARCH_PATH|# AddLib $LAM_ARCH_PATH|' \ -e 's|AddPath $LAM_ARCH_PATH|# AddPath $LAM_ARCH_PATH|' \ -e 's|AddLib $MPICH_ARCH_PATH|# AddLib $MPICH_ARCH_PATH|' \ -e 's|AddPath $MPICH_ARCH_PATH|# AddPath $MPICH_ARCH_PATH|' \ "${S}"/.bashrc sed -i -e "s|FOAM_JOB_DIR \$WM_PROJECT_INST_DIR/jobControl|FOAM_JOB_DIR \$HOME/\$WM_PROJECT/jobControl|" \ -e "s|WM_COMPILER_DIR |WM_COMPILER_DIR /usr # |" \ -e 's|JAVA_HOME |JAVA_HOME ${JAVA_HOME} # |' \ -e 's|[^#]setenv OPENMPI_HOME|# setenv OPENMPI_HOME|' \ -e 's|OPENMPI_ARCH_PATH |OPENMPI_ARCH_PATH /usr # |' \ -e 's|[^#]setenv LAMHOME|# setenv LAMHOME|' \ -e 's|LAM_ARCH_PATH |LAM_ARCH_PATH /usr # |' \ -e 's|[^#]setenv MPICH_PATH $FOAM_SRC|# setenv MPICH_PATH $FOAM_SRC|' \ -e 's|MPICH_ARCH_PATH |MPICH_ARCH_PATH /usr # |' \ -e 's|AddLib $OPENMPI_ARCH_PATH|# AddLib $OPENMPI_ARCH_PATH|' \ -e 's|AddPath $OPENMPI_ARCH_PATH|# AddPath $OPENMPI_ARCH_PATH|' \ -e 's|AddLib $LAM_ARCH_PATH|# AddLib $LAM_ARCH_PATH|' \ -e 's|AddPath $LAM_ARCH_PATH|# AddPath $LAM_ARCH_PATH|' \ -e 's|AddLib $MPICH_ARCH_PATH|# AddLib $MPICH_ARCH_PATH|' \ -e 's|AddPath $MPICH_ARCH_PATH|# AddPath $MPICH_ARCH_PATH|' \ "${S}"/.cshrc 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|" \ "${S}"/applications/utilities/mesh/manipulation/patchTool/Java/Allwmake 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|" \ "${S}"/applications/utilities/mesh/manipulation/patchTool/Java/Make/options sed -i -e "s|#SOURCE \$WM_PROJECT_DIR/\$FOAM_DOT_DIR/apps/paraview|SOURCE \$WM_PROJECT_DIR/\$FOAM_DOT_DIR/apps/paraview|" \ "${S}"/.${MY_P}/bashrc || die "could not replace source options" index=`grep -n "CMAKE_HOME/bin:" "${S}"/."${MY_P}"/apps/paraview/bashrc | cut -d ':' -f 1,1` index1=$((${index}-1)) index2=$((${index}+1)) sed -i -e "s|CMAKE_HOME=|CMAKE_HOME=/usr # |" \ -e "${index1}{s|[^#]|# i|}" \ -e "${index2}{s|[^#]|# f|}" \ -e "s|[^#]export PATH=\$CMAKE_HOME/|# export PATH=\$CMAKE_HOME/|" \ -e "s|ParaView_VERSION=|ParaView_VERSION=${MY_PARA_PV} # |" \ -e "s|ParaView_INST_DIR=\$WM_PROJECT_INST_DIR/\$WM_ARCH/paraview-\$ParaView_VERSION|ParaView_INST_DIR=/usr|" \ -e "s|\$ParaView_INST_DIR/lib/paraview-2.4|\$ParaView_INST_DIR/lib/ParaView-${MY_PARA_PV_SHORT}|" \ -e "s|[^#]export PATH=\$ParaView_INST_DIR|# export PATH=\$ParaView_INST_DIR|" \ -e "s|[^#]export LD_LIBRARY_PATH=|# export LD_LIBRARY_PATH=|" \ "${S}"/."${MY_P}"/apps/paraview/bashrc index=`grep -n "CMAKE_HOME/bin" "${S}"/."${MY_P}"/apps/paraview/cshrc | cut -d ':' -f 1,1` index1=$((${index}-1)) index2=$((${index}+1)) sed -i -e "s|CMAKE_HOME |CMAKE_HOME /usr # |" \ -e "${index1}{s|[^#]|# i|}" \ -e "${index2}{s|[^#]|# f|}" \ -e "s|[^#]set path=(\$CMAKE_HOME/|# set path=(\$CMAKE_HOME/|" \ -e "s|ParaView_VERSION |ParaView_VERSION ${MY_PARA_PV} # |" \ -e "s|ParaView_INST_DIR \$WM_PROJECT_INST_DIR/\$WM_ARCH/paraview-\$ParaView_VERSION|ParaView_INST_DIR /usr|" \ -e "s|\$ParaView_INST_DIR/lib/paraview-2.4|\$ParaView_INST_DIR/lib/ParaView-${MY_PARA_PV_SHORT}|" \ -e "s|[^#]set path=(\$ParaView_INST_DIR|# set path=(\$ParaView_INST_DIR|" \ -e "s|[^#]setenv LD_LIBRARY_PATH|# setenv LD_LIBRARY_PATH|" \ "${S}"/."${MY_P}"/apps/paraview/cshrc sed -i -e 's|MICO_VERSION=|MICO_VERSION=`/usr/bin/mico-config --version` # |' \ -e "s|[^#]export MICO_PATH=|# export MICO_PATH=|" \ -e "s|MICO_ARCH_PATH=|MICO_ARCH_PATH=/usr # |" \ "${S}"/.bashrc sed -i -e 's|MICO_VERSION |MICO_VERSION `/usr/bin/mico-config --version` # |' \ -e "s|[^#]setenv MICO_PATH |# setenv MICO_PATH |" \ -e "s|MICO_ARCH_PATH |MICO_ARCH_PATH /usr # |" \ "${S}"/.cshrc cp "${S}"/.${MY_P}/bashrc "${S}"/.${MY_P}/bashrc.bak sed -i -e "s|WM_PROJECT_INST_DIR=/usr/lib/\$WM_PROJECT|WM_PROJECT_INST_DIR="${WORKDIR}"|" \ -e "s|WM_PROJECT_DIR=\$WM_PROJECT_INST_DIR/\$WM_PROJECT-\$WM_PROJECT_VERSION|WM_PROJECT_DIR="${S}"|" \ "${S}"/.${MY_P}/bashrc.bak \ || die "could not replace source options" . "${S}"/.${MY_P}/bashrc.bak rm "${S}"/.${MY_P}/bashrc.bak use !parafoam && rm "${S}"/bin/paraFoam* sed -i -e "s|/\$WM_OPTIONS||" "${S}"/.bashrc || die "could not delete \$WM_OPTIONS in .bashrc" sed -i -e "s|/\$WM_OPTIONS||" "${S}"/.cshrc || die "could not delete \$WM_OPTIONS in .cshrc" 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 rm "${S}"/wmake/rules/{solarisGcc,sgi64Gcc,sgiN32Gcc}/dirToString rm "${S}"/wmake/rules/{solarisGcc,linuxI64}/wmkdep } src_test() { cd "${S}"/bin ./foamInstallationTest } src_install() { insinto /usr/$(get_libdir)/"${MY_PN}"/${MY_P} doins -r .bashrc .cshrc .${MY_P} use examples && doins -r tutorials insopts -m0755 doins -r bin insinto /usr/$(get_libdir)/${MY_PN}/${MY_P}/applications/bin doins -r applications/bin/${WM_OPTIONS}/* insinto /usr/$(get_libdir)/${MY_PN}/${MY_P}/lib doins -r lib/${WM_OPTIONS}/* insinto /usr/$(get_libdir)/${MY_PN}/${MY_P}/wmake doins -r wmake/* insopts -m0644 find "${S}"/applications -type d \( -name "${WM_OPTIONS}" -o -name linuxDebug -o -name linuxOpt \) | xargs rm -rf insinto /usr/$(get_libdir)/${MY_PN}/${MY_P}/applications doins -r applications/solvers applications/test applications/utilities insinto /usr/share/${MY_PN}/${MY_P}/doc doins -r README doc/Guides-a4 doc/Guides-usletter dosym /usr/$(get_libdir)/${MY_PN}/${MY_P}/.${MY_P}/bashrc /usr/$(get_libdir)/${MY_PN}/bashrc dosym /usr/$(get_libdir)/${MY_PN}/${MY_P}/.${MY_P}/cshrc /usr/$(get_libdir)/${MY_PN}/cshrc }