diff --git a/var/spack/repos/builtin/packages/cp2k/package.py b/var/spack/repos/builtin/packages/cp2k/package.py index a76832ac48672ecc60f4b9b9f5e05aa3611b0433..7c568c712a4e0353c43d29f81ea110ba2e96a1a8 100644 --- a/var/spack/repos/builtin/packages/cp2k/package.py +++ b/var/spack/repos/builtin/packages/cp2k/package.py @@ -284,13 +284,9 @@ def edit(self, spec, prefix): 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 @@ def edit(self, spec, prefix): 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 914aa3a98fa2c7ca539453d2e3f90ef92ab5caff..b538485d98cfc88d366cc261e537f9bc20b3382a 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 @@ def libs(self): 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 ad7ad1a3e4b36706c9519cd412fc2ca1b20fa999..2281b5907670c74232a098f34e97fffcb4d9b455 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 @@ def install(self, spec, prefix): # 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 3cbb3643df8ec840e3c5b83397e7ed56afdb7fca..d8ccc7e3769e2a404e5837ffd820c1057e1b73c3 100644 --- a/var/spack/repos/builtin/packages/sirius/package.py +++ b/var/spack/repos/builtin/packages/sirius/package.py @@ -81,15 +81,10 @@ def _def(variant, flag=None): ] 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