diff options
author | Oliver Breitwieser <oliver.breitwieser@kip.uni-heidelberg.de> | 2017-09-18 09:22:51 -0400 |
---|---|---|
committer | scheibelp <scheibel1@llnl.gov> | 2017-11-02 18:45:40 -0700 |
commit | 20cd82dc56d015c93e6e326d9ba398f8971e211c (patch) | |
tree | 96170f26226e06b78408dfd4e8ff35611aa437d6 /lib | |
parent | 94c0740a8850c7007ed1342979392c53878fe8cf (diff) | |
download | spack-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.
Diffstat (limited to 'lib')
-rw-r--r-- | lib/spack/spack/directory_layout.py | 25 |
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.""" |