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.
This commit is contained in:
Tom Scogland 2015-12-29 12:14:52 -08:00
parent 01f811d546
commit 30f5ccb80d

View file

@ -705,10 +705,17 @@ def _expand_archive(stage, name=self.name):
placement = {'': placement} placement = {'': placement}
# Make the paths in the dictionary absolute and link # Make the paths in the dictionary absolute and link
for key, value in placement.iteritems(): 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) source_path = join_path(stage.source_path, key)
if not os.path.exists(link_path): if not os.path.exists(link_path):
# Create a symlink # 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) os.symlink(source_path, link_path)
########## ##########
self.stage.chdir_to_source() self.stage.chdir_to_source()