diff options
-rw-r--r-- | src/buildstream/_cas/cascache.py | 32 | ||||
-rw-r--r-- | tests/testutils/artifactshare.py | 21 |
2 files changed, 20 insertions, 33 deletions
diff --git a/src/buildstream/_cas/cascache.py b/src/buildstream/_cas/cascache.py index d13531c6c..3182ec050 100644 --- a/src/buildstream/_cas/cascache.py +++ b/src/buildstream/_cas/cascache.py @@ -470,38 +470,6 @@ class CASCache: # Local Private Methods # ################################################ - def _reachable_refs_dir(self, reachable, tree, update_mtime=False, check_exists=False): - if tree.hash in reachable: - return - try: - if update_mtime: - os.utime(self.objpath(tree)) - - reachable.add(tree.hash) - - directory = remote_execution_pb2.Directory() - - with open(self.objpath(tree), "rb") as f: - directory.ParseFromString(f.read()) - - except FileNotFoundError: - if check_exists: - raise - - # Just exit early if the file doesn't exist - return - - for filenode in directory.files: - if update_mtime: - os.utime(self.objpath(filenode.digest)) - if check_exists: - if not os.path.exists(self.objpath(filenode.digest)): - raise FileNotFoundError - reachable.add(filenode.digest.hash) - - for dirnode in directory.directories: - self._reachable_refs_dir(reachable, dirnode.digest, update_mtime=update_mtime, check_exists=check_exists) - # _temporary_object(): # # Returns: diff --git a/tests/testutils/artifactshare.py b/tests/testutils/artifactshare.py index bd9c97c61..8ce8a4198 100644 --- a/tests/testutils/artifactshare.py +++ b/tests/testutils/artifactshare.py @@ -209,7 +209,7 @@ class ArtifactShare(BaseArtifactShare): reachable = set() def reachable_dir(digest): - self.cas._reachable_refs_dir(reachable, digest, update_mtime=False, check_exists=True) + self._reachable_refs_dir(reachable, digest) try: artifact_proto_path = self.cas.objpath(artifact_proto_digest) @@ -271,6 +271,25 @@ class ArtifactShare(BaseArtifactShare): shutil.rmtree(self.directory) + def _reachable_refs_dir(self, reachable, tree): + if tree.hash in reachable: + return + + reachable.add(tree.hash) + + directory = remote_execution_pb2.Directory() + + with open(self.cas.objpath(tree), "rb") as f: + directory.ParseFromString(f.read()) + + for filenode in directory.files: + if not os.path.exists(self.cas.objpath(filenode.digest)): + raise FileNotFoundError + reachable.add(filenode.digest.hash) + + for dirnode in directory.directories: + self._reachable_refs_dir(reachable, dirnode.digest) + # create_artifact_share() # |