commit:     e9fc59e7cc0b16c130f16ff22fc3242f1fe3333b
Author:     Alexey Shvetsov <alexxy <AT> gentoo <DOT> org>
AuthorDate: Thu May 26 09:17:53 2016 +0000
Commit:     Alexey Shvetsov <alexxy <AT> gentoo <DOT> org>
CommitDate: Thu May 26 09:17:53 2016 +0000
URL:        https://gitweb.gentoo.org/proj/sci.git/commit/?id=e9fc59e7

sci-chemistry/gamess: Version bump

BugID #439908

Package-Manager: portage-2.3.0_rc1

 .../gamess/files/gamess-20141205.1.gentoo.patch    | 198 ++++++++++++
 sci-chemistry/gamess/gamess-20141205.1.ebuild      | 338 +++++++++++++++++++++
 2 files changed, 536 insertions(+)

diff --git a/sci-chemistry/gamess/files/gamess-20141205.1.gentoo.patch 
b/sci-chemistry/gamess/files/gamess-20141205.1.gentoo.patch
new file mode 100644
index 0000000..742ea46
--- /dev/null
+++ b/sci-chemistry/gamess/files/gamess-20141205.1.gentoo.patch
@@ -0,0 +1,198 @@
+diff -urN gamess.orig/comp gamess/comp
+--- gamess.orig/comp   2015-01-15 17:49:05.000000000 +0300
++++ gamess/comp        2016-05-26 11:40:00.143511481 +0300
+@@ -1535,7 +1535,7 @@
+ #
+    case gfortran:
+ #
+-      set OPT='-O2'
++      set gentoo-OPT='-O2'
+       if ($MODULE == zheev)  set OPT='-O0'  # defensive compiling
+ 
+       set EXTRAOPT=" "
+@@ -1577,6 +1577,11 @@
+             breaksw
+          case 4.8:
+          case 4.9:
++       case 5.0:
++       case 5.1:
++       case 5.2:
++       case 5.3:
++       case 6.0:
+             if ($MODULE == cosmo)  set OPT='-O0'
+             if ($MODULE == dcscf)  set OPT='-O0'
+             if ($MODULE == tddgrd) set OPT='-O0'
+@@ -1605,7 +1610,7 @@
+ #    optimizations in 32 bit mode, as a function of the ifort version.
+ #
+    case ifort:
+-   set OPT = '-O3'
++   set gentoo-OPT = '-O2'
+    if ($MODULE == delocl) set OPT='-O0'  # from Cheol
+    if ($MODULE == prpamm) set OPT='-O0'  # for exam13
+    if ($MODULE == zheev)  set OPT='-O0'
+@@ -1740,7 +1745,7 @@
+ #
+ #         first, initialize OPT and EXTRAOPT
+ #
+-      set OPT='-O2'
++      set gentoo-OPT='-O2'
+       if ($MODULE == zheev)  set OPT='-O0'  # defensive compiling
+ 
+       set EXTRAOPT=" "
+@@ -1793,6 +1798,11 @@
+             breaksw
+          case 4.8:
+          case 4.9:
++       case 5.0:
++       case 5.1:
++       case 5.2:
++       case 5.3:
++       case 6.0:
+             if ($MODULE == cosmo)  set OPT='-O0'  # same issue as seen in 4.6
+             if ($MODULE == dcscf)  set OPT='-O0'  # exam44, continues from 4.7
+             if ($MODULE == tddgrd) set OPT='-O0'  # exam41, continues from 4.6
+@@ -1829,7 +1839,7 @@
+ #     -WB means warn but don't fail on out-of-bounds array references
+ #     -ftz flushes underflow results to zero
+ #
+-      set OPT = '-O2'
++      set gentoo-OPT = '-O2'
+       if (".$GMS_DEBUG_FLAGS" != .) set OPT="$GMS_DEBUG_FLAGS"
+ #       alas, I'm so tired of hearing about so many versions failing to
+ #       diagonalize, that this time critical code is run w/o optimization.
+diff -urN gamess.orig/ddi/compddi gamess/ddi/compddi
+--- gamess.orig/ddi/compddi    2015-01-15 17:49:05.000000000 +0300
++++ gamess/ddi/compddi 2016-05-26 11:30:34.601322818 +0300
+@@ -610,7 +610,7 @@
+ 
+      set FORTRAN=$GMS_FORTRAN   # might be g77, gfortran, ifort, pgf77, f2c
+ 
+-     set CC = 'gcc'
++     set gentoo-CC = 'gcc'
+      set CFLAGS = "-DLINUX -O3 -fstrict-aliasing -I./"
+      set CLIBS  = "-lpthread"
+ 
+@@ -664,7 +664,7 @@
+                              set ARCH='-m64'
+      if (`uname -p` == ia64) set ARCH=''
+ 
+-     set CC = 'gcc'
++     set gentoo-CC = 'gcc'
+      set CFLAGS = "-DLINUX $ARCH -O3 -fstrict-aliasing -I./"
+      set CLIBS  = "-lpthread"
+ 
+diff -urN gamess.orig/ddi/kickoff/ddikick.c gamess/ddi/kickoff/ddikick.c
+--- gamess.orig/ddi/kickoff/ddikick.c  2011-11-22 23:54:33.000000000 +0400
++++ gamess/ddi/kickoff/ddikick.c       2016-05-26 11:30:34.601322818 +0300
+@@ -105,7 +105,7 @@
+           remoteshell = argv[++i];
+        } else {
+           if((remoteshell = getenv("DDI_RSH")) == NULL) {
+-              remoteshell = (char *) strdup("rsh");
++              remoteshell = (char *) strdup("ssh");
+           }
+        }
+ 
+diff -urN gamess.orig/gms-files.csh gamess/gms-files.csh
+--- gamess.orig/gms-files.csh  2014-05-16 18:14:43.000000000 +0400
++++ gamess/gms-files.csh       2016-05-26 11:30:34.601322818 +0300
+@@ -28,7 +28,7 @@
+ #     to see all the file definitions (one is just below).
+ #
+ #---quiet---set echo
+-setenv AUXDATA $GMSPATH/auxdata
++setenv AUXDATA /usr/share/gamess
+ setenv  EXTBAS /dev/null
+ setenv  NUCBAS /dev/null
+ setenv  POSBAS /dev/null
+diff -urN gamess.orig/lked gamess/lked
+--- gamess.orig/lked   2014-12-08 20:56:59.000000000 +0300
++++ gamess/lked        2016-05-26 11:41:11.124667982 +0300
+@@ -356,12 +356,12 @@
+    switch ($GMS_FORTRAN)
+      case gfortran:
+         set LDR='gfortran'
+-        set LDOPTS=' '
++        set gentoo-LDOPTS=' '
+         set FORTLIBS=' '
+         breaksw
+      case ifort:
+         set LDR='ifort'
+-        set LDOPTS=' '  # add '-Wl,-M' to see load map
++        set gentoo-LDOPTS=' '  # add '-Wl,-M' to see load map
+         set FORTLIBS='-Vaxlib'
+         breaksw
+      case pgfortran:
+@@ -420,12 +420,7 @@
+       #     Otherwise, attempt a link against shared object libs.
+       #     See the 64 bit Atlas below for a way to fix the linker's
+       #     not being able to locate -lf77blas, if that happens.
+-      if (-e $GMS_MATHLIB_PATH/libf77blas.a) then
+-         set MATHLIBS="$GMS_MATHLIB_PATH/libf77blas.a"
+-         set MATHLIBS="$MATHLIBS $GMS_MATHLIB_PATH/libatlas.a"
+-      else
+-         set MATHLIBS="-L$GMS_MATHLIB_PATH -lf77blas -latlas"
+-      endif
++      set MATHLIBS=`${PKG_CONFIG} --libs blas`
+       set BLAS=' '
+       breaksw
+ 
+@@ -459,12 +454,12 @@
+    switch ($GMS_FORTRAN)
+       case gfortran:
+          set LDR='gfortran'
+-         set LDOPTS=' '
++         set gentoo-LDOPTS=' '
+          set FORTLIBS=' '
+          breaksw
+       case ifort:
+          set LDR='ifort'
+-         set LDOPTS='-i8'  # -Wl,-M generates a load map
++         set gentoo-LDOPTS=' '  # -Wl,-M generates a load map
+ #            this auxiliary library seems to have disappeared in ifort 10
+          set FORTLIBS=' '
+          if($GMS_IFORT_VERNO < 10) set FORTLIBS='-Vaxlib'
+@@ -581,13 +576,7 @@
+       #          ln -s liblapack_atlas.so.3.0 liblapack.so
+       #          ln -s liblapack.so.3.0       liblapack.so
+       #     It is strange the RPM's don't do these soft links for us.
+-      if (-e $GMS_MATHLIB_PATH/libf77blas.a) then
+-         set MATHLIBS="$GMS_MATHLIB_PATH/libf77blas.a"
+-         set MATHLIBS="$MATHLIBS $GMS_MATHLIB_PATH/libatlas.a"
+-      else
+-         set MATHLIBS="-L$GMS_MATHLIB_PATH -lf77blas -latlas"
+-         if ($CCHEM == true) set MATHLIBS="$MATHLIBS -llapack"
+-      endif
++      set MATHLIBS=`${PKG_CONFIG} --libs blas`
+       set BLAS=' '
+       breaksw
+ 
+diff -urN gamess.orig/runall gamess/runall
+--- gamess.orig/runall 2012-02-03 03:55:01.000000000 +0400
++++ gamess/runall      2016-05-26 11:30:34.603322822 +0300
+@@ -46,7 +46,7 @@
+      xgms -v $VERNO -q $QUEUE -l exam$NUM.log exam$NUM
+      sleep 2
+   else
+-     ./rungms exam$NUM $VERNO 1  >&  exam$NUM.log
++     rungms exam$NUM $VERNO 1  >&  exam$NUM.log
+   endif
+   @ i++
+ end
+diff -urN gamess.orig/rungms gamess/rungms
+--- gamess.orig/rungms 2014-12-10 19:01:06.000000000 +0300
++++ gamess/rungms      2016-05-26 11:42:23.316828732 +0300
+@@ -60,9 +60,9 @@
+ #       See also a very old LoadLeveler "ll-gms" for some IBM systems.
+ #
+ set TARGET=sockets
+-set SCR=/scr/$USER
+-set USERSCR=/u1/$USER/scr
+-set GMSPATH=/u1/mike/gamess
++set SCR=`pwd`
++set USERSCR=`pwd`
++set GMSPATH=/usr/bin
+ #
+ set JOB=$1      # name of the input file xxx.inp, give only the xxx part
+ set VERNO=$2    # revision number of the executable created by 'lked' step

diff --git a/sci-chemistry/gamess/gamess-20141205.1.ebuild 
b/sci-chemistry/gamess/gamess-20141205.1.ebuild
new file mode 100644
index 0000000..1fb80b7
--- /dev/null
+++ b/sci-chemistry/gamess/gamess-20141205.1.ebuild
@@ -0,0 +1,338 @@
+# Copyright 1999-2016 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id$
+
+EAPI=5
+
+inherit eutils fortran-2 flag-o-matic pax-utils toolchain-funcs
+
+DESCRIPTION="A powerful quantum chemistry package"
+HOMEPAGE="http://www.msg.chem.iastate.edu/GAMESS/GAMESS.html";
+SRC_URI="
+       ${P}.tar.gz
+       qmmm-tinker? ( tinker.tar.gz )"
+
+SLOT="0"
+LICENSE="gamess"
+# NOTE: PLEASE do not stabilize gamess. It does not make sense
+# since the tarball has fetch restrictions and upstream only
+# provides the latest version. In other words: As soon as a
+# new version comes out the stable version will be useless since
+# users can not get at the tarball any more.
+KEYWORDS="~amd64 ~ppc ~x86"
+IUSE="mpi neo pax_kernel qmmm-tinker"
+
+CDEPEND="
+       app-shells/tcsh
+       mpi? ( virtual/mpi )
+       virtual/blas"
+DEPEND="${CDEPEND}
+       virtual/pkgconfig"
+RDEPEND="${CDEPEND}
+       net-misc/openssh"
+
+S="${WORKDIR}/${PN}"
+
+RESTRICT="fetch"
+
+GAMESS_DOWNLOAD="http://www.msg.ameslab.gov/GAMESS/License_Agreement.html";
+GAMESS_VERSION="5 DEC 2014 (R1)"
+
+pkg_nofetch() {
+       echo
+       elog "Please download ${PN}-current.tar.gz from"
+       elog "${GAMESS_DOWNLOAD}."
+       elog "Be sure to select the version ${GAMESS_VERSION} tarball!!"
+       elog "Then move the tarball to"
+       elog "${DISTDIR}/${P}.tar.gz"
+       if use qmmm-tinker ; then
+               elog "Also download 
http://www.msg.ameslab.gov/GAMESS/tinker.tar.Z";
+               elog "and place tinker.tar.Z to ${DISTDIR}"
+       fi
+       echo
+}
+
+get_fcomp() {
+       case $(tc-getFC) in
+               *gfortran* )
+                       FCOMP="gfortran" ;;
+               ifort )
+                       FCOMP="ifc" ;;
+               * )
+                       FCOMP=$(tc-getFC) ;;
+       esac
+}
+
+pkg_setup() {
+       fortran-2_pkg_setup
+       get_fcomp
+       # currently amd64 is only supported with gfortran
+       if [[ "${ARCH}" == "amd64" ]] && [[ ${FCOMP} != *gfortran* ]];
+               then die "You will need gfortran to compile gamess on amd64"
+       fi
+
+       # note about qmmm-tinker
+       if use qmmm-tinker; then
+                       einfo "By default MM subsistem is restricted to 1000 
atoms"
+                       einfo "if you want larger MM subsystems then you should 
set"
+                       einfo "QMMM_GAMESS_MAXMM variable to needed value in 
your make.conf"
+                       einfo "By default maximum number of atom classes types 
and size of"
+                       einfo "hessian are restricted to 250, 500 and 1000000 
respectively"
+                       einfo "If you want larger sizes set:"
+                       einfo "QMMM_GAMESS_MAXCLASS"
+                       einfo "QMMM_GAMESS_MAXCTYP"
+                       einfo "QMMM_GAMESS_MAXHESS"
+                       einfo "in your make.conf"
+       fi
+
+       #note about mpi
+       if use mpi; then
+               ewarn ""
+               ewarn "You should adjust rungms script for your mpi 
implentation"
+               ewarn "because deafult one will not work"
+               ewarn ""
+       fi
+}
+
+src_unpack() {
+       unpack ${A}
+
+       if use qmmm-tinker; then
+               mv tinker gamess/ || die "failed to move tinker directory"
+       fi
+}
+
+src_prepare() {
+       tc-export PKG_CONFIG
+       # apply LINUX-arch patches to gamess makesfiles
+       epatch "${FILESDIR}/${P}.gentoo.patch"
+       # select arch
+       # NOTE: please leave lked alone; it should be good as is!!
+       cd "${S}"
+       local active_arch;
+       if [[ "${ARCH}" == "amd64" ]]; then
+               active_arch="linux64";
+       else
+               active_arch="linux32";
+       fi
+
+       # for hardened-gcc let't turn off ssp, since it breakes
+       # a few routines
+       if use pax_kernel && [[ ${FCOMP} == g77 ]]; then
+               FFLAGS="${FFLAGS} -fno-stack-protector-all"
+       fi
+
+       # Enable mpi stuff
+       if use mpi; then
+               sed -e "s:set COMM = sockets:set COMM = mpi:g" \
+                       -i ddi/compddi || die "Enabling mpi build failed"
+               sed -e "s:MPI_INCLUDE_PATH = ' ':MPI_INCLUDE_PATH =     
'-I/usr/include ':g" \
+                       -i ddi/compddi || die "Enabling mpi build failed"
+               sed -e "s:MSG_LIBRARIES='../ddi/libddi.a 
-lpthread':MSG_LIBRARIES='../ddi/libddi.a -lmpi -lpthread':g" \
+                       -i lked || die "Enabling mpi build failed"
+       fi
+
+       # enable NEO
+       if use neo; then
+               sed -e "s:NEO=false:NEO=true:" -i compall lked || \
+                       die "Failed to enable NEO code"
+       else
+               sed -e "s:NEO=true:NEO=false:" -i compall lked || \
+                       die "Failed to disable NEO code"
+       fi
+       # enable GAMESS-qmmm
+       if use qmmm-tinker; then
+               epatch "${FILESDIR}/${PN}-qmmm-tinker-fix-idate.patch"
+               sed -e "s:TINKER=false:TINKER=true:" -i compall lked || \
+                       die "Failed to enable TINKER code"
+               if [ "x$QMMM_GAMESS_MAXMM" == "x" ]; then
+                       einfo "No QMMM_GAMESS_MAXMM set. Using default value = 
1000"
+               else
+                       einfo "Setting QMMM_GAMESS_MAXMM to $QMMM_GAMESS_MAXMM"
+                       sed -e "s:maxatm=1000:maxatm=$QMMM_GAMESS_MAXMM:g" \
+                        -i tinker/sizes.i \
+                        || die "Setting QMMM_GAMESS_MAXMM failed"
+                       sed -e "s:MAXATM=1000:MAXATM=$QMMM_GAMESS_MAXMM:g" \
+                        -i source/inputb.src \
+                        || die "Setting QMMM_GAMESS_MAXMM failed"
+               fi
+               if [ "x$QMMM_GAMESS_MAXCLASS" == "x" ]; then
+                       einfo "No QMMM_GAMESS_MAXMM set. Using default value = 
250"
+               else
+                       sed -e 
"s:maxclass=250:maxclass=$QMMM_GAMESS_MAXCLASS:g" \
+                               -i tinker/sizes.i \
+                               || die "Setting QMMM_GAMESS_MAXCLASS failed"
+               fi
+               if [ "x$QMMM_GAMESS_MAXCTYP" == "x" ]; then
+                       einfo "No QMMM_GAMESS_MAXCTYP set. Using default value 
= 500"
+               else
+                       sed -e "s:maxtyp=500:maxtyp=$QMMM_GAMESS_MAXCTYP:g" \
+                               -i tinker/sizes.i \
+                               || die "Setting QMMM_GAMESS_MAXCTYP failed"
+               fi
+               if [ "x$QMMM_GAMESS_MAXHESS" == "x" ]; then
+                       einfo "No QMMM_GAMESS_MAXHESS set. Usingdefault value = 
1000000"
+               else
+                       sed -e 
"s:maxhess=1000000:maxhess=$QMMM_GAMESS_MAXHESS:g" \
+                               -i tinker/sizes.i \
+                               || die "Setting QMMM_GAMESS_MAXHESS failed"
+               fi
+       fi
+       # create proper activate sourcefile
+       cp "./tools/actvte.code" "./tools/actvte.f" || \
+               die "Failed to create actvte.f"
+       sed -e "s/^\*UNX/    /" -i "./tools/actvte.f" || \
+               die "Failed to perform UNX substitutions in actvte.f"
+
+       # fix GAMESS' compall script to use proper CC
+       sed -e "s|\$CCOMP -c \$extraflags source/zunix.c|$(tc-getCC) -c 
\$extraflags source/zunix.c|" \
+               -i compall || die "Failed setting up compall script"
+
+       # insert proper FFLAGS into GAMESS' comp makefile
+       # in case we're using ifc let's strip all the gcc
+       # specific stuff
+       if [[ ${FCOMP} == "ifort" ]]; then
+               sed -e "s/gentoo-OPT = '-O2'/OPT = '${FFLAGS} -quiet'/" \
+                       -i comp || die "Failed setting up comp script"
+       elif ! use x86; then
+               sed -e "s/-malign-double //" \
+                       -e "s/gentoo-OPT='-O2'/OPT='${FFLAGS}'/" \
+                       -i comp || die "Failed setting up comp script"
+       else
+               sed -e "s/gentoo-OPT = '-O2'/OPT = '${FFLAGS}'/" \
+                       -i comp || die "Failed setting up comp script"
+       fi
+
+       # fix up GAMESS' linker script;
+       sed -e "s/gentoo-LDOPTS=' '/LDOPTS='${LDFLAGS}'/" \
+               -i lked || die "Failed setting up lked script"
+       # fix up GAMESS' ddi TCP/IP socket build
+       sed -e "s/gentoo-CC = 'gcc'/CC = '$(tc-getCC)'/" \
+               -i ddi/compddi || die "Failed setting up compddi script"
+       # Creating install.info
+       cat > install.info <<-EOF
+       #!/bin/csh
+       setenv GMS_PATH $WORKDIR/gamess
+       setenv GMS_BUILD_DIR $WORKDIR/gamess
+       setenv GMS_TARGET $active_arch
+       setenv GMS_FORTRAN $FCOMP
+       setenv GMS_GFORTRAN_VERNO $(gcc-major-version).$(gcc-minor-version)
+       setenv GMS_MATHLIB atlas
+       setenv GMS_MATHLIB_PATH  /usr/$(get_libdir)/atlas
+       setenv GMS_DDI_COMM sockets
+       EOF
+
+}
+
+src_compile() {
+       # build actvte
+       cd "${S}"/tools
+       ${FCOMP} -o actvte.x actvte.f || \
+               die "Failed to compile actvte.x"
+
+       # for hardened (PAX) users and ifc we need to turn
+       # MPROTECT off
+       if [[ ${FCOMP} == "ifort" ]] && use pax_kernel; then
+               pax-mark -PemRxS actvte.x
+       fi
+
+       # build gamess
+       cd "${S}"
+       ./compall || die "compall failed"
+
+       # build the ddi TCP/IP socket stuff
+       cd ${S}/"ddi"
+       ./compddi || die "compddi failed"
+
+       # finally, link it all together
+       cd "${S}"
+       ./lked || die "lked failed"
+
+       # for hardened (PAX) users and ifc we need to turn
+       # MPROTECT off
+       if [[ ${FCOMP} == "ifort" ]] && use pax_kernel; then
+               pax-mark -PemRxS ${PN}.00.x
+       fi
+}
+
+src_install() {
+       # the executables
+       dobin ${PN}.00.x rungms gms-files.csh \
+               || die "Failed installing binaries"
+       if use !mpi; then
+               dobin ddi/ddikick.x \
+                       || die "Failed installing binaries"
+       fi
+
+       # the docs
+       dodoc *.DOC qmnuc/*.DOC
+
+       # install ericftm
+       insinto /usr/share/${PN}
+       doins auxdata/ericfmt.dat
+
+       # install mcpdata
+       insinto /usr/share/${PN}/MCP
+       doins auxdata/MCP/*
+
+       # install BASES
+       insinto /usr/share/${PN}/BASES
+       doins auxdata/BASES/*
+
+       # install QUANPOL
+       insinto /usr/share/${PN}/QUANPOL
+       doins auxdata/QUANPOL/*
+
+       # install tinker params in case of qmmm
+       if use qmmm-tinker ; then
+                       dodoc tinker/simomm.doc
+                       insinto /usr/share/${PN}
+                       doins -r tinker/params51
+       fi
+
+       # install the tests the user should run, and
+       # fix up the runscript; also grab a copy of rungms
+       # so the user is ready to run the tests
+       insinto /usr/share/${PN}/tests
+       insopts -m0644
+       doins -r tests/*
+       insopts -m0744
+       doins runall
+       #doins tools/checktst/checktst tools/checktst/chkabs || \
+       #       die "Failed to install main test checker"
+       #doins tools/checktst/exam* || \
+       #       die "Failed to install individual test files"
+
+       insinto /usr/share/${PN}/neotests
+       insopts -m0644
+       doins -r qmnuc/neotests/*
+}
+
+pkg_postinst() {
+       echo
+       einfo "Before you use GAMESS for any serious work you HAVE"
+       einfo "to run the supplied test files located in"
+       einfo "/usr/share/gamess/tests and check them thoroughly."
+       einfo "Otherwise all scientific publications resulting from"
+       einfo "your GAMESS runs should be immediately rejected :)"
+       einfo "To do so copy the content of /usr/share/gamess/tests"
+       einfo "to some temporary location and execute './runall'. "
+       einfo "Then run the checktst script in the same directory to"
+       einfo "validate the tests."
+       einfo "Please consult TEST.DOC and the other docs!"
+
+       if [[ ${FCOMP} == "ifort" ]]; then
+               echo
+               ewarn "IMPORTANT NOTE: We STRONGLY recommend to stay away"
+               ewarn "from ifc-9.0 for now and use the ifc-8.1 series of"
+               ewarn "compilers UNLESS you can run through ALL of the "
+               ewarn "test cases (see above) successfully."
+       fi
+
+       echo
+       einfo "If you want to run on more than a single CPU"
+       einfo "you will have to acquaint yourself with the way GAMESS"
+       einfo "does multiprocessor runs and adjust rungms according to"
+       einfo "your target network architecture."
+       echo
+}

Reply via email to