commit: 94a06710354314bfd07d9a8b124079193ddd1d4a Author: Honza Macháček <Hloupy.Honza <AT> centrum <DOT> cz> AuthorDate: Wed Mar 30 14:34:09 2016 +0000 Commit: Honza Macháček <Hloupy.Honza <AT> centrum <DOT> cz> CommitDate: Wed Mar 30 14:34:09 2016 +0000 URL: https://gitweb.gentoo.org/proj/sci.git/commit/?id=94a06710
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 .../nwchem/files/nwchem-6.6-unique_tags.patch | 12 + sci-chemistry/nwchem/nwchem-6.6_p27746-r2.ebuild | 279 +++++++++++++++++++++ 2 files changed, 291 insertions(+) diff --git a/sci-chemistry/nwchem/files/nwchem-6.6-unique_tags.patch b/sci-chemistry/nwchem/files/nwchem-6.6-unique_tags.patch new file mode 100644 index 0000000..e129406 --- /dev/null +++ b/sci-chemistry/nwchem/files/nwchem-6.6-unique_tags.patch @@ -0,0 +1,12 @@ +diff -Naurp nwchem-6.6.orig/src/util/nwc_const.fh nwchem-6.6/src/util/nwc_const.fh +--- nwchem-6.6.orig/src/util/nwc_const.fh 2015-10-01 17:33:14.000000000 +0000 ++++ nwchem-6.6/src/util/nwc_const.fh 2015-11-26 10:53:46.386110924 +0000 +@@ -62,7 +62,7 @@ + * Maximum number of unique tags + * + integer nw_max_unq_tags +- parameter (nw_max_unq_tags = 40) ++ parameter (nw_max_unq_tags = nw_max_atom) + *------------------------------------------------------------------------------ + * Maximum number of general contractions in a shell + * 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 0000000..4c10fe8 --- /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 +}
