diff --git a/buildstream/storage/_filebaseddirectory.py b/buildstream/storage/_filebaseddirectory.py index 19d35a7b1c0bdb8b40a8fe45f0c1979d9633f520..a0319fdcc9f4b20f4b09fe38b03b2d4937ffbc9c 100644 --- a/buildstream/storage/_filebaseddirectory.py +++ b/buildstream/storage/_filebaseddirectory.py @@ -121,8 +121,12 @@ class FileBasedDirectory(Directory): for f in import_result.files_written: os.utime(os.path.join(self.external_directory, f), times=(cur_time, cur_time)) + self.mark_changed() return import_result + def mark_changed(self): + self._directory_read = False + def set_deterministic_mtime(self): _set_deterministic_mtime(self.external_directory) diff --git a/buildstream/storage/directory.py b/buildstream/storage/directory.py index 7ff7e790a6b1ef42e58883b65c03eca9a1c70d44..52b0fbb2f5c17374df3cbd19cbd02ea4a1b8a7a9 100644 --- a/buildstream/storage/directory.py +++ b/buildstream/storage/directory.py @@ -124,6 +124,14 @@ class Directory(): """ raise NotImplementedError() + def mark_changed(self): + """ Mark this directory as having been changed outside this API. This + normally can only happen by calling the Sandbox's `run` + method. + + """ + raise NotImplementedError() + # Convenience functions def is_empty(self): """ Return true if this directory has no files, subdirectories or links in it.