summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTiziano Müller <tiziano.mueller@chem.uzh.ch>2020-10-23 17:43:34 +0200
committerGitHub <noreply@github.com>2020-10-23 10:43:34 -0500
commit33989341bd8966fb6483436f145a894ff51def28 (patch)
treed7b39f618d6b9b978fd1bd501d61f7fe9dc274dc
parentdcf8cf317b7511a377d770780693f1c162c8ec8a (diff)
downloadspack-33989341bd8966fb6483436f145a894ff51def28.tar.gz
spack-33989341bd8966fb6483436f145a894ff51def28.tar.bz2
spack-33989341bd8966fb6483436f145a894ff51def28.tar.xz
spack-33989341bd8966fb6483436f145a894ff51def28.zip
gaussian-src: initial commit, gaussian-view: update to 6.1.1 (#17711)
* gaussian-src: initial commit to build from source * do not install the source to ensure to not accidentally distribute it to users * set required runtime env vars based on the login.profile * gaussian-view: update to 6.1.1
-rw-r--r--var/spack/repos/builtin/packages/gaussian-src/16-C.01-fix-building-c-code-with-pgcc.patch25
-rw-r--r--var/spack/repos/builtin/packages/gaussian-src/16-C.01-fix-shebangs.patch841
-rw-r--r--var/spack/repos/builtin/packages/gaussian-src/16-C.01-replace-deprecated-pgf77-with-pgfortran.patch146
-rw-r--r--var/spack/repos/builtin/packages/gaussian-src/package.py155
-rw-r--r--var/spack/repos/builtin/packages/gaussian-src/spack_perms_fix.sh.j23
-rw-r--r--var/spack/repos/builtin/packages/gaussian-view/package.py72
-rw-r--r--var/spack/repos/builtin/packages/gaussian-view/spack_perms_fix.sh.j23
7 files changed, 1237 insertions, 8 deletions
diff --git a/var/spack/repos/builtin/packages/gaussian-src/16-C.01-fix-building-c-code-with-pgcc.patch b/var/spack/repos/builtin/packages/gaussian-src/16-C.01-fix-building-c-code-with-pgcc.patch
new file mode 100644
index 0000000000..50ec242a41
--- /dev/null
+++ b/var/spack/repos/builtin/packages/gaussian-src/16-C.01-fix-building-c-code-with-pgcc.patch
@@ -0,0 +1,25 @@
+From ed64417746c570a00b0ba6c2c8091de4845f9ed1 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Tiziano=20M=C3=BCller?= <tiziano.mueller@chem.uzh.ch>
+Date: Tue, 6 Oct 2020 17:48:12 +0200
+Subject: [PATCH 4/5] fix building c code with pgcc
+
+---
+ bsd/i386.make | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/bsd/i386.make b/bsd/i386.make
+index 759ed84..9018c1b 100644
+--- a/bsd/i386.make
++++ b/bsd/i386.make
+@@ -130,7 +130,7 @@ VECTOR = -Mvect=assoc,recog,noaltcode,cachesize:$(CSIZE)$(VECTOR4)
+ MACHTY = p7-32
+ MACH = -tp $(MACHTY) $(TIME)
+ OPTOI = -m32 -march=i486 -malign-double
+-GCCOPTS = -ffast-math -funroll-loops -fexpensive-optimizations
++GCCOPTS = -fast
+ OPTFLAGO = $(OPTOI) -O3 $(GCCOPTS)
+ # Flags for portland compiler.
+ #
+--
+2.26.2
+
diff --git a/var/spack/repos/builtin/packages/gaussian-src/16-C.01-fix-shebangs.patch b/var/spack/repos/builtin/packages/gaussian-src/16-C.01-fix-shebangs.patch
new file mode 100644
index 0000000000..fe3681e4ad
--- /dev/null
+++ b/var/spack/repos/builtin/packages/gaussian-src/16-C.01-fix-shebangs.patch
@@ -0,0 +1,841 @@
+From 7f5d1d92b18951e364fe32a247056eea0cf130a0 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Tiziano=20M=C3=BCller?= <tiziano.mueller@chem.uzh.ch>
+Date: Tue, 6 Oct 2020 17:55:08 +0200
+Subject: [PATCH 5/5] fix shebangs
+
+---
+ bsd/bldg16 | 3 ++-
+ bsd/cachesize | 2 +-
+ bsd/checkf | 2 +-
+ bsd/ckall | 2 +-
+ bsd/ckwork | 2 +-
+ bsd/clearipc | 2 +-
+ bsd/clone-working | 2 +-
+ bsd/cloneg16 | 2 +-
+ bsd/co1 | 2 +-
+ bsd/comp | 2 +-
+ bsd/comp4 | 2 +-
+ bsd/compall | 2 +-
+ bsd/comphalf | 2 +-
+ bsd/diff-src | 2 +-
+ bsd/do-util | 3 ++-
+ bsd/dom | 2 +-
+ bsd/extract-ghelp | 2 +-
+ bsd/extract-ghelp-16 | 2 +-
+ bsd/findnew | 2 +-
+ bsd/findnew1 | 2 +-
+ bsd/fixlib | 2 +-
+ bsd/fixlinda | 2 +-
+ bsd/g16test | 2 +-
+ bsd/gau-arflags | 2 +-
+ bsd/gau-fixexe | 2 +-
+ bsd/gau-get | 2 +-
+ bsd/gau-hname | 2 +-
+ bsd/gau-nname | 2 +-
+ bsd/gau-ranlib | 2 +-
+ bsd/gau-unlimit | 2 +-
+ bsd/get-ref | 2 +-
+ bsd/getx | 2 +-
+ bsd/gzt | 2 +-
+ bsd/install | 2 +-
+ bsd/l1.make | 2 +-
+ bsd/l4x | 3 ++-
+ bsd/l9999.make | 2 +-
+ bsd/linda-ln | 2 +-
+ bsd/linda-lnx | 2 +-
+ bsd/link.make | 2 +-
+ bsd/lx-working | 2 +-
+ bsd/lxi-working | 2 +-
+ bsd/make-edir | 2 +-
+ bsd/make-ldir | 2 +-
+ bsd/make-nutill | 3 ++-
+ bsd/makeutilcd | 2 +-
+ bsd/mkt | 3 ++-
+ bsd/mkunixcd | 2 +-
+ bsd/movemerged | 2 +-
+ bsd/rdmat-ext | 2 +-
+ bsd/ren | 2 +-
+ bsd/rfhello | 3 ++-
+ bsd/rs6k.make | 3 ++-
+ bsd/save-working | 2 +-
+ bsd/set-mflags | 2 +-
+ bsd/setcdef | 2 +-
+ bsd/setup-linda | 2 +-
+ bsd/ssrunx | 3 ++-
+ bsd/ssruny | 2 +-
+ bsd/subg16 | 4 ++--
+ bsd/sumcpu | 2 +-
+ bsd/tbzip | 2 +-
+ bsd/test-times | 2 +-
+ bsd/testl1 | 2 +-
+ bsd/testunf | 3 ++-
+ bsd/tgzip | 2 +-
+ bsd/tree.make | 2 +-
+ bsd/txzip | 2 +-
+ bsd/tzzip | 2 +-
+ bsd/upd | 2 +-
+ bsd/upd-util | 3 ++-
+ bsd/updatelink | 2 +-
+ bsd/updatelink1 | 2 +-
+ bsd/x86type | 2 +-
+ 74 files changed, 85 insertions(+), 75 deletions(-)
+
+diff --git a/bsd/bldg16 b/bsd/bldg16
+index c3db34a..f7af456 100755
+--- a/bsd/bldg16
++++ b/bsd/bldg16
+@@ -1,4 +1,5 @@
+-#!/bin/csh -xf
++#!/usr/bin/env tcsh
++set echo
+ #
+ # Build Gaussian 16 from source as from distribution tape. The default
+ # directory should be the main g16 directory.
+diff --git a/bsd/cachesize b/bsd/cachesize
+index 5ec2c79..f03b7e7 100755
+--- a/bsd/cachesize
++++ b/bsd/cachesize
+@@ -1,4 +1,4 @@
+-#!/bin/csh -f
++#!/usr/bin/env tcsh
+ set x = `gau-machine`
+ @ minc = "524288"
+ if ($?GAUSS_CACHESIZE) then
+diff --git a/bsd/checkf b/bsd/checkf
+index f7a271e..0a672b7 100755
+--- a/bsd/checkf
++++ b/bsd/checkf
+@@ -1,4 +1,4 @@
+-#!/bin/csh -f
++#!/usr/bin/env tcsh
+ set name = "xxx-ftnchek"
+ set flags = "-noextern -sixchar -common=2 -novice=no -arguments=3 -array=0 -common=2 -f77=automatic-array,common-subprog-name,quotemark,statement-order,do-enddo,inline-comment,mixed-common -notruncation -truncation=real-do-index -truncation=real-subscript -nopure -nopretty -pretty=embedded-spaces -pretty=long-line -pretty=missing-space -usage=no-do-index-modified,no-arg-alias,no-arg-array-alias,arg-const-modified,ext-multiply-defined,var-set-unused,var-uninitialized,var-unused -nowrap -portability=tab -quiet"
+ set TD = "/tmp"
+diff --git a/bsd/ckall b/bsd/ckall
+index 0c058ec..177be53 100755
+--- a/bsd/ckall
++++ b/bsd/ckall
+@@ -1,3 +1,3 @@
+-#!/bin/csh -f
++#!/usr/bin/env tcsh
+ cat $g16root/g16/{l[0-9]*,lapack-generic,blas-generic,mm,formchk,unfchk,chkchk,c8616,copychk,cubegen,cubman,dummy,freqchk,freqmem,newzmat,wrappers,rwfdump,solname,trajgen,*util*,bsd/mdutil,bsd/mdl1}.F >all.all
+ checkf all.all x >&all.dat
+diff --git a/bsd/ckwork b/bsd/ckwork
+index 66f99a1..5194544 100755
+--- a/bsd/ckwork
++++ b/bsd/ckwork
+@@ -1,4 +1,4 @@
+-#!/bin/csh -f
++#!/usr/bin/env tcsh
+ #
+ # Check for routines already in working which are also new in the
+ # current directory.
+diff --git a/bsd/clearipc b/bsd/clearipc
+index a94cc26..71a9dd7 100755
+--- a/bsd/clearipc
++++ b/bsd/clearipc
+@@ -1,4 +1,4 @@
+-#!/bin/csh -f
++#!/usr/bin/env tcsh
+ unalias rm
+ if ("`whoami`" == "root") then
+ set us="x"
+diff --git a/bsd/clone-working b/bsd/clone-working
+index 22afef2..6c5f2e5 100755
+--- a/bsd/clone-working
++++ b/bsd/clone-working
+@@ -1,4 +1,4 @@
+-#!/bin/csh -f
++#!/usr/bin/env tcsh
+ if ("$1" == "-s") then
+ set ww = "/$workbase/1/frisch/working/save-$2"
+ mkdir save-$2
+diff --git a/bsd/cloneg16 b/bsd/cloneg16
+index ef69d69..56fb567 100755
+--- a/bsd/cloneg16
++++ b/bsd/cloneg16
+@@ -1,4 +1,4 @@
+-#!/bin/csh -f
++#!/usr/bin/env tcsh
+ #
+ # Make a cloned copy of the Gaussian directories, with soft links
+ # to the source files but local copies of objects.
+diff --git a/bsd/co1 b/bsd/co1
+index 12ea322..007a2f5 100755
+--- a/bsd/co1
++++ b/bsd/co1
+@@ -1,2 +1,2 @@
+-#!/bin/csh
++#!/usr/bin/env tcsh
+ ../bsd/comp -o ${1}*.F >&../make${1}.log
+diff --git a/bsd/comp b/bsd/comp
+index cb1737c..5a583c3 100755
+--- a/bsd/comp
++++ b/bsd/comp
+@@ -1,4 +1,4 @@
+-#!/bin/csh -f
++#!/usr/bin/env tcsh
+ source $g16root/g16/bsd/g16.login
+ set mfile = "bsd/g16.make"
+ set mflags = "`set-mflags`"
+diff --git a/bsd/comp4 b/bsd/comp4
+index 0ca0806..7e11bf8 100755
+--- a/bsd/comp4
++++ b/bsd/comp4
+@@ -1,4 +1,4 @@
+-#!/bin/csh -f
++#!/usr/bin/env tcsh
+ if (-e bsd/g16.make) make -f bsd/g16.make clean
+ rm -f make*log
+ bsd/bldg16 $argv >&make.log &
+diff --git a/bsd/compall b/bsd/compall
+index d53392d..0b68de0 100755
+--- a/bsd/compall
++++ b/bsd/compall
+@@ -1,4 +1,4 @@
+-#!/bin/csh -f
++#!/usr/bin/env tcsh
+ if (-e bsd/g16.make) make -f bsd/g16.make clean
+ rm -f make*log
+ bsd/bldg16 $argv >&make.log &
+diff --git a/bsd/comphalf b/bsd/comphalf
+index 43bb0ee..b5fd399 100755
+--- a/bsd/comphalf
++++ b/bsd/comphalf
+@@ -1,2 +1,2 @@
+-#!/bin/csh -f
++#!/usr/bin/env tcsh
+ bsd/comp newzmat.F l1.F l101.F l10[2-9].F l1[1-2]?.F l[2-9]*.F l1???.F
+diff --git a/bsd/diff-src b/bsd/diff-src
+index 8b63e3a..cb08d97 100755
+--- a/bsd/diff-src
++++ b/bsd/diff-src
+@@ -1,4 +1,4 @@
+-#!/bin/csh
++#!/usr/bin/env tcsh
+ foreach x (*.new)
+ diff -i -w $x $x:r.F >$x:r.diff
+ if ($status) then
+diff --git a/bsd/do-util b/bsd/do-util
+index b43b109..8469289 100755
+--- a/bsd/do-util
++++ b/bsd/do-util
+@@ -1,4 +1,5 @@
+-#!/bin/csh -fx
++#!/usr/bin/env tcsh
++set echo
+ mkdir temp
+ cd temp
+ gau-fsplit $1/${2}.F
+diff --git a/bsd/dom b/bsd/dom
+index 4475ad5..92eccc4 100755
+--- a/bsd/dom
++++ b/bsd/dom
+@@ -1,4 +1,4 @@
+-#!/bin/csh -f
++#!/usr/bin/env tcsh
+ set file = "$1"
+ shift
+ set file = "$file:r"
+diff --git a/bsd/extract-ghelp b/bsd/extract-ghelp
+index a4e5e9e..36e6ba8 100755
+--- a/bsd/extract-ghelp
++++ b/bsd/extract-ghelp
+@@ -1,4 +1,4 @@
+-#!/bin/csh -f
++#!/usr/bin/env tcsh
+ #
+ # This script runs awk to create abstracts of each source file
+ # containing the information for ghelp. This allows ghelp to
+diff --git a/bsd/extract-ghelp-16 b/bsd/extract-ghelp-16
+index 9635d7b..36e6ba8 100755
+--- a/bsd/extract-ghelp-16
++++ b/bsd/extract-ghelp-16
+@@ -1,4 +1,4 @@
+-#!/bin/csh
++#!/usr/bin/env tcsh
+ #
+ # This script runs awk to create abstracts of each source file
+ # containing the information for ghelp. This allows ghelp to
+diff --git a/bsd/findnew b/bsd/findnew
+index bc1d527..2ab83c4 100755
+--- a/bsd/findnew
++++ b/bsd/findnew
+@@ -1,4 +1,4 @@
+-#!/bin/csh -f
++#!/usr/bin/env tcsh
+ if ("$1" == "") then
+ set ext = "diffn"
+ @ docopy = 0
+diff --git a/bsd/findnew1 b/bsd/findnew1
+index 9d42145..70ae61f 100755
+--- a/bsd/findnew1
++++ b/bsd/findnew1
+@@ -1,4 +1,4 @@
+-#!/bin/csh -f
++#!/usr/bin/env tcsh
+ if ("$1" == "") then
+ set ext = "diff"
+ else
+diff --git a/bsd/fixlib b/bsd/fixlib
+index ae7118d..0cd9ad1 100755
+--- a/bsd/fixlib
++++ b/bsd/fixlib
+@@ -1,4 +1,4 @@
+-#!/bin/csh -f
++#!/usr/bin/env tcsh
+ #
+ # Fix up a library using lorder. This routine just does a ranlib except
+ # on the trace because some of the libraries have too many object files
+diff --git a/bsd/fixlinda b/bsd/fixlinda
+index 233fff1..0a395db 100755
+--- a/bsd/fixlinda
++++ b/bsd/fixlinda
+@@ -1,4 +1,4 @@
+-#!/bin/csh -f
++#!/usr/bin/env tcsh
+ set x = `pwd`
+ set y = `basename $x`
+ if ("$y" != "g16") then
+diff --git a/bsd/g16test b/bsd/g16test
+index 3967e8e..a7c0808 100755
+--- a/bsd/g16test
++++ b/bsd/g16test
+@@ -1,4 +1,4 @@
+-#!/bin/csh -f
++#!/usr/bin/env tcsh
+ #
+ # Script to run G16 from a working directory with
+ # other executables from the standard places.
+diff --git a/bsd/gau-arflags b/bsd/gau-arflags
+index 7aba8a4..d268bc0 100755
+--- a/bsd/gau-arflags
++++ b/bsd/gau-arflags
+@@ -1,4 +1,4 @@
+-#!/bin/csh -f
++#!/usr/bin/env tcsh
+ set x = `gau-machine`
+ set machflags = ""
+ set modeflags = ""
+diff --git a/bsd/gau-fixexe b/bsd/gau-fixexe
+index 2266453..892eec6 100755
+--- a/bsd/gau-fixexe
++++ b/bsd/gau-fixexe
+@@ -1,4 +1,4 @@
+-#!/bin/csh -f
++#!/usr/bin/env tcsh
+ set gm = "$g16root/g16/bsd/gau-hname"
+ if (-e $gm) then
+ set hname = `gau-hname`
+diff --git a/bsd/gau-get b/bsd/gau-get
+index 29e9e96..4da00b0 100755
+--- a/bsd/gau-get
++++ b/bsd/gau-get
+@@ -1,4 +1,4 @@
+-#!/bin/csh -f
++#!/usr/bin/env tcsh
+ @ n = $#argv - 1
+ set str = ""
+ foreach x ($argv[1-$n])
+diff --git a/bsd/gau-hname b/bsd/gau-hname
+index c56cc6f..00a422e 100755
+--- a/bsd/gau-hname
++++ b/bsd/gau-hname
+@@ -1,4 +1,4 @@
+-#!/bin/csh -f
++#!/usr/bin/env tcsh
+ set xname = "$g16root/g16"
+ if ((-e $xname/ia32p4.flag) || (-e $xname/ia32p3.flag) ) then
+ set hname = "i386"
+diff --git a/bsd/gau-nname b/bsd/gau-nname
+index 391f44f..ad7daa7 100755
+--- a/bsd/gau-nname
++++ b/bsd/gau-nname
+@@ -1,4 +1,4 @@
+-#!/bin/csh -f
++#!/usr/bin/env tcsh
+ if ("$1" == "-") then
+ set nn = ""
+ else
+diff --git a/bsd/gau-ranlib b/bsd/gau-ranlib
+index 79c4eda..5ff56cb 100755
+--- a/bsd/gau-ranlib
++++ b/bsd/gau-ranlib
+@@ -1,4 +1,4 @@
+-#!/bin/csh -f
++#!/usr/bin/env tcsh
+ #
+ # Do a ranlib if necessary on this machine.
+ #
+diff --git a/bsd/gau-unlimit b/bsd/gau-unlimit
+index 3e7b971..df3c044 100755
+--- a/bsd/gau-unlimit
++++ b/bsd/gau-unlimit
+@@ -1,4 +1,4 @@
+-#!/bin/csh -f
++#!/usr/bin/env tcsh
+ #
+ # Do unlimits if this machine allows them.
+ #
+diff --git a/bsd/get-ref b/bsd/get-ref
+index 023696c..b6a773f 100755
+--- a/bsd/get-ref
++++ b/bsd/get-ref
+@@ -1,4 +1,4 @@
+-#!/bin/csh -f
++#!/usr/bin/env tcsh
+ if ($#argv < 1) then
+ set flist = "mdutil cphfutil putil osutil utilam utilnz"
+ else
+diff --git a/bsd/getx b/bsd/getx
+index 4a5d8f8..23691eb 100755
+--- a/bsd/getx
++++ b/bsd/getx
+@@ -1,4 +1,4 @@
+-#!/bin/csh -f
++#!/usr/bin/env tcsh
+ if ($#argv < 2) then
+ echo "usage: getx <routines> link"
+ exit
+diff --git a/bsd/gzt b/bsd/gzt
+index ffa5fa0..95ad348 100755
+--- a/bsd/gzt
++++ b/bsd/gzt
+@@ -1,4 +1,4 @@
+-#!/bin/csh
++#!/usr/bin/env tcsh
+ #
+ # Compress a range of test output files.
+ #
+diff --git a/bsd/install b/bsd/install
+index 7b0e589..f5f29af 100755
+--- a/bsd/install
++++ b/bsd/install
+@@ -1,4 +1,4 @@
+-#!/bin/csh -f
++#!/usr/bin/env tcsh
+ #
+ # Fix file protections in the g16 directories.
+ #
+diff --git a/bsd/l1.make b/bsd/l1.make
+index f041912..585ac3a 100644
+--- a/bsd/l1.make
++++ b/bsd/l1.make
+@@ -1,4 +1,4 @@
+-SHELL=/bin/csh
++SHELL=/usr/bin/env tcsh
+ GAU_DIR = $(g16root)/g16
+ GAU_DIRL = $(GAU_DIR)
+ GAU_DIRA = $(GAU_DIR)
+diff --git a/bsd/l4x b/bsd/l4x
+index a7de578..e58226f 100755
+--- a/bsd/l4x
++++ b/bsd/l4x
+@@ -1,4 +1,5 @@
+-#!/bin/csh -fx
++#!/usr/bin/env tcsh
++set echo
+ setenv GAUSS_LFLAGS '-n 3 -mp 2 -nodelist "brahms bruckner"'
+ setenv GAUSS_EXEDIR $g98root/g98/linda-exe:$g98root/g98
+ setenv LD_LIBRARY_PATH $g98root/g98
+diff --git a/bsd/l9999.make b/bsd/l9999.make
+index 643b580..6b317ee 100644
+--- a/bsd/l9999.make
++++ b/bsd/l9999.make
+@@ -1,4 +1,4 @@
+-SHELL=/bin/csh
++SHELL=/usr/bin/env tcsh
+ GAU_DIR = $(g16root)/g16
+ GAU_DIRL = $(GAU_DIR)
+ GAU_DIRA = $(GAU_DIR)
+diff --git a/bsd/linda-ln b/bsd/linda-ln
+index d6f26a2..eb514e6 100755
+--- a/bsd/linda-ln
++++ b/bsd/linda-ln
+@@ -1,4 +1,4 @@
+-#!/bin/csh -f
++#!/usr/bin/env tcsh
+ #
+ # Make soft links to the dummy linda link and to each each real one.
+ #
+diff --git a/bsd/linda-lnx b/bsd/linda-lnx
+index 15ab0d0..65824be 100755
+--- a/bsd/linda-lnx
++++ b/bsd/linda-lnx
+@@ -1,4 +1,4 @@
+-#!/bin/csh -f
++#!/usr/bin/env tcsh
+ #
+ # Make soft links to the dummy linda link and to each each real one.
+ #
+diff --git a/bsd/link.make b/bsd/link.make
+index 540903d..dfbeb4b 100644
+--- a/bsd/link.make
++++ b/bsd/link.make
+@@ -1,4 +1,4 @@
+-SHELL=/bin/csh
++SHELL=/usr/bin/env tcsh
+ GAU_DIR = $(g16root)/g16
+ GAU_DIRL = $(GAU_DIR)
+ GAU_DIRA = $(GAU_DIR)
+diff --git a/bsd/lx-working b/bsd/lx-working
+index 5b9315d..e07e01d 100755
+--- a/bsd/lx-working
++++ b/bsd/lx-working
+@@ -1,4 +1,4 @@
+-#!/bin/csh
++#!/usr/bin/env tcsh
+ foreach x ($argv)
+ ln -s /$workbase/1/frisch/working/$x:r.{com,log} .
+ end
+diff --git a/bsd/lxi-working b/bsd/lxi-working
+index 7b08887..1adce2f 100755
+--- a/bsd/lxi-working
++++ b/bsd/lxi-working
+@@ -1,4 +1,4 @@
+-#!/bin/csh
++#!/usr/bin/env tcsh
+ set m = "`gau-machine`"
+ if ($m == "sgi") then
+ set ext = ".sgi"
+diff --git a/bsd/make-edir b/bsd/make-edir
+index 7fb8a35..01afb73 100755
+--- a/bsd/make-edir
++++ b/bsd/make-edir
+@@ -1,4 +1,4 @@
+-#!/bin/csh -f
++#!/usr/bin/env tcsh
+ #
+ # usage: make-edir
+ #
+diff --git a/bsd/make-ldir b/bsd/make-ldir
+index 944b35e..59acb95 100755
+--- a/bsd/make-ldir
++++ b/bsd/make-ldir
+@@ -1,4 +1,4 @@
+-#!/bin/csh -f
++#!/usr/bin/env tcsh
+ #
+ # usage: make-ldir links
+ #
+diff --git a/bsd/make-nutill b/bsd/make-nutill
+index 016cb34..c5b8ac3 100755
+--- a/bsd/make-nutill
++++ b/bsd/make-nutill
+@@ -1,4 +1,5 @@
+-#!/bin/csh -fx
++#!/usr/bin/env tcsh
++set echo
+ rm -fr nutill
+ mkdir nutill
+ cd nutil
+diff --git a/bsd/makeutilcd b/bsd/makeutilcd
+index 6ea4228..9fa264c 100755
+--- a/bsd/makeutilcd
++++ b/bsd/makeutilcd
+@@ -1,4 +1,4 @@
+-#!/bin/csh
++#!/usr/bin/env tcsh
+ #
+ # Should be in cds directory, then
+ #
+diff --git a/bsd/mkt b/bsd/mkt
+index 976efa2..bf7eeb2 100755
+--- a/bsd/mkt
++++ b/bsd/mkt
+@@ -1,4 +1,5 @@
+-#!/bin/csh -fx
++#!/usr/bin/env tcsh
++set echo
+ if (! (-d $1)) then
+ echo "no directory $1"
+ exit
+diff --git a/bsd/mkunixcd b/bsd/mkunixcd
+index 6503593..15995ce 100755
+--- a/bsd/mkunixcd
++++ b/bsd/mkunixcd
+@@ -1,4 +1,4 @@
+-#!/bin/csh
++#!/usr/bin/env tcsh
+ if ($#argv <2) then
+ echo "usage: mkisofs target-file source-directories"
+ exit
+diff --git a/bsd/movemerged b/bsd/movemerged
+index 45fa619..538b4ed 100755
+--- a/bsd/movemerged
++++ b/bsd/movemerged
+@@ -1,4 +1,4 @@
+-#!/bin/csh -f
++#!/usr/bin/env tcsh
+ if ($#argv < 2) then
+ set dir = "../nutil"
+ else
+diff --git a/bsd/rdmat-ext b/bsd/rdmat-ext
+index 59e62d0..713046b 100755
+--- a/bsd/rdmat-ext
++++ b/bsd/rdmat-ext
+@@ -1,4 +1,4 @@
+-#!/bin/csh -f
++#!/usr/bin/env tcsh
+ @ savefiles = 0
+ @ dumpfiles = 1
+ @ narg = 0
+diff --git a/bsd/ren b/bsd/ren
+index 60171eb..2862edb 100755
+--- a/bsd/ren
++++ b/bsd/ren
+@@ -1,4 +1,4 @@
+-#!/bin/csh -f
++#!/usr/bin/env tcsh
+ #
+ # Rename a list of files to a new extension.
+ #
+diff --git a/bsd/rfhello b/bsd/rfhello
+index fb31adf..9ce5b94 100755
+--- a/bsd/rfhello
++++ b/bsd/rfhello
+@@ -1,4 +1,5 @@
+-#!/bin/csh -fx
++#!/usr/bin/env tcsh
++set echo
+ set host = `hostname`
+ if ("$1" == "") then
+ @ n = 8
+diff --git a/bsd/rs6k.make b/bsd/rs6k.make
+index 09f3e0c..259812b 100644
+--- a/bsd/rs6k.make
++++ b/bsd/rs6k.make
+@@ -1,4 +1,5 @@
+-#SHELL=/bin/csh -xf
++#SHELL=/usr/bin/env tcsh
++set echo
+ #
+ # Makefile for Gaussian 16.
+ #
+diff --git a/bsd/save-working b/bsd/save-working
+index c0e67d0..db78b18 100755
+--- a/bsd/save-working
++++ b/bsd/save-working
+@@ -1,4 +1,4 @@
+-#!/bin/csh -x
++#!/usr/bin/env tcsh -x
+ if (-e save.num) then
+ @ n = `cat save.num` + 1
+ else
+diff --git a/bsd/set-mflags b/bsd/set-mflags
+index ea3523a..6505c17 100755
+--- a/bsd/set-mflags
++++ b/bsd/set-mflags
+@@ -1,4 +1,4 @@
+-#!/bin/csh -f
++#!/usr/bin/env tcsh
+ #
+ # echo the appropriate flags for make (no arguments) or the make command (1 argument).
+ #
+diff --git a/bsd/setcdef b/bsd/setcdef
+index b9142e4..c985e0b 100755
+--- a/bsd/setcdef
++++ b/bsd/setcdef
+@@ -1,4 +1,4 @@
+-#!/bin/csh -f
++#!/usr/bin/env tcsh
+ #
+ # return a string for the GAUSS_CDEF environment variable
+ #
+diff --git a/bsd/setup-linda b/bsd/setup-linda
+index de9e996..c8ef8fd 100755
+--- a/bsd/setup-linda
++++ b/bsd/setup-linda
+@@ -1,4 +1,4 @@
+-#!/bin/csh
++#!/usr/bin/env tcsh
+ cd linda7.1
+ common/bin/install_pkg
+ cd ..
+diff --git a/bsd/ssrunx b/bsd/ssrunx
+index 34a80ff..b211151 100755
+--- a/bsd/ssrunx
++++ b/bsd/ssrunx
+@@ -1,4 +1,5 @@
+-#!/bin/csh -fx
++#!/usr/bin/env tcsh
++set echo
+ set x = "`gau-machine`"
+ set n = "`basename $0`"
+ set d = "$n:r"
+diff --git a/bsd/ssruny b/bsd/ssruny
+index e96f64f..e82c4c0 100755
+--- a/bsd/ssruny
++++ b/bsd/ssruny
+@@ -1,4 +1,4 @@
+-#!/bin/csh -f
++#!/usr/bin/env tcsh
+ set x = "`gau-machine`"
+ set n = "`basename $0`"
+ set d = "$n:r"
+diff --git a/bsd/subg16 b/bsd/subg16
+index fd2fab6..66dbc1b 100755
+--- a/bsd/subg16
++++ b/bsd/subg16
+@@ -1,4 +1,4 @@
+-#!/bin/csh -f
++#!/usr/bin/env tcsh
+ #
+ # Submit a Gaussian 16 job to an nqs batch queue.
+ #
+@@ -12,7 +12,7 @@
+ # Generate script, explicitly requesting the csh.
+ #
+ cat <<END >$2.job
+-#!/bin/csh
++#!/usr/bin/env tcsh
+ cd \$QSUB_WORKDIR
+ source $g16root/g16/bsd/gau-unlimit
+ g16 <$2.com >&$2.log
+diff --git a/bsd/sumcpu b/bsd/sumcpu
+index 4d8c823..93e015d 100755
+--- a/bsd/sumcpu
++++ b/bsd/sumcpu
+@@ -1,4 +1,4 @@
+-#!/bin/csh -f
++#!/usr/bin/env tcsh
+ #
+ # sum cpu usage
+ #
+diff --git a/bsd/tbzip b/bsd/tbzip
+index 78e5bce..8b28598 100755
+--- a/bsd/tbzip
++++ b/bsd/tbzip
+@@ -1,4 +1,4 @@
+-#!/bin/csh
++#!/usr/bin/env tcsh
+ foreach x ($argv)
+ bzip2 -9 -v $x:r.tar
+ mv $x:r.tar.bz2 $x:r.tbz
+diff --git a/bsd/test-times b/bsd/test-times
+index be04ce1..6c44242 100755
+--- a/bsd/test-times
++++ b/bsd/test-times
+@@ -1,4 +1,4 @@
+-#!/bin/csh -f
++#!/usr/bin/env tcsh
+ set h = `grep days $argv | count 7`
+ set m = `grep days $argv | count 9`
+ set s = `grep days $argv | count 11`
+diff --git a/bsd/testl1 b/bsd/testl1
+index 3901f2f..4ac7a37 100755
+--- a/bsd/testl1
++++ b/bsd/testl1
+@@ -1,4 +1,4 @@
+-#!/bin/csh -f
++#!/usr/bin/env tcsh
+ #
+ # Test a new version of link 1. The new version is assumed to be
+ # l1/testrt. If arguments are provided, they are used as the route;
+diff --git a/bsd/testunf b/bsd/testunf
+index c3ae429..142c0ca 100755
+--- a/bsd/testunf
++++ b/bsd/testunf
+@@ -1,3 +1,4 @@
+-#!/bin/csh -fx
++#!/usr/bin/env tcsh
++set echo
+ echo "argv is $argv"
+ cp $1 $7
+diff --git a/bsd/tgzip b/bsd/tgzip
+index 90b27c1..e7051d8 100755
+--- a/bsd/tgzip
++++ b/bsd/tgzip
+@@ -1,4 +1,4 @@
+-#!/bin/csh
++#!/usr/bin/env tcsh
+ foreach x ($argv)
+ gzip -9 -v $x:r.tar
+ mv $x:r.tar.gz $x:r.tgz
+diff --git a/bsd/tree.make b/bsd/tree.make
+index e22451b..91e76ce 100644
+--- a/bsd/tree.make
++++ b/bsd/tree.make
+@@ -5,7 +5,7 @@
+ GAU_DIR = $(g16root)/g16
+ GAU_DIRL = $(GAU_DIR)
+
+-SHELL = /bin/csh
++SHELL = /usr/bin/env tcsh
+ UTIL_NAME = util.a
+ GAU_DIRA = $(GAU_DIR)
+
+diff --git a/bsd/txzip b/bsd/txzip
+index 23a6a1b..a9248ff 100755
+--- a/bsd/txzip
++++ b/bsd/txzip
+@@ -1,4 +1,4 @@
+-#!/bin/csh -f
++#!/usr/bin/env tcsh
+ if (("$1" == "j") || ("$1" == "J")) then
+ set ext = "tbJ"
+ shift
+diff --git a/bsd/tzzip b/bsd/tzzip
+index a86a4b8..9a2f462 100755
+--- a/bsd/tzzip
++++ b/bsd/tzzip
+@@ -1,4 +1,4 @@
+-#!/bin/csh
++#!/usr/bin/env tcsh
+ foreach x ($argv)
+ xz -9 -v $x:r.tar
+ mv $x:r.tar.bz2 $x:r.tbz
+diff --git a/bsd/upd b/bsd/upd
+index d6017b3..00ca77f 100755
+--- a/bsd/upd
++++ b/bsd/upd
+@@ -1,4 +1,4 @@
+-#!/bin/csh -f
++#!/usr/bin/env tcsh
+ #
+ # Update a link for which the specified routines have been changed.
+ #
+diff --git a/bsd/upd-util b/bsd/upd-util
+index 7d007ea..c16b082 100755
+--- a/bsd/upd-util
++++ b/bsd/upd-util
+@@ -1,4 +1,5 @@
+-#!/bin/csh -fx
++#!/usr/bin/env tcsh
++set echo
+ mkdir temp
+ cd temp
+ foreach x ($argv)
+diff --git a/bsd/updatelink b/bsd/updatelink
+index 7cc99ee..6399d53 100755
+--- a/bsd/updatelink
++++ b/bsd/updatelink
+@@ -1,4 +1,4 @@
+-#!/bin/csh -f
++#!/usr/bin/env tcsh
+ #
+ # Update a link library with the specified source files.
+ #
+diff --git a/bsd/updatelink1 b/bsd/updatelink1
+index 906e3aa..962dd59 100755
+--- a/bsd/updatelink1
++++ b/bsd/updatelink1
+@@ -1,4 +1,4 @@
+-#!/bin/csh -f
++#!/usr/bin/env tcsh
+ #
+ # Update a link library with the specified source files.
+ #
+diff --git a/bsd/x86type b/bsd/x86type
+index 9ead8f3..7ef1ebe 100755
+--- a/bsd/x86type
++++ b/bsd/x86type
+@@ -1,4 +1,4 @@
+-#!/bin/csh -f
++#!/usr/bin/env tcsh
+ set type = "amd"
+ set list = "sse4"
+ if (-e /proc/cpuinfo) then
+--
+2.26.2
+
diff --git a/var/spack/repos/builtin/packages/gaussian-src/16-C.01-replace-deprecated-pgf77-with-pgfortran.patch b/var/spack/repos/builtin/packages/gaussian-src/16-C.01-replace-deprecated-pgf77-with-pgfortran.patch
new file mode 100644
index 0000000000..49e40693d7
--- /dev/null
+++ b/var/spack/repos/builtin/packages/gaussian-src/16-C.01-replace-deprecated-pgf77-with-pgfortran.patch
@@ -0,0 +1,146 @@
+From 6774eb8f9743977d7b3f52ea877c2c0ed6bc45f5 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Tiziano=20M=C3=BCller?= <tiziano.mueller@chem.uzh.ch>
+Date: Tue, 6 Oct 2020 17:47:26 +0200
+Subject: [PATCH 3/5] replace deprecated pgf77 with pgfortran
+
+---
+ bsd/i386.make | 2 +-
+ bsd/l1.make | 2 +-
+ bsd/l9999.make | 2 +-
+ bsd/link.make | 2 +-
+ bsd/setup-make | 18 +++++++++---------
+ bsd/tree.make | 4 ++--
+ 6 files changed, 15 insertions(+), 15 deletions(-)
+
+diff --git a/bsd/i386.make b/bsd/i386.make
+index c9cf696..759ed84 100644
+--- a/bsd/i386.make
++++ b/bsd/i386.make
+@@ -138,7 +138,7 @@ I8FLAG =
+ R8FLAG =
+ MMODEL =
+ PGISTATIC = -Bstatic_pgi
+-PGNAME = pgf77
++PGNAME = pgfortran
+ GPUFLAG = $(GPUFLAG1) $(GPUFLAG2) $(GPUFLAG3)
+ RUNF77 = $(PGNAME) $(PGISTATIC) $(I8FLAG) $(R8FLAG) $(MMODEL) $(DEBUGF) $(SPECFLAG) $(GPUFLAG)
+ F2CLIB =
+diff --git a/bsd/l1.make b/bsd/l1.make
+index fe9897f..f041912 100644
+--- a/bsd/l1.make
++++ b/bsd/l1.make
+@@ -16,7 +16,7 @@ SUN_FC = f95 -fast -xtypemap=real:64,double:64,integer:64 -xtarget=native -xarch
+ ALP_FC = f90 -O5 -transform_loops -omp -automatic -i8 -r8 -align dcommons \
+ -tune host -trapuv -assume noaccuracy_sensitive -math_library fast \
+ -reentrancy threaded
+-LIN_FC = pgf77 -mp -Mnostdlib
++LIN_FC = pgfortran -mp -Mnostdlib
+ PGILIBS = $(PGI)/linux86/lib/libpgthread.a $(PGI)/linux86/lib/libpgc.a $(PGI)/linux86/lib/libpgftnrtl.a $(PGI)/linux86/lib/libpgc.a $(PGI)/linux86/lib/libpgmp.a $(PGI)/linux86/lib/libpgc.a
+ LIN_FC2 = /usr/local/lib/libf77blas.a /usr/local/lib/libatlas.a $(PGILIBS)
+ CRY_FC = f90
+diff --git a/bsd/l9999.make b/bsd/l9999.make
+index 2c59b37..643b580 100644
+--- a/bsd/l9999.make
++++ b/bsd/l9999.make
+@@ -16,7 +16,7 @@ SUN_FC = f95 -fast -xtypemap=real:64,double:64,integer:64 -xtarget=native -xarch
+ ALP_FC = f90 -O5 -transform_loops -omp -automatic -i8 -r8 -align dcommons \
+ -tune host -trapuv -assume noaccuracy_sensitive -math_library fast \
+ -reentrancy threaded
+-LIN_FC = pgf77 -mp -Mnostdlib
++LIN_FC = pgfortran -mp -Mnostdlib
+ PGILIBS = $(PGI)/linux86/lib/libpgthread.a $(PGI)/linux86/lib/libpgc.a $(PGI)/linux86/lib/libpgftnrtl.a $(PGI)/linux86/lib/libpgc.a $(PGI)/linux86/lib/libpgmp.a $(PGI)/linux86/lib/libpgc.a
+ LIN_FC2 = /usr/local/lib/libf77blas.a /usr/local/lib/libatlas.a $(PGILIBS)
+ CRY_FC = f90
+diff --git a/bsd/link.make b/bsd/link.make
+index 40cbd06..540903d 100644
+--- a/bsd/link.make
++++ b/bsd/link.make
+@@ -16,7 +16,7 @@ SUN_FC = f95 -fast -xtypemap=real:64,double:64,integer:64 -xtarget=native -xarch
+ ALP_FC = f90 -O5 -transform_loops -omp -automatic -i8 -r8 -align dcommons \
+ -tune host -trapuv -assume noaccuracy_sensitive -math_library fast \
+ -reentrancy threaded
+-LIN_FC = pgf77 -mp -Mnostdlib
++LIN_FC = pgfortran -mp -Mnostdlib
+ PGILIBS = $(PGI)/linux86/lib/libpgthread.a $(PGI)/linux86/lib/libpgc.a $(PGI)/linux86/lib/libpgftnrtl.a $(PGI)/linux86/lib/libpgc.a $(PGI)/linux86/lib/libpgmp.a $(PGI)/linux86/lib/libpgc.a
+ LIN_FC2 = /usr/local/lib/libf77blas.a /usr/local/lib/libatlas.a $(PGILIBS)
+ CRY_FC = f90
+diff --git a/bsd/setup-make b/bsd/setup-make
+index 7759da2..1a497dd 100644
+--- a/bsd/setup-make
++++ b/bsd/setup-make
+@@ -34,7 +34,7 @@ else if (-e $xname/kepler.flag) then
+ set acclib = "-Mcudalib=cublas"
+ set acclib1 = ""
+ else
+- set pgname = "pgf77"
++ set pgname = "pgfortran"
+ set accopt = ""
+ set accflag = ""
+ set acclib = ""
+@@ -88,16 +88,16 @@ else if (("$mach" == "i386") || ("$mach" == "amd64") || ("$mach" == "em64t") ||
+ set xutilname = "util"
+ if (-e $xname/ia32p3.flag) then
+ set xutilname = "$xutilname,bsd/libf77blas-ia32,bsd/libatlas-ia32"
+- set fcname = "FCN='pgf77 -Bstatic_pgi'"
++ set fcname = "FCN='pgfortran -Bstatic_pgi'"
+ set blas = "BLAS='' MACHTY=p6"
+ set fcflag = "FC='-mp=nonuma -tp p6'"
+- set lfort = "pgf77 -Bstatic_pgi -tp p6 -mp=nonuma"
++ set lfort = "pgfortran -Bstatic_pgi -tp p6 -mp=nonuma"
+ else if ("$mach" == "i386") then
+ set xutilname = "$xutilname,bsd/libf77blas-ia32,bsd/libatlas-ia32"
+- set fcname = "FCN='pgf77 -Bstatic_pgi'"
++ set fcname = "FCN='pgfortran -Bstatic_pgi'"
+ set blas = "BLAS='' "
+ set fcflag = "FC='-mp=nonuma -fastsse -tp p7-32'"
+- set lfort = "pgf77 -Bstatic_pgi -fastsse -tp p7-32 -mp=nonuma"
++ set lfort = "pgfortran -Bstatic_pgi -fastsse -tp p7-32 -mp=nonuma"
+ else if ("$mach" == "amd64") then
+ set fcname = "FCN='"
+ set fcname = "$fcname$pgname -Bstatic_pgi'"
+@@ -142,16 +142,16 @@ else if (("$mach" == "i386") || ("$mach" == "amd64") || ("$mach" == "em64t") ||
+ endif
+ else if ("$mach" == "i386-mac64") then
+ set xutilname = "$xutilname,bsd/libf77blas-imac64,bsd/libatlas-imac64"
+- set fcname = "FCN='pgf77'"
++ set fcname = "FCN='pgfortran'"
+ set fcflag = "FC='-Wl,-u -Wl,_drum_ -mp -tp p7-64 -i8 -r8'"
+ set blas = "BLAS='' MACHTY=p7-64 GAULIBU=util.a PGISTATIC= LINK1='-Wl,-u' LINK2='-Wl,_drum_' EXTCFLAGS=-D_FORTIFY_SOURCE=0 I8FLAG=-i8 R8FLAG=-r8 OPTOI=-m64 I8CPP1=-DI64 I8CPP2=-DP64 I8CPP3=-DPACK64 I8CPP4=-DUSE_I2 NJSEC=-DDEFJSEC=512"
+- set lfort = "pgf77 -Wl,-u -Wl,_drum_ -mp -tp p7-64 -i8 -r8"
++ set lfort = "pgfortran -Wl,-u -Wl,_drum_ -mp -tp p7-64 -i8 -r8"
+ else if ("$mach" == "i386-mac32") then
+ set xutilname = "$xutilname,bsd/libf77blas-imac32,bsd/libatlas-imac32"
+- set fcname = "FCN='pgf77'"
++ set fcname = "FCN='pgfortran'"
+ set fcflag = "FC='-Wl,-u -Wl,_drum_ -mp -tp p7-32'"
+ set blas = "BLAS='' MACHTY=p7-32 GAULIBU=util.a PGISTATIC= LINK1='-Wl,-u' LINK2='-Wl,_drum_' EXTCFLAGS=-D_FORTIFY_SOURCE=0 I8FLAG= R8FLAG=-r8 OPTOI=-m32"
+- set lfort = "pgf77 -Wl,-u -Wl,_drum_ -mp -tp p7-32"
++ set lfort = "pgfortran -Wl,-u -Wl,_drum_ -mp -tp p7-32"
+ setenv LINDA_CC 'cc -m32'
+ else
+ echo "logic failure in setup-make"
+diff --git a/bsd/tree.make b/bsd/tree.make
+index e504f38..e22451b 100644
+--- a/bsd/tree.make
++++ b/bsd/tree.make
+@@ -17,7 +17,7 @@ SGI_FC = f77 -w -i8 -r8 -r8const -mips4 -64 -mp -r10000 -align64 -trapuv
+ SGI_FC2 = -lcomplib.sgimath_mp -lfastm
+ SUN_FC = fc
+ ALP_FC = f90 -omp -automatic -O -i8 -r8 -align dcommons -threads
+-LIN_FC = pgf77 -mp
++LIN_FC = pgfortran -mp
+ LIN_FC2 = -llapack /usr/local/lib/blas-opt.a /usr/local/lib/blas-f2c.a
+ CRY_FC = f90
+ CRY_FC2 = -Wl"-M /dev/null -D DUPENTRY=NOTE -D FORCE=OFF -f indef"
+@@ -31,7 +31,7 @@ NUTIL = ../nutil/*.o ../nutil/*.qo
+ NUTILL = ../nutill/*.lo ../nutill/*.o ../nutill/*.qo
+ NUTILX = nutil/*.o nutil/*.qo
+ else
+-PGNAME = pgf77
++PGNAME = pgfortran
+ NUTIL = ../nutil/*.o
+ NUTILL = ../nutill/*.lo ../nutill/*.o
+ NUTILX = nutil/*.o
+--
+2.26.2
+
diff --git a/var/spack/repos/builtin/packages/gaussian-src/package.py b/var/spack/repos/builtin/packages/gaussian-src/package.py
new file mode 100644
index 0000000000..fe8f902df0
--- /dev/null
+++ b/var/spack/repos/builtin/packages/gaussian-src/package.py
@@ -0,0 +1,155 @@
+# Copyright 2013-2020 Lawrence Livermore National Security, LLC and other
+# Spack Project Developers. See the top-level COPYRIGHT file for details.
+#
+# SPDX-License-Identifier: (Apache-2.0 OR MIT)
+from spack import *
+import llnl.util.tty as tty
+import os
+import glob
+
+
+class GaussianSrc(Package):
+ """Gaussian is a computer program for computational chemistry.
+
+ This Spack package builds Gaussian from source.
+
+ Needs post-install steps to make it run!
+ See package installation log for details."""
+
+ homepage = "http://www.gaussian.com/"
+ manual_download = True
+
+ maintainers = ['dev-zero']
+
+ version('16-C.01', sha256='c9eb73a9df5ca8705fcf2d7ce2d5f9aceb05ae663689f54c0a581c9d4d44fffb')
+
+ depends_on('tcsh', type='build')
+
+ # All compilers except for pgi are in conflict:
+ for __compiler in spack.compilers.supported_compilers():
+ if __compiler != 'pgi':
+ conflicts('%{0}'.format(__compiler),
+ msg='Gaussian can only be built with the PGI compiler')
+
+ patch('16-C.01-replace-deprecated-pgf77-with-pgfortran.patch', when='@16-C.01')
+ patch('16-C.01-fix-building-c-code-with-pgcc.patch', when='@16-C.01')
+ patch('16-C.01-fix-shebangs.patch', when='@16-C.01')
+
+ @property
+ def g_name(self):
+ return 'g{0}'.format(self.version.up_to(1))
+
+ @property
+ def g_root(self):
+ return self.prefix.join(self.g_name)
+
+ def url_for_version(self, version):
+ return "file://{0}/g{1}.tgz".format(os.getcwd(), version)
+
+ def install(self, spec, prefix):
+ # Spacks strips the single dir inside the tarball, but Gaussian
+ # needs it -> move them back
+ files = os.listdir()
+ mkdirp(self.g_name)
+ for f in files:
+ os.rename(f, join_path(self.g_name, f))
+
+ opts = ['all']
+ # if spec.satisfies('+cuda'):
+ # opts += [spec.variants['cuda_family'].value]
+
+ with working_dir(self.g_name):
+ # can only build with tcsh
+ tcsh = which('tcsh')
+ tcsh('-c', 'source ${0}root/{0}/bsd/{0}.login ;'
+ './bsd/bld{0} {1}'.format(self.g_name, ' '.join(opts)))
+
+ install_tree('./bsd', self.g_root.bsd)
+ install_tree('./basis', self.g_root.basis)
+ install_tree('./doc', self.g_root.doc)
+
+ for exe in glob.glob('*.exe'):
+ install(exe, self.g_root)
+
+ exes = [
+ self.g_name,
+ 'gauopt',
+ 'gauoptl',
+ 'ghelp',
+ 'newzmat',
+ 'testrt',
+ 'cubegen',
+ 'cubman',
+ 'c8616',
+ 'ham506',
+ 'rwfdump',
+ 'freqchk',
+ 'freqmem',
+ 'formchk',
+ 'demofc',
+ 'chkchk',
+ 'solname',
+ 'gautraj',
+ 'copychk',
+ 'pluck',
+ 'rdmat',
+ 'wrmat',
+ 'unfchk',
+ 'gdrgen',
+ 'trajgen',
+ 'mm',
+ 'grate',
+ ]
+ for exe in exes:
+ install(exe, self.g_root)
+
+ @run_after('install')
+ def caveats(self):
+ perm_script = 'spack_perms_fix.sh'
+ perm_script_path = join_path(self.spec.prefix, perm_script)
+ with open(perm_script_path, 'w') as f:
+ env = spack.tengine.make_environment(dirs=self.package_dir)
+ t = env.get_template(perm_script + '.j2')
+ f.write(t.render({'prefix': self.g_root}))
+ chmod = which('chmod')
+ chmod('0555', perm_script_path)
+
+ tty.warn("""
+For a working Gaussian installation, all executable files can only be accessible by
+the owner and the group but not the world.
+
+We've installed a script that will make the necessary changes;
+read through it and then execute it:
+
+ {0}
+
+If you have to give others access, please customize the group membership of the package
+files as documented here:
+
+ https://spack.readthedocs.io/en/latest/build_settings.html#package-permissions"""
+ .format(perm_script_path))
+
+ def setup_build_environment(self, env):
+ env.set('{0}root'.format(self.g_name), self.stage.source_path)
+
+ def setup_run_environment(self, env):
+ # defaults taken from G16's g16.profile
+ env.set('GAUSS_LFLAGS2', '--LindaOptions -s 10000000')
+ env.set('_DSM_BARRIER', 'SHM')
+ env.set('PGI_TERM', 'trace,abort')
+
+ env.set('{0}root'.format(self.g_name), self.prefix)
+
+ env.prepend_path('GAUSS_EXEDIR', self.g_root)
+ env.prepend_path('GAUSS_EXEDIR', self.g_root.bsd)
+
+ env.prepend_path('PATH', self.g_root)
+ env.prepend_path('PATH', self.g_root.bsd)
+
+ env.set('GAUSS_LEXEDIR', self.g_root.join('linda-exe'))
+ env.set('GAUSS_ARCHDIR', self.g_root.arch)
+ env.set('GAUSS_BSDDIR', self.g_root.bsd)
+ env.set('G{0}BASIS'.format(self.version.up_to(1)), self.g_root.basis)
+
+ env.prepend_path('LD_LIBRARY_PATH', self.g_root)
+ env.prepend_path('LD_LIBRARY_PATH', self.g_root.bsd)
diff --git a/var/spack/repos/builtin/packages/gaussian-src/spack_perms_fix.sh.j2 b/var/spack/repos/builtin/packages/gaussian-src/spack_perms_fix.sh.j2
new file mode 100644
index 0000000000..889ab7fbc2
--- /dev/null
+++ b/var/spack/repos/builtin/packages/gaussian-src/spack_perms_fix.sh.j2
@@ -0,0 +1,3 @@
+#!/bin/sh -eu
+
+chmod o-rwx "{{ prefix }}"/*
diff --git a/var/spack/repos/builtin/packages/gaussian-view/package.py b/var/spack/repos/builtin/packages/gaussian-view/package.py
index 4de3c9e02b..9f5b83edc5 100644
--- a/var/spack/repos/builtin/packages/gaussian-view/package.py
+++ b/var/spack/repos/builtin/packages/gaussian-view/package.py
@@ -5,6 +5,7 @@
# ----------------------------------------------------------------------------
from spack import *
+import llnl.util.tty as tty
import os
@@ -13,29 +14,84 @@ class GaussianView(Package):
Gaussian. It aids in the creation of Gaussian input files, enables the
user to run Gaussian calculations from a graphical interface without the
need for using a command line instruction, and helps in the interpretation
- of Gaussian output"""
+ of Gaussian output.
+
+ Needs post-install steps to make it run!
+ See package installation logs for details."""
homepage = "https://gaussian.com/gaussview6/"
manual_download = True
- version('6016',
+ maintainers = ['antoniokaust', 'dev-zero']
+
+ version('6.1.6',
+ sha256='c9824fd0372c27425b53de350f3a83b27de75ca694219b3ef18cd7d92937db6c',
+ extension='tbz')
+
+ version('6.0.16',
'5dd6a8df8c81763e43a308b3a18d2d3b825d3597e9628dcf43e563d1867b9638',
extension='tbz')
- depends_on('gaussian@16-B.01', type='run')
+ variant(
+ 'gaussian-src',
+ default=False,
+ description='Use gaussian-src instead of gaussian (prebuilt binary)'
+ )
+
+ depends_on('gaussian@16-B.01', type='run', when='@:6.0.99')
+ depends_on('gaussian@16-C.01', type='run', when='~gaussian-src@6.1:')
+ depends_on('gaussian-src@16-C.01', type='run', when='+gaussian-src@6.1:')
+
+ conflicts('+gaussian-src', when='@:6.0.99')
def url_for_version(self, version):
- return "file://{0}/gv-{1}-Linux-x86_64.tbz".format(os.getcwd(),
- version)
+ return "file://{0}/gv{1}-linux-x86_64.tbz".format(
+ os.getcwd(),
+ version.up_to(2).joined)
def install(self, spec, prefix):
- install_tree(os.getcwd(), self.prefix)
+ install_tree('.', prefix)
+
+ @run_after('install')
+ def caveats(self):
+ perm_script = 'spack_perms_fix.sh'
+ perm_script_path = join_path(self.spec.prefix.bin, perm_script)
+ with open(perm_script_path, 'w') as f:
+ env = spack.tengine.make_environment(dirs=self.package_dir)
+ t = env.get_template(perm_script + '.j2')
+ f.write(t.render({'prefix': self.spec.prefix}))
+ chmod = which('chmod')
+ chmod('0555', perm_script_path)
+
+ tty.warn("""
+For a working GaussianView installation, all executable files can only be accessible by
+the owner and the group but not the world.
+
+We've installed a script that will make the necessary changes;
+read through it and then execute it:
+
+ {0}
+
+If you have to give others access, please customize the group membership of the package
+files as documented here:
+ https://spack.readthedocs.io/en/latest/build_settings.html#package-permissions"""
+ .format(perm_script_path))
+
+ @when('@:6.0.99')
def setup_run_environment(self, env):
env.set('GV_DIR', self.prefix)
- env.prepend_path('PATH', self.prefix)
+
env.set('GV_LIB_PATH', self.prefix.lib)
+ env.set('ALLOWINDIRECT', '1')
+ env.prepend_path('PATH', self.prefix)
env.prepend_path('GV_LIB_PATH', self.prefix.lib.MesaGL)
env.prepend_path('LD_LIBRARY_PATH', self.prefix.lib.MesaGL)
- env.set('ALLOWINDIRECT', '1')
env.prepend_path('QT_PLUGIN_PATH', self.prefix.plugins)
+
+ @when('@6.1:')
+ def setup_run_environment(self, env):
+ env.set('GV_DIR', self.prefix)
+
+ # the wrappers in gv/exec setup everything just nicely
+ env.prepend_path('PATH', join_path(self.prefix, 'exec'))
diff --git a/var/spack/repos/builtin/packages/gaussian-view/spack_perms_fix.sh.j2 b/var/spack/repos/builtin/packages/gaussian-view/spack_perms_fix.sh.j2
new file mode 100644
index 0000000000..889ab7fbc2
--- /dev/null
+++ b/var/spack/repos/builtin/packages/gaussian-view/spack_perms_fix.sh.j2
@@ -0,0 +1,3 @@
+#!/bin/sh -eu
+
+chmod o-rwx "{{ prefix }}"/*