diff options
author | Massimiliano Culpo <massimiliano.culpo@gmail.com> | 2018-01-19 09:31:19 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-01-19 09:31:19 +0100 |
commit | a389bff9490a7adf11814d9922a0237793c3d75c (patch) | |
tree | 176ee7190e736c713dfe4c6786964430f8d6f893 | |
parent | 3686c250ed61473a0de456d9c7aed98c3187724b (diff) | |
download | spack-a389bff9490a7adf11814d9922a0237793c3d75c.tar.gz spack-a389bff9490a7adf11814d9922a0237793c3d75c.tar.bz2 spack-a389bff9490a7adf11814d9922a0237793c3d75c.tar.xz spack-a389bff9490a7adf11814d9922a0237793c3d75c.zip |
Added a setter to the Spec.prefix property (#6814)
This commit removes logic from Spec that was there only to be used in
tests, and allows to set a new prefix cleanly in user's code.
-rw-r--r-- | lib/spack/spack/spec.py | 14 | ||||
-rw-r--r-- | lib/spack/spack/test/test_activations.py | 16 |
2 files changed, 17 insertions, 13 deletions
diff --git a/lib/spack/spack/spec.py b/lib/spack/spack/spec.py index 9f25dd0487..b0eba7363d 100644 --- a/lib/spack/spack/spec.py +++ b/lib/spack/spack/spec.py @@ -884,6 +884,9 @@ class SpecBuildInterface(ObjectWrapper): @key_ordering class Spec(object): + #: Cache for spec's prefix, computed lazily in the corresponding property + _prefix = None + @staticmethod def from_literal(spec_dict, normal=True): """Builds a Spec from a dictionary containing the spec literal. @@ -1374,12 +1377,13 @@ class Spec(object): @property def prefix(self): - if hasattr(self, 'test_prefix'): - return Prefix(self.test_prefix) - return Prefix(spack.store.layout.path_for_spec(self)) + if self._prefix is None: + self.prefix = spack.store.layout.path_for_spec(self) + return self._prefix - def _set_test_prefix(self, val): - self.test_prefix = val + @prefix.setter + def prefix(self, value): + self._prefix = Prefix(value) def dag_hash(self, length=None): """Return a hash of the entire spec DAG, including connectivity.""" diff --git a/lib/spack/spack/test/test_activations.py b/lib/spack/spack/test/test_activations.py index ec3562aaa6..025ef89abe 100644 --- a/lib/spack/spack/test/test_activations.py +++ b/lib/spack/spack/test/test_activations.py @@ -75,7 +75,7 @@ def python_and_extension_dirs(tmpdir): python_spec = spack.spec.Spec('python@2.7.12') python_spec._concrete = True - python_spec.package.spec._set_test_prefix(str(python_prefix)) + python_spec.package.spec.prefix = str(python_prefix) ext_dirs = { 'bin/': { @@ -115,7 +115,7 @@ def test_python_activation(tmpdir): python_prefix = str(tmpdir.join(python_name)) # Set the prefix on the package's spec reference because that is a copy of # the original spec - python_spec.package.spec._set_test_prefix(python_prefix) + python_spec.package.spec.prefix = python_prefix ext_name = 'py-extension' tmpdir.ensure(ext_name, dir=True) @@ -130,7 +130,7 @@ def test_python_activation_with_files(tmpdir, python_and_extension_dirs): python_spec = spack.spec.Spec('python@2.7.12') python_spec._concrete = True - python_spec.package.spec._set_test_prefix(python_prefix) + python_spec.package.spec.prefix = python_prefix ext_pkg = FakeExtensionPackage('py-extension', ext_prefix) @@ -152,7 +152,7 @@ def test_python_activation_view(tmpdir, python_and_extension_dirs): python_spec = spack.spec.Spec('python@2.7.12') python_spec._concrete = True - python_spec.package.spec._set_test_prefix(python_prefix) + python_spec.package.spec.prefix = python_prefix ext_pkg = FakeExtensionPackage('py-extension', ext_prefix) @@ -189,7 +189,7 @@ def perl_and_extension_dirs(tmpdir): perl_spec = spack.spec.Spec('perl@5.24.1') perl_spec._concrete = True - perl_spec.package.spec._set_test_prefix(str(perl_prefix)) + perl_spec.package.spec.prefix = str(perl_prefix) ext_dirs = { 'bin/': { @@ -225,7 +225,7 @@ def test_perl_activation(tmpdir): perl_prefix = str(tmpdir.join(perl_name)) # Set the prefix on the package's spec reference because that is a copy of # the original spec - perl_spec.package.spec._set_test_prefix(perl_prefix) + perl_spec.package.spec.prefix = perl_prefix ext_name = 'perl-extension' tmpdir.ensure(ext_name, dir=True) @@ -240,7 +240,7 @@ def test_perl_activation_with_files(tmpdir, perl_and_extension_dirs): perl_spec = spack.spec.Spec('perl@5.24.1') perl_spec._concrete = True - perl_spec.package.spec._set_test_prefix(perl_prefix) + perl_spec.package.spec.prefix = perl_prefix ext_pkg = FakeExtensionPackage('perl-extension', ext_prefix) @@ -255,7 +255,7 @@ def test_perl_activation_view(tmpdir, perl_and_extension_dirs): perl_spec = spack.spec.Spec('perl@5.24.1') perl_spec._concrete = True - perl_spec.package.spec._set_test_prefix(perl_prefix) + perl_spec.package.spec.prefix = perl_prefix ext_pkg = FakeExtensionPackage('perl-extension', ext_prefix) |