summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJim MacArthur <jim.macarthur@codethink.co.uk>2018-10-04 17:52:15 +0100
committerJim MacArthur <jim.macarthur@codethink.co.uk>2018-10-29 11:09:54 +0000
commitdde560d0e44edd884b8f8b562e8b1bc056d8a224 (patch)
tree2dda959c76f2cb557ec2918a8ed433857e413d63
parent0e6901c8e74d6d2da7d2a1f03261f2379c444777 (diff)
downloadbuildstream-dde560d0e44edd884b8f8b562e8b1bc056d8a224.tar.gz
_casbaseddirectory: _list_relative_paths now passes all tests
-rw-r--r--buildstream/storage/_casbaseddirectory.py6
1 files changed, 4 insertions, 2 deletions
diff --git a/buildstream/storage/_casbaseddirectory.py b/buildstream/storage/_casbaseddirectory.py
index ef7bb689f..22a66644b 100644
--- a/buildstream/storage/_casbaseddirectory.py
+++ b/buildstream/storage/_casbaseddirectory.py
@@ -611,16 +611,18 @@ class CasBasedDirectory(Directory):
symlink_list = list(filter(lambda i: isinstance(i[1].pb_object, remote_execution_pb2.SymlinkNode), self.index.items()))
file_list = list(filter(lambda i: isinstance(i[1].pb_object, remote_execution_pb2.FileNode), self.index.items()))
directory_list = list(filter(lambda i: isinstance(i[1].buildstream_object, CasBasedDirectory), self.index.items()))
+ symlinks_to_directories_list = []
print("Running list_relative_paths on relpath {}. files={}, symlinks={}".format(relpath, [f[0] for f in file_list], [s[0] for s in symlink_list]))
for (k, v) in sorted(symlink_list):
target = self._resolve(k, absolute_symlinks_resolve=True)
if isinstance(target, CasBasedDirectory):
- print("Adding the resolved symlink {} which resolves to {} to our directory list".format(k, target))
- directory_list.append((k,IndexEntry(k, buildstream_object=target)))
+ symlinks_to_directories_list.append(k)
else:
# Broken symlinks are also considered files!
file_list.append((k,v))
+ for d in sorted(symlinks_to_directories_list):
+ yield os.path.join(relpath, d)
if file_list == [] and relpath != "":
print("Yielding empty directory name {}".format(relpath))
yield relpath