From 33989341bd8966fb6483436f145a894ff51def28 Mon Sep 17 00:00:00 2001 From: Tiziano Müller Date: Fri, 23 Oct 2020 17:43:34 +0200 Subject: 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 --- .../16-C.01-fix-building-c-code-with-pgcc.patch | 25 + .../gaussian-src/16-C.01-fix-shebangs.patch | 841 +++++++++++++++++++++ ...1-replace-deprecated-pgf77-with-pgfortran.patch | 146 ++++ .../repos/builtin/packages/gaussian-src/package.py | 155 ++++ .../packages/gaussian-src/spack_perms_fix.sh.j2 | 3 + .../builtin/packages/gaussian-view/package.py | 72 +- .../packages/gaussian-view/spack_perms_fix.sh.j2 | 3 + 7 files changed, 1237 insertions(+), 8 deletions(-) create mode 100644 var/spack/repos/builtin/packages/gaussian-src/16-C.01-fix-building-c-code-with-pgcc.patch create mode 100644 var/spack/repos/builtin/packages/gaussian-src/16-C.01-fix-shebangs.patch create mode 100644 var/spack/repos/builtin/packages/gaussian-src/16-C.01-replace-deprecated-pgf77-with-pgfortran.patch create mode 100644 var/spack/repos/builtin/packages/gaussian-src/package.py create mode 100644 var/spack/repos/builtin/packages/gaussian-src/spack_perms_fix.sh.j2 create mode 100644 var/spack/repos/builtin/packages/gaussian-view/spack_perms_fix.sh.j2 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?= +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?= +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 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 <$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?= +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 }}"/* -- cgit v1.2.3-60-g2f50