summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJürg Billeter <j@bitron.ch>2019-02-01 11:02:46 +0000
committerJürg Billeter <j@bitron.ch>2019-02-09 07:16:38 +0100
commita162ef1f0ac485a9721666b3645a33801958a5d1 (patch)
treef2c4c39801d3722b19a8e04094bffbe66dd5681b
parent505da955ac665781f70d6fd1313df61f62e916e6 (diff)
downloadbuildstream-juerg/symlinks.tar.gz
_casbaseddirectory.py: Do not mimic os.walk() in list_relative_paths()juerg/symlinks
This matches the change in utils.list_relative_paths() that now sorts all symlinks as files, instead of following the broken behavior of os.walk().
-rw-r--r--buildstream/storage/_casbaseddirectory.py15
1 files changed, 1 insertions, 14 deletions
diff --git a/buildstream/storage/_casbaseddirectory.py b/buildstream/storage/_casbaseddirectory.py
index d88222273..09c8c9875 100644
--- a/buildstream/storage/_casbaseddirectory.py
+++ b/buildstream/storage/_casbaseddirectory.py
@@ -795,24 +795,11 @@ class CasBasedDirectory(Directory):
Return value: List(str) - list of all paths
"""
- symlink_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),
+ file_list = list(filter(lambda i: not isinstance(i[1].buildstream_object, CasBasedDirectory),
self.index.items()))
directory_list = filter(lambda i: isinstance(i[1].buildstream_object, CasBasedDirectory),
self.index.items())
- # We need to mimic the behaviour of os.walk, in which symlinks
- # to directories count as directories and symlinks to file or
- # broken symlinks count as files. os.walk doesn't follow
- # symlinks, so we don't recurse.
- for (k, v) in sorted(symlink_list):
- target = self._resolve(k, absolute_symlinks_resolve=True)
- if isinstance(target, CasBasedDirectory):
- yield os.path.join(relpath, k)
- else:
- file_list.append((k, v))
-
if file_list == [] and relpath != "":
yield relpath
else: