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:13:55 UTC
[buildstream] 34/43: _casbaseddirectory.py:
_resolve_symlink_or_directory -> _force_resolve
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 f206850543880e221f230fad43fad38df93a090d
Author: Jim MacArthur <ji...@codethink.co.uk>
AuthorDate: Tue Oct 30 09:59:02 2018 +0000
_casbaseddirectory.py: _resolve_symlink_or_directory -> _force_resolve
---
buildstream/storage/_casbaseddirectory.py | 21 ++++++++-------------
1 file changed, 8 insertions(+), 13 deletions(-)
diff --git a/buildstream/storage/_casbaseddirectory.py b/buildstream/storage/_casbaseddirectory.py
index 16899e9..d9fa2da 100644
--- a/buildstream/storage/_casbaseddirectory.py
+++ b/buildstream/storage/_casbaseddirectory.py
@@ -156,8 +156,8 @@ class CasBasedDirectory(Directory):
self.delete_entry(name)
elif isinstance(existing_item, remote_execution_pb2.SymlinkNode):
# Directory imported over symlink with same source name
- if self.symlink_target_is_directory(existing_item):
- return self._resolve_symlink_or_directory(name) # That's fine; any files in the source directory should end up at the target of the symlink.
+ if self._symlink_target_is_directory(existing_item):
+ return self._force_resolve(name) # That's fine; any files in the source directory should end up at the target of the symlink.
else:
self.delete_entry(name) # Symlinks to files get replaced
return self.descend(name, create=True) # Creates the directory if it doesn't already exist.
@@ -303,7 +303,7 @@ class CasBasedDirectory(Directory):
else:
return self
- def _resolve_symlink_or_directory(self, name):
+ def _force_resolve(self, name):
"""Used only by _import_files_from_directory. Tries to resolve a
directory name or symlink name. 'name' must be an entry in this
directory. It must be a single symlink or directory name, not a path
@@ -328,11 +328,6 @@ class CasBasedDirectory(Directory):
print("Is {} followable? Resolved to {}".format(name, target))
return isinstance(target, CasBasedDirectory) or target is None
- def _resolve_symlink(self, node, force_create=True):
- """Same as _resolve_symlink_or_directory but takes a SymlinkNode.
- """
- return self._resolve(node.name, force_create=True)
-
def _resolve(self, name, absolute_symlinks_resolve=True, force_create=False, first_seen_object = None):
""" Resolves any name to an object. If the name points to a symlink in
this directory, it returns the thing it points to,
@@ -458,7 +453,7 @@ class CasBasedDirectory(Directory):
as a directory tree is descended. """
if directory_name in self.index:
if self._is_followable(directory_name):
- subdir = self._resolve_symlink_or_directory(directory_name)
+ subdir = self._force_resolve(directory_name)
else:
print("Overwriting unfollowable thing {}".format(directory_name))
self.delete_entry(directory_name)
@@ -513,8 +508,8 @@ class CasBasedDirectory(Directory):
dirname += os.path.sep
return [f[len(dirname):] for f in sorted_files if f.startswith(dirname)]
- def symlink_target_is_directory(self, symlink_node):
- x = self._resolve_symlink(symlink_node, force_create=False)
+ def _symlink_target_is_directory(self, symlink_node):
+ x = self._resolve(symlink_node.name)
return isinstance(x, CasBasedDirectory)
def _partial_import_cas_into_cas(self, source_directory, files, path_prefix="", file_list_required=True):
@@ -547,8 +542,8 @@ class CasBasedDirectory(Directory):
else:
dest_subdir = x
else:
- self.create_directory(dirname)
- dest_subdir = self._resolve_symlink_or_directory(dirname)
+ self.create_directory(dirname) # Unnecssary? Why force_resolve if we resolve?
+ dest_subdir = self._force_resolve(dirname)
src_subdir = source_directory.descend(dirname)
import_result = dest_subdir._partial_import_cas_into_cas(src_subdir, subcomponents,
path_prefix=fullname, file_list_required=file_list_required)