summaryrefslogtreecommitdiff
path: root/src/buildtool/execution_api/local/local_api.hpp
diff options
context:
space:
mode:
authorMaksim Denisov <denisov.maksim@huawei.com>2024-09-11 17:00:55 +0200
committerMaksim Denisov <denisov.maksim@huawei.com>2024-09-13 14:41:00 +0200
commit371d4357eeaa498541473b18bd092975d05fb930 (patch)
treead45de176d1f176ae3031942b74ca23921b46a3d /src/buildtool/execution_api/local/local_api.hpp
parent514b0f1b7a731e90a1be46f14fa12130e31246dc (diff)
downloadjustbuild-371d4357eeaa498541473b18bd092975d05fb930.tar.gz
Check compatibility in LocalAPI based on the hash type
Diffstat (limited to 'src/buildtool/execution_api/local/local_api.hpp')
-rw-r--r--src/buildtool/execution_api/local/local_api.hpp38
1 files changed, 19 insertions, 19 deletions
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};