diff options
Diffstat (limited to 'src')
8 files changed, 27 insertions, 1 deletions
diff --git a/src/buildtool/execution_api/common/execution_api.hpp b/src/buildtool/execution_api/common/execution_api.hpp index 1a2a0771..c8415764 100644 --- a/src/buildtool/execution_api/common/execution_api.hpp +++ b/src/buildtool/execution_api/common/execution_api.hpp @@ -26,6 +26,7 @@ #include "src/buildtool/common/artifact.hpp" // Artifact::ObjectInfo #include "src/buildtool/common/artifact_digest.hpp" +#include "src/buildtool/crypto/hash_function.hpp" #include "src/buildtool/execution_api/common/artifact_blob.hpp" #include "src/buildtool/execution_api/common/execution_action.hpp" #include "src/buildtool/execution_engine/dag/dag.hpp" @@ -152,6 +153,9 @@ class IExecutionApi { [[nodiscard]] virtual auto BlobSpliceSupport() const noexcept -> bool { return false; } + + [[nodiscard]] virtual auto GetHashType() const noexcept + -> HashFunction::Type = 0; }; #endif // INCLUDED_SRC_BUILDTOOL_EXECUTION_API_COMMON_EXECUTION_APIHPP diff --git a/src/buildtool/execution_api/local/local_api.cpp b/src/buildtool/execution_api/local/local_api.cpp index ae59d3bc..bd8a51b6 100644 --- a/src/buildtool/execution_api/local/local_api.cpp +++ b/src/buildtool/execution_api/local/local_api.cpp @@ -28,7 +28,6 @@ #include "src/buildtool/common/artifact_digest_factory.hpp" #include "src/buildtool/common/protocol_traits.hpp" -#include "src/buildtool/crypto/hash_function.hpp" #include "src/buildtool/execution_api/bazel_msg/directory_tree.hpp" #include "src/buildtool/execution_api/common/common_api.hpp" #include "src/buildtool/execution_api/common/stream_dumper.hpp" @@ -342,3 +341,7 @@ auto LocalApi::SpliceBlob(ArtifactDigest const& blob_digest, } return *std::move(splice_result); } + +auto LocalApi::GetHashType() const noexcept -> HashFunction::Type { + return local_context_.storage_config->hash_function.GetType(); +} diff --git a/src/buildtool/execution_api/local/local_api.hpp b/src/buildtool/execution_api/local/local_api.hpp index 853b0622..c1e91c12 100644 --- a/src/buildtool/execution_api/local/local_api.hpp +++ b/src/buildtool/execution_api/local/local_api.hpp @@ -26,6 +26,7 @@ #include "src/buildtool/common/artifact.hpp" #include "src/buildtool/common/artifact_digest.hpp" #include "src/buildtool/common/repository_config.hpp" +#include "src/buildtool/crypto/hash_function.hpp" #include "src/buildtool/execution_api/common/artifact_blob.hpp" #include "src/buildtool/execution_api/common/execution_action.hpp" #include "src/buildtool/execution_api/common/execution_api.hpp" @@ -102,6 +103,8 @@ class LocalApi final : public IExecutionApi { return true; } + [[nodiscard]] auto GetHashType() const noexcept -> HashFunction::Type final; + private: LocalContext const& local_context_; std::optional<GitApi> const git_api_; diff --git a/src/buildtool/execution_api/remote/bazel/bazel_api.cpp b/src/buildtool/execution_api/remote/bazel/bazel_api.cpp index 2dfe07de..5511fcb1 100644 --- a/src/buildtool/execution_api/remote/bazel/bazel_api.cpp +++ b/src/buildtool/execution_api/remote/bazel/bazel_api.cpp @@ -603,3 +603,8 @@ auto BazelApi::CreateAction( [[nodiscard]] auto BazelApi::BlobSpliceSupport() const noexcept -> bool { return network_->BlobSpliceSupport(); } + +[[nodiscard]] auto BazelApi::GetHashType() const noexcept + -> HashFunction::Type { + return network_->GetHashFunction().GetType(); +} diff --git a/src/buildtool/execution_api/remote/bazel/bazel_api.hpp b/src/buildtool/execution_api/remote/bazel/bazel_api.hpp index 53445385..21e24c52 100644 --- a/src/buildtool/execution_api/remote/bazel/bazel_api.hpp +++ b/src/buildtool/execution_api/remote/bazel/bazel_api.hpp @@ -122,6 +122,8 @@ class BazelApi final : public IExecutionApi { [[nodiscard]] auto BlobSpliceSupport() const noexcept -> bool final; + [[nodiscard]] auto GetHashType() const noexcept -> HashFunction::Type final; + private: std::shared_ptr<BazelNetwork> network_; diff --git a/src/buildtool/execution_api/serve/TARGETS b/src/buildtool/execution_api/serve/TARGETS index cdf40c43..3e7777fd 100644 --- a/src/buildtool/execution_api/serve/TARGETS +++ b/src/buildtool/execution_api/serve/TARGETS @@ -27,6 +27,7 @@ , "deps": [ ["@", "gsl", "", "gsl"] , ["src/buildtool/common", "common"] + , ["src/buildtool/crypto", "hash_function"] , ["src/buildtool/execution_api/common", "artifact_blob"] , ["src/buildtool/execution_api/common", "common"] , ["src/buildtool/execution_api/local", "context"] diff --git a/src/buildtool/execution_api/serve/mr_local_api.cpp b/src/buildtool/execution_api/serve/mr_local_api.cpp index d9364a4e..3394c270 100644 --- a/src/buildtool/execution_api/serve/mr_local_api.cpp +++ b/src/buildtool/execution_api/serve/mr_local_api.cpp @@ -147,3 +147,8 @@ auto MRLocalApi::GetMissingDigests( } return compat_local_api_->GetMissingDigests(digests); } + +auto MRLocalApi::GetHashType() const noexcept -> HashFunction::Type { + return compat_local_api_ == nullptr ? native_local_api_->GetHashType() + : compat_local_api_->GetHashType(); +} diff --git a/src/buildtool/execution_api/serve/mr_local_api.hpp b/src/buildtool/execution_api/serve/mr_local_api.hpp index 815ad662..11a3cbb2 100644 --- a/src/buildtool/execution_api/serve/mr_local_api.hpp +++ b/src/buildtool/execution_api/serve/mr_local_api.hpp @@ -25,6 +25,7 @@ #include "gsl/gsl" #include "src/buildtool/common/artifact.hpp" #include "src/buildtool/common/artifact_digest.hpp" +#include "src/buildtool/crypto/hash_function.hpp" #include "src/buildtool/execution_api/common/artifact_blob.hpp" #include "src/buildtool/execution_api/common/execution_action.hpp" #include "src/buildtool/execution_api/common/execution_api.hpp" @@ -130,6 +131,8 @@ class MRLocalApi final : public IExecutionApi { std::unordered_set<ArtifactDigest> const& digests) const noexcept -> std::unordered_set<ArtifactDigest> final; + [[nodiscard]] auto GetHashType() const noexcept -> HashFunction::Type final; + private: // retain local context references to have direct access to storages gsl::not_null<LocalContext const*> native_context_; |