summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJim MacArthur <jim.macarthur@codethink.co.uk>2018-05-25 11:01:45 +0100
committerJim MacArthur <jim@mode7.co.uk>2018-05-28 11:31:59 +0100
commit344de3bf989fed7d2c12669d9bbcb2a13e669ad4 (patch)
tree63b86ca59b4515f5c6cff157a6e3433476bfffb3
parentf3f2489561261874b5c24709bc0b07e8685b72d8 (diff)
downloadbuildstream-344de3bf989fed7d2c12669d9bbcb2a13e669ad4.tar.gz
Add recursive_save and stop passing 'name' field onto subtrees
-rw-r--r--buildstream/storage/_casbaseddirectory.py20
1 files changed, 13 insertions, 7 deletions
diff --git a/buildstream/storage/_casbaseddirectory.py b/buildstream/storage/_casbaseddirectory.py
index 1acde4e29..3e637a384 100644
--- a/buildstream/storage/_casbaseddirectory.py
+++ b/buildstream/storage/_casbaseddirectory.py
@@ -146,7 +146,7 @@ class CasBasedDirectory(Directory):
# Replace with tree read
for entry in self.directory.directories:
- self.index[entry.name] = IndexEntry(CasBasedDirectory(self.context, ref=entry.digest,parent=self,name=entry.name))
+ self.index[entry.name] = IndexEntry(CasBasedDirectory(self.context, ref=entry.digest,parent=self))
for entry in self.directory.files:
self.index[entry.name] = IndexEntry(_FileObject(self, entry))
@@ -160,7 +160,7 @@ class CasBasedDirectory(Directory):
def _add_new_blank_directory(self, name):
print("Creating new CasBasedDirectory '{}', blank".format(name))
- newdir = CasBasedDirectory(self.context, parent=self, name=name)
+ newdir = CasBasedDirectory(self.context, parent=self)
dirnode = self.directory.directories.add()
dirnode.name = name
# Calculate the hash for an empty directory
@@ -187,7 +187,7 @@ class CasBasedDirectory(Directory):
raise VirtualDirectoryError("New directory {} in {} would overwrite existing non-directory of type {}".format(name, str(self), type(newdir)))
dirnode = self.find_directory(name)
else:
- newdir = CasBasedDirectory(self.context, parent=self, name=name)
+ newdir = CasBasedDirectory(self.context, parent=self)
dirnode = self.directory.directories.add()
dirnode.name = name
@@ -274,7 +274,14 @@ class CasBasedDirectory(Directory):
os.makedirs(refdir)
with open(refname, "wt") as f:
f.write(self.ref.hash)
-
+
+ def recursive_save(self):
+ if self.name != "undefined": #TODO: Not good enough!
+ print("Automatic save of ref {} to {}".format(self.ref.hash, self.name))
+ self.save(self.name)
+ elif self.parent:
+ self.parent.recursive_save()
+
def import_files(self, external_pathspec: any, files: List[str] = None,
report_written: bool = True, update_utimes: bool = False,
can_link: bool = False) -> FileListResult:
@@ -312,9 +319,8 @@ class CasBasedDirectory(Directory):
source_directory = external_pathspec
# TODO: No notice is taken of the `files` argument, report_written, update_utimes or can_link.
- self._import_files_from_directory(source_directory)
- if self.name != "undefined": #TODO: Not good enough!
- self.save(self.name)
+ self._import_files_from_directory(source_directory)
+ self.recursive_save()
def set_deterministic_mtime(self) -> None:
""" Sets a static modification time for all regular files in this directory.