From 20cd82dc56d015c93e6e326d9ba398f8971e211c Mon Sep 17 00:00:00 2001 From: Oliver Breitwieser Date: Mon, 18 Sep 2017 09:22:51 -0400 Subject: directory_layout: add a YamlExtensionsLayout class This uses a view to query extensions. --- lib/spack/spack/directory_layout.py | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) 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.""" -- cgit v1.2.3-70-g09d2