summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorOliver Breitwieser <oliver.breitwieser@kip.uni-heidelberg.de>2017-09-18 09:22:51 -0400
committerscheibelp <scheibel1@llnl.gov>2017-11-02 18:45:40 -0700
commit20cd82dc56d015c93e6e326d9ba398f8971e211c (patch)
tree96170f26226e06b78408dfd4e8ff35611aa437d6
parent94c0740a8850c7007ed1342979392c53878fe8cf (diff)
downloadspack-20cd82dc56d015c93e6e326d9ba398f8971e211c.tar.gz
spack-20cd82dc56d015c93e6e326d9ba398f8971e211c.tar.bz2
spack-20cd82dc56d015c93e6e326d9ba398f8971e211c.tar.xz
spack-20cd82dc56d015c93e6e326d9ba398f8971e211c.zip
directory_layout: add a YamlExtensionsLayout class
This uses a view to query extensions.
-rw-r--r--lib/spack/spack/directory_layout.py25
1 files changed, 25 insertions, 0 deletions
diff --git a/lib/spack/spack/directory_layout.py b/lib/spack/spack/directory_layout.py
index 4bc7a26926..dbab4cea11 100644
--- a/lib/spack/spack/directory_layout.py
+++ b/lib/spack/spack/directory_layout.py
@@ -157,6 +157,11 @@ class ExtensionsLayout(object):
"""
raise NotImplementedError()
+ def extendee_target_directory(self, extendee):
+ """Specify to which full path extendee should link all files
+ from extensions."""
+ raise NotImplementedError
+
def remove_extension(self, spec, ext_spec):
"""Remove from the list of currently installed extensions."""
raise NotImplementedError()
@@ -359,6 +364,9 @@ class YamlExtensionsLayout(ExtensionsLayout):
_check_concrete(spec)
return self._extension_map(spec).copy()
+ def extendee_target_directory(self, extendee):
+ return extendee.prefix
+
def remove_extension(self, spec, ext_spec):
_check_concrete(spec)
_check_concrete(ext_spec)
@@ -428,6 +436,23 @@ class YamlExtensionsLayout(ExtensionsLayout):
os.rename(tmp.name, path)
+class YamlViewExtensionsLayout(YamlExtensionsLayout):
+ """Governs the directory layout present when creating filesystem views in a
+ certain root folder.
+
+ Meant to replace YamlDirectoryLayout when working with filesystem views.
+ """
+
+ def extension_file_path(self, spec):
+ """Gets the full path to an installed package's extension file."""
+ _check_concrete(spec)
+ return join_path(self.root, self.layout.metadata_dir, spec.name,
+ self.extension_file_name)
+
+ def extendee_target_directory(self, extendee):
+ return self.root
+
+
class DirectoryLayoutError(SpackError):
"""Superclass for directory layout errors."""