diff options
-rw-r--r-- | src/buildtool/execution_api/local/local_action.cpp | 6 | ||||
-rw-r--r-- | src/buildtool/execution_api/local/local_api.hpp | 38 |
2 files changed, 22 insertions, 22 deletions
diff --git a/src/buildtool/execution_api/local/local_action.cpp b/src/buildtool/execution_api/local/local_action.cpp index 701acea4..1f17ed08 100644 --- a/src/buildtool/execution_api/local/local_action.cpp +++ b/src/buildtool/execution_api/local/local_action.cpp @@ -70,10 +70,10 @@ class BuildCleanupAnchor { [&cas](std::string const& content) -> std::optional<ArtifactDigest> { return cas.StoreBlob(content); }; - return ProtocolTraits::Instance().IsCompatible() - ? BazelMsgFactory::CreateDirectoryDigestFromLocalTree( + return ProtocolTraits::IsNative(storage.GetHashFunction().GetType()) + ? BazelMsgFactory::CreateGitTreeDigestFromLocalTree( dir_path, store_blob, store_tree, store_symlink) - : BazelMsgFactory::CreateGitTreeDigestFromLocalTree( + : BazelMsgFactory::CreateDirectoryDigestFromLocalTree( dir_path, store_blob, store_tree, store_symlink); } diff --git a/src/buildtool/execution_api/local/local_api.hpp b/src/buildtool/execution_api/local/local_api.hpp index 75f2d578..512328f0 100644 --- a/src/buildtool/execution_api/local/local_api.hpp +++ b/src/buildtool/execution_api/local/local_api.hpp @@ -56,7 +56,7 @@ class LocalApi final : public IExecutionApi { explicit LocalApi(gsl::not_null<LocalContext const*> const& local_context, RepositoryConfig const* repo_config = nullptr) noexcept : local_context_{*local_context}, - git_api_{CreateFallbackApi(repo_config)} {} + git_api_{CreateFallbackApi(*local_context->storage, repo_config)} {} [[nodiscard]] auto CreateAction( ArtifactDigest const& root_digest, @@ -284,24 +284,23 @@ class LocalApi final : public IExecutionApi { return std::nullopt; } - if (ProtocolTraits::Instance().IsCompatible()) { - return CommonUploadTreeCompatible( - *this, - *build_root, - [&cas = local_context_.storage->CAS()]( - std::vector<ArtifactDigest> const& digests, - gsl::not_null<std::vector<std::string>*> const& targets) { - targets->reserve(digests.size()); - for (auto const& digest : digests) { - auto p = cas.BlobPath(digest, - /*is_executable=*/false); - auto content = FileSystemManager::ReadFile(*p); - targets->emplace_back(*content); - } - }); + auto const& cas = local_context_.storage->CAS(); + if (ProtocolTraits::IsNative(cas.GetHashFunction().GetType())) { + return CommonUploadTreeNative(*this, *build_root); } - - return CommonUploadTreeNative(*this, *build_root); + return CommonUploadTreeCompatible( + *this, + *build_root, + [&cas](std::vector<ArtifactDigest> const& digests, + gsl::not_null<std::vector<std::string>*> const& targets) { + targets->reserve(digests.size()); + for (auto const& digest : digests) { + auto p = cas.BlobPath(digest, + /*is_executable=*/false); + auto content = FileSystemManager::ReadFile(*p); + targets->emplace_back(*content); + } + }); } [[nodiscard]] auto IsAvailable(ArtifactDigest const& digest) const noexcept @@ -382,9 +381,10 @@ class LocalApi final : public IExecutionApi { std::optional<GitApi> const git_api_; [[nodiscard]] static auto CreateFallbackApi( + Storage const& storage, RepositoryConfig const* repo_config) noexcept -> std::optional<GitApi> { if (repo_config == nullptr or - ProtocolTraits::Instance().IsCompatible()) { + not ProtocolTraits::IsNative(storage.GetHashFunction().GetType())) { return std::nullopt; } return GitApi{repo_config}; |