diff options
author | Massimiliano Culpo <massimiliano.culpo@googlemail.com> | 2016-12-28 21:37:02 +0100 |
---|---|---|
committer | Todd Gamblin <tgamblin@llnl.gov> | 2016-12-28 12:37:02 -0800 |
commit | 17b13b161b3ddcd691ea7ed90165cfab6dec3950 (patch) | |
tree | b0e9360f878e8d007ab63ede06aa80df89ac4a17 /var | |
parent | 857dac88c8c041f1384f9ffd555d8f4abc03e163 (diff) | |
download | spack-17b13b161b3ddcd691ea7ed90165cfab6dec3950.tar.gz spack-17b13b161b3ddcd691ea7ed90165cfab6dec3950.tar.bz2 spack-17b13b161b3ddcd691ea7ed90165cfab6dec3950.tar.xz spack-17b13b161b3ddcd691ea7ed90165cfab6dec3950.zip |
Directive inheritance: laziness for the win (#2623)
* inheritance of directives: using meta-classes to inject attributes coming from directives into packages + lazy directives
* _dep_types -> dependency_types
* using a meta-class to inject directives into packages
* directives are lazy
fixes #2466
* directives.py: allows for multiple inheritance. Added blank lines as suggested by @tgamblin
* directives.py: added a test for simple inheritance of directives
* Minor improvement requested by @tgamblin
CMakePackage: importing names from spack.directives
directives: wrap __new__ to respect pep8
* Refactoring requested by @tgamblin
directives: removed global variables in favor of class variables. Simplified the interface for directives (they return a callable on a package or a list of them).
Diffstat (limited to 'var')
4 files changed, 24 insertions, 5 deletions
diff --git a/var/spack/repos/builtin.mock/packages/simple_inheritance/package.py b/var/spack/repos/builtin.mock/packages/simple_inheritance/package.py new file mode 100644 index 0000000000..3f135b002e --- /dev/null +++ b/var/spack/repos/builtin.mock/packages/simple_inheritance/package.py @@ -0,0 +1,24 @@ +from spack import * + + +class BaseWithDirectives(Package): + + depends_on('cmake', type='build') + depends_on('mpi') + variant('openblas', description='Activates openblas', default=True) + provides('service1') + + +class SimpleInheritance(BaseWithDirectives): + """Simple package which acts as a build dependency""" + + homepage = "http://www.example.com" + url = "http://www.example.com/simple-1.0.tar.gz" + + version('1.0', '0123456789abcdef0123456789abcdef') + + depends_on('openblas', when='+openblas') + provides('lapack', when='+openblas') + + def install(self, spec, prefix): + pass diff --git a/var/spack/repos/builtin/packages/dealii/package.py b/var/spack/repos/builtin/packages/dealii/package.py index 0207f755f7..8c31b90f51 100644 --- a/var/spack/repos/builtin/packages/dealii/package.py +++ b/var/spack/repos/builtin/packages/dealii/package.py @@ -90,7 +90,6 @@ class Dealii(CMakePackage): "boost@1.59.0:+thread+system+serialization+iostreams+mpi+python", when='@8.5.0:+mpi+python') depends_on("bzip2") - depends_on("cmake", type='build') depends_on("lapack") depends_on("muparser") depends_on("suite-sparse") diff --git a/var/spack/repos/builtin/packages/openjpeg/package.py b/var/spack/repos/builtin/packages/openjpeg/package.py index 988ebc155d..b22de4452a 100644 --- a/var/spack/repos/builtin/packages/openjpeg/package.py +++ b/var/spack/repos/builtin/packages/openjpeg/package.py @@ -43,5 +43,3 @@ class Openjpeg(CMakePackage): version('2.0', 'cdf266530fee8af87454f15feb619609') version('1.5.2', '545f98923430369a6b046ef3632ef95c') version('1.5.1', 'd774e4b5a0db5f0f171c4fc0aabfa14e') - - depends_on('cmake', type='build') diff --git a/var/spack/repos/builtin/packages/yaml-cpp/package.py b/var/spack/repos/builtin/packages/yaml-cpp/package.py index a672bbca97..0ced7c89fc 100644 --- a/var/spack/repos/builtin/packages/yaml-cpp/package.py +++ b/var/spack/repos/builtin/packages/yaml-cpp/package.py @@ -36,8 +36,6 @@ class YamlCpp(CMakePackage): variant('fpic', default=False, description='Build with position independent code') - depends_on('cmake', type='build') - depends_on('boost', when='@:0.5.3') def cmake_args(self): |