summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTiziano Müller <tiziano.mueller@chem.uzh.ch>2019-05-09 15:08:51 +0200
committerPeter Scheibel <scheibel1@llnl.gov>2019-05-10 03:43:02 +0900
commit92c4567404f1ee8476277e65d5e70a63f96e428a (patch)
treefaa82fc09957f6d0dfeb8451fe6de5d34db07d38
parentf87722b74d298d521cb6327ad89f6f8d15902909 (diff)
downloadspack-92c4567404f1ee8476277e65d5e70a63f96e428a.tar.gz
spack-92c4567404f1ee8476277e65d5e70a63f96e428a.tar.bz2
spack-92c4567404f1ee8476277e65d5e70a63f96e428a.tar.xz
spack-92c4567404f1ee8476277e65d5e70a63f96e428a.zip
elpa: override headers prop for common include-dir localization
... and apply this in SIRIUS, CP2K & QE. Thanks to @scheibelp for the idea.
-rw-r--r--var/spack/repos/builtin/packages/cp2k/package.py10
-rw-r--r--var/spack/repos/builtin/packages/elpa/package.py14
-rw-r--r--var/spack/repos/builtin/packages/quantum-espresso/package.py8
-rw-r--r--var/spack/repos/builtin/packages/sirius/package.py11
4 files changed, 24 insertions, 19 deletions
diff --git a/var/spack/repos/builtin/packages/cp2k/package.py b/var/spack/repos/builtin/packages/cp2k/package.py
index a76832ac48..7c568c712a 100644
--- a/var/spack/repos/builtin/packages/cp2k/package.py
+++ b/var/spack/repos/builtin/packages/cp2k/package.py
@@ -284,13 +284,9 @@ class Cp2k(MakefilePackage):
if '+elpa' in self.spec:
elpa = spec['elpa']
elpa_suffix = '_openmp' if '+openmp' in elpa else ''
- elpa_base_path = os.path.join(
- elpa.prefix,
- 'include',
- 'elpa{suffix}-{version!s}'.format(
- suffix=elpa_suffix, version=elpa.version))
+ elpa_incdir = elpa.headers.directories[0]
- fcflags.append('-I' + os.path.join(elpa_base_path, 'modules'))
+ fcflags += ['-I{0}'.format(os.path.join(elpa_incdir, 'modules'))]
libs.append(os.path.join(elpa.libs.directories[0],
('libelpa{elpa_suffix}.{dso_suffix}'
.format(elpa_suffix=elpa_suffix,
@@ -307,7 +303,7 @@ class Cp2k(MakefilePackage):
cppflags.append('-D__ELPA={0}{1:02d}'
.format(elpa.version[0],
int(elpa.version[1])))
- fcflags.append('-I' + os.path.join(elpa_base_path, 'elpa'))
+ fcflags += ['-I{0}'.format(os.path.join(elpa_incdir, 'elpa'))]
if self.spec.satisfies('+sirius'):
sirius = spec['sirius']
diff --git a/var/spack/repos/builtin/packages/elpa/package.py b/var/spack/repos/builtin/packages/elpa/package.py
index 914aa3a98f..b538485d98 100644
--- a/var/spack/repos/builtin/packages/elpa/package.py
+++ b/var/spack/repos/builtin/packages/elpa/package.py
@@ -3,6 +3,8 @@
#
# SPDX-License-Identifier: (Apache-2.0 OR MIT)
+import os
+
from spack import *
@@ -43,6 +45,18 @@ class Elpa(AutotoolsPackage):
libname, root=self.prefix, shared=True, recursive=True
)
+ @property
+ def headers(self):
+ suffix = '_openmp' if self.spec.satisfies('+openmp') else ''
+ incdir = os.path.join(
+ self.spec.prefix.include,
+ 'elpa{suffix}-{version!s}'.format(
+ suffix=suffix, version=self.spec.version))
+
+ hlist = find_all_headers(incdir)
+ hlist.directories = [incdir]
+ return hlist
+
build_directory = 'spack-build'
def setup_environment(self, spack_env, run_env):
diff --git a/var/spack/repos/builtin/packages/quantum-espresso/package.py b/var/spack/repos/builtin/packages/quantum-espresso/package.py
index ad7ad1a3e4..2281b59076 100644
--- a/var/spack/repos/builtin/packages/quantum-espresso/package.py
+++ b/var/spack/repos/builtin/packages/quantum-espresso/package.py
@@ -217,13 +217,13 @@ class QuantumEspresso(Package):
# Spec for elpa
elpa = spec['elpa']
- # Find where the Fortran module resides
- elpa_module = find(elpa.prefix, 'elpa.mod')
-
# Compute the include directory from there: versions
# of espresso prior to 6.1 requires -I in front of the directory
elpa_include = '' if '@6.1:' in spec else '-I'
- elpa_include += os.path.dirname(elpa_module[0])
+ elpa_include += os.path.join(
+ elpa.headers.directories[0],
+ 'modules'
+ )
options.extend([
'--with-elpa-include={0}'.format(elpa_include),
diff --git a/var/spack/repos/builtin/packages/sirius/package.py b/var/spack/repos/builtin/packages/sirius/package.py
index 3cbb3643df..d8ccc7e376 100644
--- a/var/spack/repos/builtin/packages/sirius/package.py
+++ b/var/spack/repos/builtin/packages/sirius/package.py
@@ -81,15 +81,10 @@ class Sirius(CMakePackage):
]
if self.spec.satisfies('+elpa'):
- elpa = self.spec['elpa']
- elpa_suffix = '_openmp' if elpa.satisfies('+openmp') else ''
elpa_incdir = os.path.join(
- elpa.prefix,
- 'include',
- 'elpa{suffix}-{version!s}'.format(
- suffix=elpa_suffix, version=elpa.version),
- 'elpa')
-
+ self.spec['elpa'].headers.directories[0],
+ 'elpa'
+ )
args += ["-DELPA_INCLUDE_DIR={0}".format(elpa_incdir)]
return args