From daca274041e31636f08927b0cebc56fd33c7bbdf Mon Sep 17 00:00:00 2001 From: Oliver Reiche Date: Thu, 7 Jul 2022 17:28:29 +0200 Subject: LocalExecution: Use Git tree format - LocalStorage Add tree CAS and support reading Git trees - LocalAction: Create Git tree for output directory - LocalApi: Support availability and upload of Git trees - LocalStorage: Support dumping tree to stream in native mode --- src/buildtool/execution_api/local/local_storage.hpp | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) (limited to 'src/buildtool/execution_api/local/local_storage.hpp') diff --git a/src/buildtool/execution_api/local/local_storage.hpp b/src/buildtool/execution_api/local/local_storage.hpp index 4560a859..4ffe2881 100644 --- a/src/buildtool/execution_api/local/local_storage.hpp +++ b/src/buildtool/execution_api/local/local_storage.hpp @@ -43,6 +43,11 @@ class LocalStorage { : cas_file_.StoreBlobFromBytes(bytes); } + [[nodiscard]] auto StoreTree(std::string const& bytes) const noexcept + -> std::optional { + return cas_tree_.StoreBlobFromBytes(bytes); + } + /// \brief Obtain blob path from digest with x-bit. /// NOLINTNEXTLINE(misc-no-recursion) [[nodiscard]] auto BlobPath(bazel_re::Digest const& digest, @@ -53,6 +58,11 @@ class LocalStorage { return path ? path : TrySyncBlob(digest, is_executable); } + [[nodiscard]] auto TreePath(bazel_re::Digest const& digest) const noexcept + -> std::optional { + return cas_tree_.BlobPath(digest); + } + [[nodiscard]] auto StoreActionResult( bazel_re::Digest const& action_id, bazel_re::ActionResult const& result) const noexcept -> bool { @@ -70,13 +80,14 @@ class LocalStorage { -> std::optional, std::vector>>; - [[nodiscard]] auto DumpToStream( - Artifact::ObjectInfo const& info, - gsl::not_null const& stream) const noexcept -> bool; + [[nodiscard]] auto DumpToStream(Artifact::ObjectInfo const& info, + gsl::not_null const& stream, + bool raw_tree) const noexcept -> bool; private: LocalCAS cas_file_{}; LocalCAS cas_exec_{}; + LocalCAS cas_tree_{}; LocalAC ac_{&cas_file_}; std::shared_ptr tree_map_; -- cgit v1.2.3