QMCPACK Spack Package Update (Summer 2018) (#9008)

* QMCPACK now supports QE 6.3. Dropped QE 5.3 due to incompatibilities.

* QMCPACK general clean-up of depends_on.

* Add QMCPACK 3.5.0

* More robust support of MKL detection in QMCPACK.
This commit is contained in:
Nichols A. Romero 2018-08-18 11:26:17 -05:00 committed by Adam J. Stewart
parent 412832159b
commit f4ee07527c

View File

@ -41,6 +41,7 @@ class Qmcpack(CMakePackage):
# can occasionally change.
# NOTE: 12/19/2017 QMCPACK 3.0.0 does not build properly with Spack.
version('develop')
version('3.5.0', tag='v3.5.0')
version('3.4.0', tag='v3.4.0')
version('3.3.0', tag='v3.3.0')
version('3.2.0', tag='v3.2.0')
@ -68,7 +69,7 @@ class Qmcpack(CMakePackage):
variant('gui', default=False,
description='Install with Matplotlib (long installation time)')
variant('qe', default=True,
description='Install with patched Quantum Espresso 5.3.0')
description='Install with patched Quantum Espresso 6.3.0')
# cuda variant implies mixed precision variant by default, but there is
# no way to express this in variant syntax, need something like
@ -99,23 +100,25 @@ class Qmcpack(CMakePackage):
# qmcpack data analysis tools
# basic command line tool based on Python and NumPy
# blas and lapack patching fails often and so are disabled at this time
depends_on('py-numpy~blas~lapack', type='run', when='+da')
depends_on('py-numpy~blas~lapack', when='+da', type='run')
# GUI is optional for data anlysis
# py-matplotlib leads to a long complex DAG for dependencies
depends_on('py-matplotlib', type='run', when='+gui')
depends_on('py-matplotlib', when='+gui', type='run')
# B-spline basis calculation require a patched version of
# Quantum Espresso 5.3.0 (see QMCPACK manual)
patch_url = 'https://raw.githubusercontent.com/QMCPACK/qmcpack/develop/external_codes/quantum_espresso/add_pw2qmcpack_to_espresso-5.3.0.diff'
patch_checksum = '0d8d7ba805313ddd4c02ee32c96d2f12e7091e9e82e22671d3ad5a24247860c4'
depends_on('quantum-espresso@5.3.0~elpa',
# Quantum Espresso 6.3 (see QMCPACK manual)
# Building explicitly without ELPA due to issues in Quantum Espresso
# Spack package
patch_url = 'https://raw.githubusercontent.com/QMCPACK/qmcpack/develop/external_codes/quantum_espresso/add_pw2qmcpack_to_qe-6.3.diff'
patch_checksum = '2ee346e24926479f5e96f8dc47812173a8847a58354bbc32cf2114af7a521c13'
depends_on('quantum-espresso@6.3~elpa+hdf5',
patches=patch(patch_url, sha256=patch_checksum, when='+qe'),
when='+qe+mpi')
when='+qe+mpi', type='run')
depends_on('quantum-espresso@5.3.0~elpa~scalapack~mpi',
depends_on('quantum-espresso@6.3~elpa~scalapack~mpi+hdf5',
patches=patch(patch_url, sha256=patch_checksum, when='+qe'),
when='+qe~mpi')
when='+qe~mpi', type='run')
# Backport several patches from recent versions of QMCPACK
# The test_numerics unit test is broken prior to QMCPACK 3.3.0
@ -221,10 +224,16 @@ def cmake_args(self):
])
# Additionally, we need to pass the BLAS+LAPACK include directory for
# header files. Intel MKL requires special case due to differences in
# Darwin vs. Linux $MKLROOT naming schemes
# header files. This is to insure vectorized math and FFT libraries
# get properly detected. Intel MKL requires special case due to
# differences in Darwin vs. Linux $MKLROOT naming schemes. This section
# of code is intentionally redundant for backwards compatibility.
if 'intel-mkl' in self.spec:
lapack_dir = format(join_path(env['MKLROOT'], 'include'))
# Next two lines were introduced in QMCPACK 3.5.0 and later.
# Prior to v3.5.0, these lines should be benign.
args.append('-DENABLE_MKL=1')
args.append('-DMKL_ROOT=%s' % env['MKLROOT'])
else:
lapack_dir = ':'.join((
spec['lapack'].prefix.include,