From 30f5ccb80d62608b3006c0f2521c37d3bff6ec32 Mon Sep 17 00:00:00 2001 From: Tom Scogland Date: Tue, 29 Dec 2015 12:14:52 -0800 Subject: create leading directories for resources This allows resources to be placed into subdirectory trees that may not exist in the base package, and may depend on other resources to be staged later. --- lib/spack/spack/package.py | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) (limited to 'lib') diff --git a/lib/spack/spack/package.py b/lib/spack/spack/package.py index 84bcb15f7f..69b263db0c 100644 --- a/lib/spack/spack/package.py +++ b/lib/spack/spack/package.py @@ -705,10 +705,17 @@ class Package(object): placement = {'': placement} # Make the paths in the dictionary absolute and link for key, value in placement.iteritems(): - link_path = join_path(self.stage.source_path, resource.destination, value) + target_path = join_path(self.stage.source_path, resource.destination) + link_path = join_path(target_path, value) source_path = join_path(stage.source_path, key) if not os.path.exists(link_path): # Create a symlink + try: + os.makedirs(target_path) + except OSError as err: + if err.errno == errno.EEXIST and os.path.isdir(target_path): + pass + else: raise os.symlink(source_path, link_path) ########## self.stage.chdir_to_source() -- cgit v1.2.3-60-g2f50