commit:     22f5947bb0b1a31ccc37aff042a7a12e8fdc6c33
Author:     Honza Macháček <Hloupy.Honza <AT> centrum <DOT> cz>
AuthorDate: Tue Nov 11 14:06:29 2014 +0000
Commit:     Honza Macháček <Hloupy.Honza <AT> centrum <DOT> cz>
CommitDate: Tue Nov 11 14:06:29 2014 +0000
URL:        http://sources.gentoo.org/gitweb/?p=proj/sci.git;a=commit;h=22f5947b

sci-chemistry/nwchem bumped to 6.5_p26243. IUSE options expanded, including 
those fore 64 bit integers and CUDA support. CCSDTQ and linear response for 
CCSDT+ methods selected unconditionally for now.

Package-Manager: portage-2.2.14

---
 sci-chemistry/nwchem/ChangeLog                     |   8 +
 .../nwchem/files/nwchem-6.5-python_makefile.patch  |  15 ++
 sci-chemistry/nwchem/metadata.xml                  |  30 ++-
 sci-chemistry/nwchem/nwchem-6.5_p26243.ebuild      | 259 +++++++++++++++++++++
 4 files changed, 311 insertions(+), 1 deletion(-)

diff --git a/sci-chemistry/nwchem/ChangeLog b/sci-chemistry/nwchem/ChangeLog
index d05e285..a9461ce 100644
--- a/sci-chemistry/nwchem/ChangeLog
+++ b/sci-chemistry/nwchem/ChangeLog
@@ -2,6 +2,14 @@
 # Copyright 1999-2014 Gentoo Foundation; Distributed under the GPL v2
 # $Header: $
 
+*nwchem-6.5_p26243 (11 Nov 2014)
+
+  11 Nov 2014; Honza Macháček <[email protected]>
+  +nwchem-6.5_p26243.ebuild, +files/nwchem-6.5-python_makefile.patch:
+  Version bump to sci-chemistry/nwchem-6.5_p26243. IUSE options expanded,
+  including those fore 64 bit integers and CUDA support. CCSDTQ and linear
+  response for CCSDT+ methods selected unconditionally for now.
+
   16 Sep 2014; Christoph Junghans <[email protected]> nwchem-6.3_p2-r1.ebuild:
   clean up
 

diff --git a/sci-chemistry/nwchem/files/nwchem-6.5-python_makefile.patch 
b/sci-chemistry/nwchem/files/nwchem-6.5-python_makefile.patch
new file mode 100644
index 0000000..c37310c
--- /dev/null
+++ b/sci-chemistry/nwchem/files/nwchem-6.5-python_makefile.patch
@@ -0,0 +1,15 @@
+--- src/config/makefile.h      2014-11-03 14:00:59.808794970 +0100
++++ src/config/makefile.h      2014-11-03 14:29:13.353470102 +0100
+@@ -2521,10 +2521,10 @@
+ endif
+ ifdef USE_PYTHON64
+-      CORE_LIBS += 
$(PYTHONHOME)/lib64/python$(PYTHONVERSION)/$(PYTHONCONFIGDIR)/libpython$(PYTHONVERSION).$(PYTHONLIBTYPE)
++      CORE_LIBS += 
$(PYTHONHOME)/lib64/libpython$(PYTHONVERSION).$(PYTHONLIBTYPE)
+ else
+   ifeq ($(GOTMINGW32),1)
+   CORE_LIBS += $(PYTHONHOME)/libs/libpython$(PYTHONVERSION).$(PYTHONLIBTYPE)
+   else
+-  CORE_LIBS += 
$(PYTHONHOME)/lib/python$(PYTHONVERSION)/$(PYTHONCONFIGDIR)/libpython$(PYTHONVERSION).$(PYTHONLIBTYPE)
++  CORE_LIBS += $(PYTHONHOME)/lib/libpython$(PYTHONVERSION).$(PYTHONLIBTYPE)
+   endif
+ endif

diff --git a/sci-chemistry/nwchem/metadata.xml 
b/sci-chemistry/nwchem/metadata.xml
index 11305d8..95b84c1 100644
--- a/sci-chemistry/nwchem/metadata.xml
+++ b/sci-chemistry/nwchem/metadata.xml
@@ -7,9 +7,37 @@
     <name>Alexey Shvetsov</name>
   </maintainer>
   <use>
-    <flag name="mrcc">Compile the MRCC module</flag>
+    <flag name="blas">
+      Use external BLAS library instead of the internal routines
+    </flag>
+  </use>
+  <use>
+    <flag name="cuda">
+      Enable CUDA GPU support for the Tensor Contraction Engine generated
+      methods (CI, MBPT, CC)
+    </flag>
+  </use>
+  <use>
+    <flag name="int64">
+      Use 64 bits integers
+    </flag>
+  </use>
+  <use>
+    <flag name="lapack">
+      Use external LAPACK library instead of the internal routines
+    </flag>
+  </use>
+  <use>
+    <flag name="mrcc">
+      Compile the routines for Multi Reference Coupled Clusters theory
+    </flag>
   </use>
   <use>
     <flag name="nwchem-tests">Install qa tests data</flag>
   </use>
+  <use>
+    <flag name="scalapack">
+      Use external SCALAPACK library
+    </flag>
+  </use>
 </pkgmetadata>

diff --git a/sci-chemistry/nwchem/nwchem-6.5_p26243.ebuild 
b/sci-chemistry/nwchem/nwchem-6.5_p26243.ebuild
new file mode 100644
index 0000000..8013233
--- /dev/null
+++ b/sci-chemistry/nwchem/nwchem-6.5_p26243.ebuild
@@ -0,0 +1,259 @@
+# Copyright 1999-2014 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: $
+
+EAPI=5
+
+PYTHON_COMPAT=( python{2_6,2_7} )
+
+inherit eutils flag-o-matic fortran-2 multilib python-single-r1 toolchain-funcs
+
+DATE="2014-09-10"
+
+DESCRIPTION="Delivering High-Performance Computational Chemistry to Science"
+HOMEPAGE="http://www.nwchem-sw.org/index.php/Main_Page";
+SRC_URI="http://www.nwchem-sw.org/images/Nwchem-${PV%_p*}.revision${PV#*_p}-src.${DATE}.tar.gz
+       http://www.nwchem-sw.org/images/Util_md_sockets.patch.gz
+       http://www.nwchem-sw.org/images/Hbar.patch.gz
+       http://www.nwchem-sw.org/images/Tcenxtask.patch.gz
+       http://www.nwchem-sw.org/images/Hnd_giaxyz_noinline.patch.gz
+       http://www.nwchem-sw.org/images/Parallelmpi.patch.gz
+       http://www.nwchem-sw.org/images/Makefile_gcc4x.patch.gz
+       http://www.nwchem-sw.org/images/Bcast_ccsd.patch.gz
+       http://www.nwchem-sw.org/images/Elpa_syncs.patch.gz
+       http://www.nwchem-sw.org/images/Xlmpoles_ifort15.patch.gz";
+
+LICENSE="ECL-2.0"
+SLOT="0"
+KEYWORDS="~x86 ~amd64"
+IUSE="blas cuda infiniband lapack mpi doc examples int64 nwchem-tests openmp 
mrcc python scalapack"
+
+REQUIRED_USE="python? ( ${PYTHON_REQUIRED_USE} )
+       infiniband? ( mpi )
+       scalapack? ( !int64 )"
+
+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}
+       app-shells/tcsh
+       mpi? ( 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}"
+
+pkg_setup() {
+       # fortran-2.eclass does not handle mpi wrappers
+       if use mpi; then
+               export FC="mpif90"
+               export F77="mpif77"
+               export CC="mpicc"
+               export CXX="mpic++"
+       else
+               tc-export FC F77 CC CXX
+       fi
+
+       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
+
+               append-flags "${openmp}"
+       fi
+
+       use python && python-single-r1_pkg_setup
+}
+
+src_unpack() {
+       unpack ${A}
+       mv "${LONG_S}" "${S}"
+}
+
+src_prepare() {
+       pushd "${S}"/src
+               for p in Util_md_sockets Hbar Tcenxtask Parallelmpi 
Makefile_gcc4x Bcast_ccsd Elpa_syncs Xlmpoles_ifort15
+                       do epatch "${WORKDIR}"/"${p}.patch"
+               done
+               cd NWints/hondo
+               epatch "${WORKDIR}"/Hnd_giaxyz_noinline.patch
+       popd
+       epatch "${FILESDIR}"/nwchem-6.1.1-nwchemrc.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
+       export USE_SUBGROUPS=yes
+       if use mpi ; then
+               export MSG_COMMS=MPI
+               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
+               else
+                       export ARMCI_NETWORK=MPI-TS
+               fi
+       else
+               unset USE_MPI
+               unset USE_MPIF
+               unset USE_MPIF4
+               export MSG_COMMS=TCGMSG
+               export ARMCI_NETWORK=SOCKETS
+       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_THEORY="TRUE"
+       export CCSDTQ="TRUE"
+       export CCSDTLR="TRUE"
+       unset BLASOPT
+       use blas && BLASOPT="$(pkg-config --libs blas)"
+       use lapack && BLASOPT+="$(pkg-config --libs lapack)"
+       use scalapack && BLASOPT+="$(pkg-config --libs scalapack)"
+       export BLASOPT
+       if use int64; then
+               BLAS_SIZE=8
+               LAPACK_SIZE=8
+               SCALAPACK_SIZE=8
+       else
+               BLAS_SIZE=4
+               LAPACK_SIZE=4
+               SCALAPACK_SIZE=4
+       fi
+       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"
+       fi
+       export LARGE_FILES="TRUE"
+
+       cd src
+       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
+}

Reply via email to