aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHonza Macháček <Hloupy.Honza@centrum.cz>2016-03-30 16:34:09 +0200
committerHonza Macháček <Hloupy.Honza@centrum.cz>2016-03-30 16:34:09 +0200
commit94a06710354314bfd07d9a8b124079193ddd1d4a (patch)
treed23c8bc4b467135d5504282ba5989b45ec7bf9f1 /sci-chemistry/nwchem/nwchem-6.6_p27746-r2.ebuild
parentsci-biology/scaffold_builder: clarify description (diff)
downloadsci-94a06710354314bfd07d9a8b124079193ddd1d4a.tar.gz
sci-94a06710354314bfd07d9a8b124079193ddd1d4a.tar.bz2
sci-94a06710354314bfd07d9a8b124079193ddd1d4a.zip
sci-chemistry/nwchem version bumped to 6.6 with minor ebuild improvements; Infiniband support should compile, source patched to allow unique names for all atoms
Package-Manager: portage-2.2.27
Diffstat (limited to 'sci-chemistry/nwchem/nwchem-6.6_p27746-r2.ebuild')
-rw-r--r--sci-chemistry/nwchem/nwchem-6.6_p27746-r2.ebuild279
1 files changed, 279 insertions, 0 deletions
diff --git a/sci-chemistry/nwchem/nwchem-6.6_p27746-r2.ebuild b/sci-chemistry/nwchem/nwchem-6.6_p27746-r2.ebuild
new file mode 100644
index 000000000..4c10fe832
--- /dev/null
+++ b/sci-chemistry/nwchem/nwchem-6.6_p27746-r2.ebuild
@@ -0,0 +1,279 @@
+# Copyright 1999-2015 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: $
+
+EAPI=5
+
+PYTHON_COMPAT=( python2_7 )
+
+inherit eutils flag-o-matic fortran-2 multilib python-single-r1 toolchain-funcs
+
+DATE="2015-10-20"
+
+DESCRIPTION="Delivering High-Performance Computational Chemistry to Science"
+HOMEPAGE="http://www.nwchem-sw.org/index.php/Main_Page"
+PATCH_REPO="http://www.nwchem-sw.org/images"
+PATCH_LIST="Tddft_mxvec20 Tools_lib64 Config_libs66 Cosmo_meminit Sym_abelian
+Xccvs98 Dplot_tolrho Driver_smalleig Ga_argv Raman_displ Ga_defs Zgesvd Cosmo_dftprint"
+SRC_URI="http://www.nwchem-sw.org/images/Nwchem-${PV%_p*}.revision${PV#*_p}-src.${DATE}.tar.bz2
+ $(for p in ${PATCH_LIST[@]}; do echo ${PATCH_REPO}/${p}.patch.gz; done)"
+
+LICENSE="ECL-2.0"
+SLOT="0"
+KEYWORDS="~x86 ~amd64"
+IUSE="blas cuda doc examples infiniband int64 lapack mrcc nwchem-tests openmp python scalapack"
+
+REQUIRED_USE="python? ( ${PYTHON_REQUIRED_USE} )
+ scalapack? ( !int64 )
+ lapack? ( blas )
+ scalapack? ( blas )"
+
+RDEPEND="
+ sys-fs/sysfsutils
+ blas? ( virtual/blas )
+ lapack? ( virtual/lapack )
+ scalapack? ( virtual/scalapack )
+ cuda? ( dev-util/nvidia-cuda-sdk )
+ int64? (
+ blas? ( virtual/blas[int64] )
+ lapack? ( virtual/lapack[int64] )
+ )
+ python? ( ${PYTHON_DEPS} )"
+DEPEND="${RDEPEND}
+ virtual/pkgconfig
+ app-shells/tcsh
+ virtual/mpi[fortran]
+ infiniband? ( || (
+ sys-cluster/openmpi[fortran,openmpi_fabrics_ofed]
+ sys-cluster/mvapich2[fortran]
+ ) )
+ doc? (
+ dev-texlive/texlive-latex
+ dev-tex/latex2html )"
+
+LONG_S="${WORKDIR}/Nwchem-${PV%_p*}.revision${PV#*_p}-src.${DATE}"
+S="${WORKDIR}/${PN}-${PV%_p*}"
+
+pkg_setup() {
+ # fortran-2.eclass does not handle mpi wrappers
+ export FC="mpif90"
+ export F77="mpif77"
+ export CC="mpicc"
+ export CXX="mpic++"
+
+ use openmp && FORTRAN_NEED_OPENMP=1
+
+ fortran-2_pkg_setup
+
+ if use openmp; then
+ # based on _fortran-has-openmp() of fortran-2.eclass
+ local openmp=""
+ local fcode=ebuild-openmp-flags.f
+ local _fc=$(tc-getFC)
+
+ pushd "${T}"
+ cat <<- EOF > "${fcode}"
+ 1 call omp_get_num_threads
+ 2 end
+ EOF
+
+ for openmp in -fopenmp -xopenmp -openmp -mp -omp -qsmp=omp; do
+ "${_fc}" "${openmp}" "${fcode}" -o "${fcode}.x" && break
+ done
+
+ rm -f "${fcode}.*"
+ popd
+
+ export FC="${FC} ${openmp}"
+ export F77="${F77} ${openmp}"
+ export CC="${CC} ${openmp}"
+ export CXX="${CXX} ${openmp}"
+ fi
+
+ use python && python-single-r1_pkg_setup
+}
+
+src_unpack() {
+ unpack ${A}
+ mv "${LONG_S}" "${S}"
+}
+
+src_prepare() {
+ for p in ${PATCH_LIST[@]}
+ do epatch "${WORKDIR}"/"${p}.patch"
+ done
+ epatch "${FILESDIR}"/nwchem-6.1.1-nwchemrc.patch
+ epatch "${FILESDIR}"/nwchem-6.5-icosahedron_zcoord.patch
+ epatch "${FILESDIR}"/nwchem-6.6-unique_tags.patch
+ use python && epatch "${FILESDIR}"/nwchem-6.5-python_makefile.patch
+ use doc && epatch "${FILESDIR}"/nwchem-6.3-r1-html_doc.patch
+
+ sed \
+ -e "s:DBASIS_LIBRARY=\"'\$(SRCDIR)'\":DBASIS_LIBRARY=\"'${EPREFIX}/usr/share/NWChem'\":g" \
+ -i src/basis/MakeFile src/basis/GNUmakefile || die
+ sed \
+ -e "s:DNWPW_LIBRARY=\"'\$(SRCDIR)'\":DNWPW_LIBRARY=\"'${EPREFIX}/usr/share/NWChem'\":g" \
+ -i src/nwpw/libraryps/GNUmakefile || die
+ sed \
+ -e "s:-DCOMPILATION_DIR=\"'\$(TOPDIR)'\":-DCOMPILATION_DIR=\"''\":g" \
+ -i src/GNUmakefile src/MakeFile || die
+
+ if [[ $(tc-getFC) == *-*-*-*-gfortran ]]; then
+ sed \
+ -e "s:ifneq (\$(FC),gfortran):ifneq (\$(FC),$(tc-getFC)):g" \
+ -e "s:ifeq (\$(FC),gfortran):ifeq (\$(FC),$(tc-getFC)):g" \
+ -i src/config/makefile.h || die
+ fi
+}
+
+src_compile() {
+ export NWCHEM_LONG_PATHS=Y
+ use openmp && export USE_OPENMP=1
+ export USE_MPI=y
+ export USE_MPIF=y
+ export USE_MPIF4=y
+ export MPI_LOC="${EPREFIX}"/usr
+ export MPI_INCLUDE=$MPI_LOC/include
+ export MPI_LIB=$MPI_LOC/$(get_libdir)
+ export LIBMPI="$(mpif90 -showme:link)"
+ if use infiniband; then
+ export ARMCI_NETWORK=OPENIB
+ export MSG_COMMS=MPI
+ export IB_INCLUDE="-I${MPI_INCLUDE}"
+ export IB_LIB="-L${MPI_LIB}"
+ else
+ unset ARMCI_NETWORK
+ fi
+ if [ "$ARCH" = "amd64" ]; then
+ export NWCHEM_TARGET=LINUX64
+ elif [ "$ARCH" = "ia64" ]; then
+ export NWCHEM_TARGET=LINUX64
+ elif [ "$ARCH" = "x86" ]; then
+ export NWCHEM_TARGET=LINUX
+ elif [ "$ARCH" = "ppc" ]; then
+ export NWCHEM_TARGET=LINUX
+ else
+ die "Unknown architecture"
+ fi
+ if use python ; then
+ if [ "$ARCH" = "amd64" ] || [ "$ARCH" = "ia64" ]; then
+ export USE_PYTHON64=yes
+ fi
+ export PYTHONHOME=/usr
+ export PYTHONVERSION=$(eselect python show --python2 |awk -Fpython '{ print $2 }')
+ export PYTHONPATH="./:${S}/contrib/python/"
+ export NWCHEM_MODULES="all python"
+ else
+ export NWCHEM_MODULES="all"
+ fi
+ use mrcc && export MRCC_METHODS="TRUE" # Multi Reference Coupled Clusters
+ export CCSDTQ="TRUE" # Coupled Clusters Singlets + Dublets + Triplets + Quadruplets
+ export CCSDTLR="TRUE" # CCSDT (and CCSDTQ?) Linear Response
+ export EACCSD="TRUE" # Electron Affinities at the CCSD level
+ export IPCCSD="TRUE" # Ionisation Potentials at the CCSD level
+ unset BLASOPT
+ local blaspkg="blas"
+ local lapackpkg="lapack"
+ if use int64; then
+ blaspkg="blas-int64"
+ lapackpkg="lapack-int64"
+ fi
+ use blas && export BLASOPT="$($(tc-getPKG_CONFIG) --libs ${blaspkg})"
+ use lapack && export BLASOPT+=" $($(tc-getPKG_CONFIG) --libs ${lapackpkg})"
+ use scalapack && export BLASOPT+=" $($(tc-getPKG_CONFIG) --libs scalapack)"
+ if use cuda; then
+ export TCE_CUDA=Y
+ export CUDA_PATH=/opt/cuda
+ export CUDA=${CUDA_PATH}/bin/nvcc
+ export CUDA_FLAGS="-arch=compute_20 -code=sm_20,compute_20"
+ export CUDA_INCLUDE="-I${CUDA_PATH}/include"
+ export CUDA_LIBS="-L${CUDA_PATH}/$(get_libdir) -lcublas -lcufft -lcudart -lcuda -lstdc++"
+ fi
+ export LARGE_FILES="TRUE"
+
+ cd src
+ if use blas && [ "$NWCHEM_TARGET" = "LINUX64" ]; then
+ if use int64; then
+ export BLAS_SIZE=8
+ export LAPACK_SIZE=8
+ export SCALAPACK_SIZE=8
+ else
+ emake \
+ DIAG=PAR \
+ FC="$(tc-getFC)" \
+ CC="$(tc-getCC)" \
+ CXX="$(tc-getCXX)" \
+ NWCHEM_TOP="${S}" \
+ clean
+ emake \
+ DIAG=PAR \
+ FC="$(tc-getFC)" \
+ CC="$(tc-getCC)" \
+ CXX="$(tc-getCXX)" \
+ NWCHEM_TOP="${S}" \
+ 64_to_32
+ export BLAS_SIZE=4
+ export LAPACK_SIZE=4
+ export SCALAPACK_SIZE=4
+ export USE_64TO32=y
+ fi
+ fi
+ emake \
+ DIAG=PAR \
+ FC="$(tc-getFC)" \
+ CC="$(tc-getCC)" \
+ CXX="$(tc-getCXX)" \
+ NWCHEM_TOP="${S}" \
+ NWCHEM_EXECUTABLE="${S}/bin/${NWCHEM_TARGET}/nwchem" \
+ nwchem_config
+ emake \
+ DIAG=PAR \
+ FC="$(tc-getFC)" \
+ CC="$(tc-getCC)" \
+ CXX="$(tc-getCXX)" \
+ NWCHEM_TOP="${S}" \
+ NWCHEM_EXECUTABLE="${S}/bin/${NWCHEM_TARGET}/nwchem"
+
+ if use doc; then
+ cd "${S}"/doc
+ export VARTEXFONTS="${T}/fonts"
+ emake \
+ DIAG=PAR \
+ NWCHEM_TOP="${S}" \
+ pdf html
+ fi
+}
+
+src_install() {
+ dobin bin/${NWCHEM_TARGET}/nwchem
+
+ insinto /usr/share/NWChem/basis/
+ doins -r src/basis/libraries src/data
+ insinto /usr/share/NWChem/nwpw
+ doins -r src/nwpw/libraryps
+
+ insinto /etc
+ doins nwchemrc
+
+ use examples && \
+ insinto /usr/share/NWChem/ && \
+ doins -r examples
+
+ use nwchem-tests && \
+ insinto /usr/share/NWChem && \
+ doins -r QA/tests
+
+ use doc && \
+ insinto /usr/share/doc/"${P}" && \
+ doins -r doc/nwahtml && \
+ doins -r web
+
+}
+
+pkg_postinst() {
+ echo
+ elog "The user will need to link \$HOME/.nwchemrc to /etc/nwchemrc"
+ elog "or copy it in order to tell NWChem the right position of the"
+ elog "basis library and other necessary data."
+ echo
+}