diff options
author | Gregory Becker <becker33@llnl.gov> | 2016-03-18 09:35:56 -0700 |
---|---|---|
committer | Gregory Becker <becker33@llnl.gov> | 2016-03-18 09:35:56 -0700 |
commit | 1fa38689d87480bb0d291af9b9cf0dbcf7557eb5 (patch) | |
tree | 355f2a2e0a8471a70f736491891cde47d8e6ac9b | |
parent | b93a2ba1cf2644256fc7b8295f6ce279853975d7 (diff) | |
download | spack-1fa38689d87480bb0d291af9b9cf0dbcf7557eb5.tar.gz spack-1fa38689d87480bb0d291af9b9cf0dbcf7557eb5.tar.bz2 spack-1fa38689d87480bb0d291af9b9cf0dbcf7557eb5.tar.xz spack-1fa38689d87480bb0d291af9b9cf0dbcf7557eb5.zip |
Created flatten_dependencies function that dummy packages can use to create sane install environments.
-rw-r--r-- | lib/spack/spack/directory_layout.py | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/lib/spack/spack/directory_layout.py b/lib/spack/spack/directory_layout.py index 242eb1afa0..9f17404062 100644 --- a/lib/spack/spack/directory_layout.py +++ b/lib/spack/spack/directory_layout.py @@ -33,6 +33,7 @@ import yaml import llnl.util.tty as tty from llnl.util.filesystem import join_path, mkdirp +from llnl.util.link_tree import * from spack.spec import Spec from spack.error import SpackError @@ -131,6 +132,23 @@ class DirectoryLayout(object): raise NotImplementedError() + def flatten_dependencies(self, spec, flat_dir): + """Make each dependency of spec present in dir via symlink.""" + for dep in spec.traverse(root=False): + name = dep.name + + dep_path = self.path_for_spec(dep) + dep_files = LinkTree(dep_path) + + os.mkdir(flat_dir+'/'+name) + + conflict = dep_files.find_conflict(flat_dir+'/'+name) + if conflict: + raise DependencyConflictError(conflict) + + dep_files.merge(flat_dir+'/'+name) + + def path_for_spec(self, spec): """Return an absolute path from the root to a directory for the spec.""" _check_concrete(spec) |