diff options
author | Jürg Billeter <j@bitron.ch> | 2019-12-05 13:00:49 +0000 |
---|---|---|
committer | Jürg Billeter <j@bitron.ch> | 2019-12-05 13:00:49 +0000 |
commit | 30e4a7d60477f1e6c8f82e13def193048aaaf003 (patch) | |
tree | 8fd42682b9f772ed6f974891b9552cbec47cf9de | |
parent | 44e0718192d13d02abfee97c3ee3301c74ab6488 (diff) | |
parent | 460268b2548cdff520f5e98006016eb0ea20b5c3 (diff) | |
download | buildstream-30e4a7d60477f1e6c8f82e13def193048aaaf003.tar.gz |
Merge branch 'juerg/cas-directory-reset' into 'master'
_sandboxreapi.py: Reset CasBasedDirectory instead of recreating it
See merge request BuildStream/buildstream!1749
-rw-r--r-- | src/buildstream/sandbox/_sandboxreapi.py | 5 | ||||
-rw-r--r-- | src/buildstream/sandbox/sandbox.py | 6 | ||||
-rw-r--r-- | src/buildstream/storage/_casbaseddirectory.py | 7 |
3 files changed, 8 insertions, 10 deletions
diff --git a/src/buildstream/sandbox/_sandboxreapi.py b/src/buildstream/sandbox/_sandboxreapi.py index d2cd1b3bc..834cdd8e0 100644 --- a/src/buildstream/sandbox/_sandboxreapi.py +++ b/src/buildstream/sandbox/_sandboxreapi.py @@ -21,7 +21,6 @@ from .sandbox import Sandbox, SandboxCommandError, _SandboxBatch from .. import utils from .._exceptions import ImplError, SandboxError from .._protos.build.bazel.remote.execution.v2 import remote_execution_pb2 -from ..storage._casbaseddirectory import CasBasedDirectory # SandboxREAPI() @@ -143,8 +142,8 @@ class SandboxREAPI(Sandbox): # to replace the sandbox's virtual directory with that. Creating a new virtual directory object # from another hash will be interesting, though... - new_dir = CasBasedDirectory(cascache, digest=dir_digest) - self._set_virtual_directory(new_dir) + vdir = self.get_virtual_directory() + vdir._reset(digest=dir_digest) def _create_batch(self, main_group, flags, *, collect=None): return _SandboxREAPIBatch(self, main_group, flags, collect=collect) diff --git a/src/buildstream/sandbox/sandbox.py b/src/buildstream/sandbox/sandbox.py index 804759416..071e23e84 100644 --- a/src/buildstream/sandbox/sandbox.py +++ b/src/buildstream/sandbox/sandbox.py @@ -209,12 +209,6 @@ class Sandbox: self._vdir = FileBasedDirectory(self._root) return self._vdir - def _set_virtual_directory(self, virtual_directory): - """ Sets virtual directory. Useful after remote execution - has rewritten the working directory. - """ - self._vdir = virtual_directory - def set_environment(self, environment: Dict[str, str]) -> None: """Sets the environment variables for the sandbox diff --git a/src/buildstream/storage/_casbaseddirectory.py b/src/buildstream/storage/_casbaseddirectory.py index f90d5c503..d6ebc6f75 100644 --- a/src/buildstream/storage/_casbaseddirectory.py +++ b/src/buildstream/storage/_casbaseddirectory.py @@ -103,9 +103,14 @@ class CasBasedDirectory(Directory): self.filename = filename self.common_name = common_name self.cas_cache = cas_cache - self.__digest = digest + self.__digest = None self.index = {} self.parent = parent + self._reset(digest=digest) + + def _reset(self, *, digest=None): + self.__digest = digest + self.index = {} if digest: self._populate_index(digest) |