summaryrefslogtreecommitdiff
path: root/var/spack/repos/builtin/packages/nwchem/package.py
diff options
context:
space:
mode:
Diffstat (limited to 'var/spack/repos/builtin/packages/nwchem/package.py')
-rw-r--r--var/spack/repos/builtin/packages/nwchem/package.py195
1 files changed, 97 insertions, 98 deletions
diff --git a/var/spack/repos/builtin/packages/nwchem/package.py b/var/spack/repos/builtin/packages/nwchem/package.py
index f0e8f1443a..98ea3fb341 100644
--- a/var/spack/repos/builtin/packages/nwchem/package.py
+++ b/var/spack/repos/builtin/packages/nwchem/package.py
@@ -13,69 +13,84 @@ class Nwchem(Package):
"""High-performance computational chemistry software"""
homepage = "https://nwchemgit.github.io"
- url = "https://github.com/nwchemgit/nwchem/releases/download/v7.0.2-release/nwchem-7.0.2-release.revision-b9985dfa-srconly.2020-10-12.tar.bz2"
-
- tags = ['ecp', 'ecp-apps']
-
- version('7.0.2', sha256='9bf913b811b97c8ed51bc5a02bf1c8e18456d0719c0a82b2e71223a596d945a7',
- url='https://github.com/nwchemgit/nwchem/releases/download/v7.0.2-release/nwchem-7.0.2-release.revision-b9985dfa-srconly.2020-10-12.tar.bz2')
- version('7.0.0', sha256='e3c6510627345be596f4079047e5e7b59e6c20599798ecfe122e3527f8ad6eb0',
- url='https://github.com/nwchemgit/nwchem/releases/download/v7.0.0-release/nwchem-7.0.0-release.revision-2c9a1c7c-srconly.2020-02-26.tar.bz2')
- version('6.8.1', sha256='fd20f9ca1b410270a815e77e052ec23552f828526cd252709f798f589b2a6431',
- url='https://github.com/nwchemgit/nwchem/releases/download/6.8.1-release/nwchem-6.8.1-release.revision-v6.8-133-ge032219-srconly.2018-06-14.tar.bz2')
-
- variant('openmp', default=False, description='Enables OpenMP support')
- variant('mpipr', default=False, description='Enables ARMCI with progress rank')
+ url = "https://github.com/nwchemgit/nwchem/releases/download/v7.0.2-release/nwchem-7.0.2-release.revision-b9985dfa-srconly.2020-10-12.tar.bz2"
+
+ tags = ["ecp", "ecp-apps"]
+
+ version(
+ "7.0.2",
+ sha256="9bf913b811b97c8ed51bc5a02bf1c8e18456d0719c0a82b2e71223a596d945a7",
+ url="https://github.com/nwchemgit/nwchem/releases/download/v7.0.2-release/nwchem-7.0.2-release.revision-b9985dfa-srconly.2020-10-12.tar.bz2",
+ )
+ version(
+ "7.0.0",
+ sha256="e3c6510627345be596f4079047e5e7b59e6c20599798ecfe122e3527f8ad6eb0",
+ url="https://github.com/nwchemgit/nwchem/releases/download/v7.0.0-release/nwchem-7.0.0-release.revision-2c9a1c7c-srconly.2020-02-26.tar.bz2",
+ )
+ version(
+ "6.8.1",
+ sha256="fd20f9ca1b410270a815e77e052ec23552f828526cd252709f798f589b2a6431",
+ url="https://github.com/nwchemgit/nwchem/releases/download/6.8.1-release/nwchem-6.8.1-release.revision-v6.8-133-ge032219-srconly.2018-06-14.tar.bz2",
+ )
+
+ variant("openmp", default=False, description="Enables OpenMP support")
+ variant("mpipr", default=False, description="Enables ARMCI with progress rank")
# This patch is for the modification of the build system (e.g. compiler flags) and
# Fortran syntax to enable the compilation with Fujitsu compilers. The modification
# will be merged to the next release of NWChem (see https://github.com/nwchemgit/nwchem/issues/347
# for more detail.
- patch('fj.patch', when='@7.0.2 %fj')
-
- depends_on('blas')
- depends_on('lapack')
- depends_on('mpi')
- depends_on('scalapack')
- depends_on('fftw-api')
- depends_on('python@3:', when='@7:', type=('build', 'link', 'run'))
- depends_on('python@2.7:2.8', when='@:6', type=('build', 'link', 'run'))
- conflicts('%gcc@10:', when='@:6', msg='NWChem versions prior to 7.0.0 do not build with GCC 10')
+ patch("fj.patch", when="@7.0.2 %fj")
+
+ depends_on("blas")
+ depends_on("lapack")
+ depends_on("mpi")
+ depends_on("scalapack")
+ depends_on("fftw-api")
+ depends_on("python@3:", when="@7:", type=("build", "link", "run"))
+ depends_on("python@2.7:2.8", when="@:6", type=("build", "link", "run"))
+ conflicts(
+ "%gcc@10:", when="@:6", msg="NWChem versions prior to 7.0.0 do not build with GCC 10"
+ )
def install(self, spec, prefix):
- scalapack = spec['scalapack'].libs
- lapack = spec['lapack'].libs
- blas = spec['blas'].libs
- fftw = spec['fftw-api'].libs
+ scalapack = spec["scalapack"].libs
+ lapack = spec["lapack"].libs
+ blas = spec["blas"].libs
+ fftw = spec["fftw-api"].libs
# see https://nwchemgit.github.io/Compiling-NWChem.html
args = []
- args.extend([
- 'NWCHEM_TOP=%s' % self.stage.source_path,
- # NWCHEM is picky about FC and CC. They should NOT be full path.
- # see https://nwchemgit.github.io/Special_AWCforum/sp/id7524
- 'CC=%s' % os.path.basename(spack_cc),
- 'FC=%s' % os.path.basename(spack_fc),
- 'USE_MPI=y',
- 'USE_BLAS=y',
- 'USE_FFTW3=y',
- 'PYTHONVERSION=%s' % spec['python'].version.up_to(2),
- 'BLASOPT=%s' % ((lapack + blas).ld_flags),
- 'BLAS_LIB=%s' % blas.ld_flags,
- 'LAPACK_LIB=%s' % lapack.ld_flags,
- 'SCALAPACK_LIB=%s' % scalapack.ld_flags,
- 'FFTW3_LIB=%s' % fftw.ld_flags,
- 'FFTW3_INCLUDE={0}'.format(spec['fftw-api'].prefix.include),
- 'NWCHEM_MODULES=all python',
- 'NWCHEM_LONG_PATHS=Y', # by default NWCHEM_TOP is 64 char max
- 'USE_NOIO=Y', # skip I/O algorithms
- 'USE_NOFSCHECK=TRUE' # FSCHECK, caused problems like code crashes
- ])
- if spec.version < Version('7.0.0'):
- args.extend([
- 'PYTHONVERSION=%s' % spec['python'].version.up_to(2),
- 'PYTHONHOME=%s' % spec['python'].home,
- 'USE_PYTHONCONFIG=Y',
- ])
+ args.extend(
+ [
+ "NWCHEM_TOP=%s" % self.stage.source_path,
+ # NWCHEM is picky about FC and CC. They should NOT be full path.
+ # see https://nwchemgit.github.io/Special_AWCforum/sp/id7524
+ "CC=%s" % os.path.basename(spack_cc),
+ "FC=%s" % os.path.basename(spack_fc),
+ "USE_MPI=y",
+ "USE_BLAS=y",
+ "USE_FFTW3=y",
+ "PYTHONVERSION=%s" % spec["python"].version.up_to(2),
+ "BLASOPT=%s" % ((lapack + blas).ld_flags),
+ "BLAS_LIB=%s" % blas.ld_flags,
+ "LAPACK_LIB=%s" % lapack.ld_flags,
+ "SCALAPACK_LIB=%s" % scalapack.ld_flags,
+ "FFTW3_LIB=%s" % fftw.ld_flags,
+ "FFTW3_INCLUDE={0}".format(spec["fftw-api"].prefix.include),
+ "NWCHEM_MODULES=all python",
+ "NWCHEM_LONG_PATHS=Y", # by default NWCHEM_TOP is 64 char max
+ "USE_NOIO=Y", # skip I/O algorithms
+ "USE_NOFSCHECK=TRUE", # FSCHECK, caused problems like code crashes
+ ]
+ )
+ if spec.version < Version("7.0.0"):
+ args.extend(
+ [
+ "PYTHONVERSION=%s" % spec["python"].version.up_to(2),
+ "PYTHONHOME=%s" % spec["python"].home,
+ "USE_PYTHONCONFIG=Y",
+ ]
+ )
# TODO: query if blas/lapack/scalapack uses 64bit Ints
# A flag to distinguish between 32bit and 64bit integers in linear
@@ -83,57 +98,43 @@ class Nwchem(Package):
use_32_bit_lin_alg = True
if use_32_bit_lin_alg:
- args.extend([
- 'USE_64TO32=y',
- 'BLAS_SIZE=4',
- 'LAPACK_SIZE=4',
- 'SCALAPACK_SIZE=4'
- ])
+ args.extend(["USE_64TO32=y", "BLAS_SIZE=4", "LAPACK_SIZE=4", "SCALAPACK_SIZE=4"])
else:
- args.extend([
- 'BLAS_SIZE=8',
- 'LAPACK_SIZE=8'
- 'SCALAPACK_SIZE=8'
- ])
-
- if sys.platform == 'darwin':
- target = 'MACX64'
- args.extend([
- 'CFLAGS_FORGA=-DMPICH_NO_ATTR_TYPE_TAGS'
- ])
+ args.extend(["BLAS_SIZE=8", "LAPACK_SIZE=8" "SCALAPACK_SIZE=8"])
+
+ if sys.platform == "darwin":
+ target = "MACX64"
+ args.extend(["CFLAGS_FORGA=-DMPICH_NO_ATTR_TYPE_TAGS"])
else:
- target = 'LINUX64'
+ target = "LINUX64"
- args.extend(['NWCHEM_TARGET=%s' % target])
+ args.extend(["NWCHEM_TARGET=%s" % target])
- if '+openmp' in spec:
- args.extend(['USE_OPENMP=y'])
+ if "+openmp" in spec:
+ args.extend(["USE_OPENMP=y"])
- if '+mpipr' in spec:
- args.extend(['ARMCI_NETWORK=MPI-PR'])
+ if "+mpipr" in spec:
+ args.extend(["ARMCI_NETWORK=MPI-PR"])
- with working_dir('src'):
- make('nwchem_config', *args)
+ with working_dir("src"):
+ make("nwchem_config", *args)
if use_32_bit_lin_alg:
- make('64_to_32', *args)
+ make("64_to_32", *args)
make(*args)
# need to install by hand. Follow Ubuntu:
# https://packages.ubuntu.com/trusty/all/nwchem-data/filelist
# https://packages.ubuntu.com/trusty/amd64/nwchem/filelist
- share_path = join_path(prefix, 'share', 'nwchem')
+ share_path = join_path(prefix, "share", "nwchem")
mkdirp(prefix.bin)
- install_tree('data', share_path)
- install_tree(join_path('basis', 'libraries'),
- join_path(share_path, 'libraries'))
- install_tree(join_path('nwpw', 'libraryps'),
- join_path(share_path, 'libraryps'))
+ install_tree("data", share_path)
+ install_tree(join_path("basis", "libraries"), join_path(share_path, "libraries"))
+ install_tree(join_path("nwpw", "libraryps"), join_path(share_path, "libraryps"))
- b_path = join_path(self.stage.source_path, 'bin',
- target, 'nwchem')
- chmod = which('chmod')
- chmod('+x', b_path)
+ b_path = join_path(self.stage.source_path, "bin", target, "nwchem")
+ chmod = which("chmod")
+ chmod("+x", b_path)
install(b_path, prefix.bin)
# Finally, make user's life easier by creating a .nwchemrc file
@@ -149,15 +150,13 @@ class Nwchem(Package):
spce {data}/solvents/spce.rst
charmm_s {data}/charmm_s/
charmm_x {data}/charmm_x/
-""".format(data=share_path)
- with open(".nwchemrc", 'w') as f:
+""".format(
+ data=share_path
+ )
+ with open(".nwchemrc", "w") as f:
f.write(nwchemrc)
install(".nwchemrc", share_path)
def setup_run_environment(self, env):
- env.set('NWCHEM_BASIS_LIBRARY', join_path(
- self.prefix,
- 'share/nwchem/libraries/'))
- env.set('NWCHEM_NWPW_LIBRARY', join_path(
- self.prefix,
- 'share/nwchem/libraryps/'))
+ env.set("NWCHEM_BASIS_LIBRARY", join_path(self.prefix, "share/nwchem/libraries/"))
+ env.set("NWCHEM_NWPW_LIBRARY", join_path(self.prefix, "share/nwchem/libraryps/"))