You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@buildstream.apache.org by gi...@apache.org on 2020/12/29 13:14:02 UTC
[buildstream] 41/43: _casbaseddirectory: Restructure resolve to
make it a bit more logical
This is an automated email from the ASF dual-hosted git repository.
github-bot pushed a commit to branch jmac/cas_to_cas_oct_v2
in repository https://gitbox.apache.org/repos/asf/buildstream.git
commit c9cfcf0291ed349797d27ec17d3824f90a8acd6c
Author: Jim MacArthur <ji...@codethink.co.uk>
AuthorDate: Tue Oct 30 12:19:23 2018 +0000
_casbaseddirectory: Restructure resolve to make it a bit more logical
---
buildstream/storage/_casbaseddirectory.py | 30 ++++++++++++++++++------------
1 file changed, 18 insertions(+), 12 deletions(-)
diff --git a/buildstream/storage/_casbaseddirectory.py b/buildstream/storage/_casbaseddirectory.py
index a868c52..cd06649 100644
--- a/buildstream/storage/_casbaseddirectory.py
+++ b/buildstream/storage/_casbaseddirectory.py
@@ -365,26 +365,32 @@ class CasBasedDirectory(Directory):
if isinstance(f, CasBasedDirectory):
directory = f
-
+ elif isinstance(f, remote_execution_pb2.FileNode):
+ # F is a file
+ if components:
+ # We have components still to resolve, but one of the path components
+ # is a file.
+ if force_create:
+ self.delete_entry(c)
+ directory = directory.descend(c, create=True)
+ else:
+ return f # TODO: Why return f? We've got components left and hit a file; this should be an error.
+ #raise VirtualDirectoryError("Reached a file called {} while trying to resolve a symlink; cannot proceed".format(c))
+ else:
+ # It's a file, but there's no components left, so just return that.
+ return f
else:
- # This is a file or None (i.e. broken symlink)
- if f is None and force_create:
+ # f is none, which covers many cases
+ if force_create:
directory = directory.descend(c, create=True)
- elif components and force_create:
- # Oh dear. We have components left to resolve, but the one we're trying to resolve points to a file.
- print("Trying to resolve {}, but found {} was a file.".format(symlink.target, c))
- self.delete_entry(c)
- directory = directory.descend(c, create=True)
- #raise VirtualDirectoryError("Reached a file called {} while trying to resolve a symlink; cannot proceed".format(c))
else:
- return f
+ return None
else:
if force_create:
directory = directory.descend(c, create=True)
else:
return None
-
- # Shouldn't get here.
+ # You can only exit the while loop with a return, so you shouldn't be here.
def _check_replacement(self, name, path_prefix, fileListResult):