diff options
author | Tiziano Müller <tiziano.mueller@chem.uzh.ch> | 2019-05-09 15:08:51 +0200 |
---|---|---|
committer | Peter Scheibel <scheibel1@llnl.gov> | 2019-05-10 03:43:02 +0900 |
commit | 92c4567404f1ee8476277e65d5e70a63f96e428a (patch) | |
tree | faa82fc09957f6d0dfeb8451fe6de5d34db07d38 | |
parent | f87722b74d298d521cb6327ad89f6f8d15902909 (diff) | |
download | spack-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.
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 |