diff options
author | Jim MacArthur <jim.macarthur@codethink.co.uk> | 2018-05-25 11:01:45 +0100 |
---|---|---|
committer | Jim MacArthur <jim@mode7.co.uk> | 2018-05-28 11:31:59 +0100 |
commit | 344de3bf989fed7d2c12669d9bbcb2a13e669ad4 (patch) | |
tree | 63b86ca59b4515f5c6cff157a6e3433476bfffb3 | |
parent | f3f2489561261874b5c24709bc0b07e8685b72d8 (diff) | |
download | buildstream-344de3bf989fed7d2c12669d9bbcb2a13e669ad4.tar.gz |
Add recursive_save and stop passing 'name' field onto subtrees
-rw-r--r-- | buildstream/storage/_casbaseddirectory.py | 20 |
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. |