summaryrefslogtreecommitdiff
path: root/src/buildtool/execution_api
diff options
context:
space:
mode:
authorMaksim Denisov <denisov.maksim@huawei.com>2024-09-10 18:51:20 +0200
committerMaksim Denisov <denisov.maksim@huawei.com>2024-09-13 14:41:00 +0200
commitf60d39620b29aeaf1addeb244bdd6e15ddf4894c (patch)
tree2617d65884c975b3fc63dd48e58242ec36138246 /src/buildtool/execution_api
parented8f24fb246142ffaa88707ae86b53c34df82986 (diff)
downloadjustbuild-f60d39620b29aeaf1addeb244bdd6e15ddf4894c.tar.gz
Rename Compatibility class to ProtocolTraits
...and move it to the common stage.
Diffstat (limited to 'src/buildtool/execution_api')
-rw-r--r--src/buildtool/execution_api/common/TARGETS1
-rw-r--r--src/buildtool/execution_api/common/stream_dumper.hpp4
-rw-r--r--src/buildtool/execution_api/common/tree_reader.hpp5
-rw-r--r--src/buildtool/execution_api/execution_service/TARGETS7
-rw-r--r--src/buildtool/execution_api/execution_service/capabilities_server.cpp4
-rw-r--r--src/buildtool/execution_api/execution_service/cas_server.cpp4
-rw-r--r--src/buildtool/execution_api/execution_service/execution_server.cpp4
-rw-r--r--src/buildtool/execution_api/execution_service/server_implementation.cpp12
-rw-r--r--src/buildtool/execution_api/local/TARGETS2
-rw-r--r--src/buildtool/execution_api/local/local_action.cpp2
-rw-r--r--src/buildtool/execution_api/local/local_api.hpp7
-rw-r--r--src/buildtool/execution_api/remote/TARGETS5
-rw-r--r--src/buildtool/execution_api/remote/bazel/bazel_api.cpp4
-rw-r--r--src/buildtool/execution_api/remote/bazel/bazel_cas_client.cpp6
-rw-r--r--src/buildtool/execution_api/remote/bazel/bazel_network_reader.cpp2
-rw-r--r--src/buildtool/execution_api/remote/bazel/bazel_response.cpp2
-rw-r--r--src/buildtool/execution_api/utils/TARGETS2
-rw-r--r--src/buildtool/execution_api/utils/subobject.cpp4
18 files changed, 41 insertions, 36 deletions
diff --git a/src/buildtool/execution_api/common/TARGETS b/src/buildtool/execution_api/common/TARGETS
index 4c9cfa81..b417e26a 100644
--- a/src/buildtool/execution_api/common/TARGETS
+++ b/src/buildtool/execution_api/common/TARGETS
@@ -15,6 +15,7 @@
[ "artifact_blob_container"
, ["@", "gsl", "", "gsl"]
, ["src/buildtool/common", "common"]
+ , ["src/buildtool/common", "protocol_traits"]
, ["src/buildtool/crypto", "hash_function"]
, ["src/buildtool/execution_api/bazel_msg", "bazel_msg_factory"]
, ["src/buildtool/file_system", "file_system_manager"]
diff --git a/src/buildtool/execution_api/common/stream_dumper.hpp b/src/buildtool/execution_api/common/stream_dumper.hpp
index 81d3bf35..ea0a323d 100644
--- a/src/buildtool/execution_api/common/stream_dumper.hpp
+++ b/src/buildtool/execution_api/common/stream_dumper.hpp
@@ -22,7 +22,7 @@
#include "gsl/gsl"
#include "src/buildtool/common/artifact.hpp"
-#include "src/buildtool/compatibility/compatibility.hpp"
+#include "src/buildtool/common/protocol_traits.hpp"
#include "src/buildtool/execution_api/common/tree_reader_utils.hpp"
#include "src/buildtool/file_system/object_type.hpp"
@@ -65,7 +65,7 @@ class StreamDumper final {
[[nodiscard]] auto DumpTree(
Artifact::ObjectInfo const& info,
gsl::not_null<FILE*> const& stream) const noexcept -> bool {
- if (Compatibility::IsCompatible()) {
+ if (ProtocolTraits::Instance().IsCompatible()) {
auto directory = impl_.ReadDirectory(info.digest);
auto data = directory
? TreeReaderUtils::DirectoryToString(*directory)
diff --git a/src/buildtool/execution_api/common/tree_reader.hpp b/src/buildtool/execution_api/common/tree_reader.hpp
index d9048e1f..18e94fe8 100644
--- a/src/buildtool/execution_api/common/tree_reader.hpp
+++ b/src/buildtool/execution_api/common/tree_reader.hpp
@@ -23,6 +23,7 @@
#include "src/buildtool/common/artifact.hpp"
#include "src/buildtool/common/bazel_types.hpp"
+#include "src/buildtool/common/protocol_traits.hpp"
#include "src/buildtool/execution_api/common/tree_reader_utils.hpp"
#include "src/buildtool/file_system/git_repo.hpp"
#include "src/buildtool/file_system/object_type.hpp"
@@ -58,7 +59,7 @@ class TreeReader final {
return true;
};
- if (Compatibility::IsCompatible()) {
+ if (ProtocolTraits::Instance().IsCompatible()) {
auto tree = impl_.ReadDirectory(digest);
if (tree and
not TreeReaderUtils::ReadObjectInfos(*tree, store_info)) {
@@ -131,7 +132,7 @@ class TreeReader final {
: store(parent / path, info);
};
- if (Compatibility::IsCompatible()) {
+ if (ProtocolTraits::Instance().IsCompatible()) {
if (auto tree = impl_.ReadDirectory(digest)) {
if (include_trees and IsDirectoryEmpty(*tree)) {
if (not store(parent, {digest, ObjectType::Tree})) {
diff --git a/src/buildtool/execution_api/execution_service/TARGETS b/src/buildtool/execution_api/execution_service/TARGETS
index cfb845b3..97d70528 100644
--- a/src/buildtool/execution_api/execution_service/TARGETS
+++ b/src/buildtool/execution_api/execution_service/TARGETS
@@ -25,6 +25,7 @@
, ["src/buildtool/execution_api/local", "local"]
, ["src/buildtool/common", "common"]
, ["src/buildtool/common", "artifact_digest_factory"]
+ , ["src/buildtool/common", "protocol_traits"]
]
, "private-ldflags":
["-pthread", "-Wl,--whole-archive,-lpthread,--no-whole-archive"]
@@ -66,7 +67,7 @@
, ["src/buildtool/storage", "config"]
]
, "private-deps":
- [ ["src/buildtool/compatibility", "compatibility"]
+ [ ["src/buildtool/common", "protocol_traits"]
, ["src/buildtool/common", "common"]
, ["src/buildtool/common", "artifact_digest_factory"]
, ["src/buildtool/logging", "log_level"]
@@ -97,7 +98,7 @@
, ["@", "json", "", "json"]
, ["@", "grpc", "", "grpc++"]
, ["@", "fmt", "", "fmt"]
- , ["src/buildtool/compatibility", "compatibility"]
+ , ["src/buildtool/common", "protocol_traits"]
, ["src/buildtool/common/remote", "port"]
]
}
@@ -138,7 +139,7 @@
, "private-deps":
[ ["src/buildtool/logging", "log_level"]
, ["src/buildtool/logging", "logging"]
- , ["src/buildtool/compatibility", "compatibility"]
+ , ["src/buildtool/common", "protocol_traits"]
]
}
, "operation_cache":
diff --git a/src/buildtool/execution_api/execution_service/capabilities_server.cpp b/src/buildtool/execution_api/execution_service/capabilities_server.cpp
index d8ba4279..c4ec6b06 100644
--- a/src/buildtool/execution_api/execution_service/capabilities_server.cpp
+++ b/src/buildtool/execution_api/execution_service/capabilities_server.cpp
@@ -16,7 +16,7 @@
#include <cstddef>
-#include "src/buildtool/compatibility/compatibility.hpp"
+#include "src/buildtool/common/protocol_traits.hpp"
#include "src/buildtool/logging/log_level.hpp"
#include "src/buildtool/logging/logger.hpp"
@@ -25,7 +25,7 @@ auto CapabilitiesServiceImpl::GetCapabilities(
const ::bazel_re::GetCapabilitiesRequest*
/*request*/,
::bazel_re::ServerCapabilities* response) -> ::grpc::Status {
- if (not Compatibility::IsCompatible()) {
+ if (not ProtocolTraits::Instance().IsCompatible()) {
auto const* str = "GetCapabilities not implemented";
Logger::Log(LogLevel::Error, str);
return ::grpc::Status{grpc::StatusCode::UNIMPLEMENTED, str};
diff --git a/src/buildtool/execution_api/execution_service/cas_server.cpp b/src/buildtool/execution_api/execution_service/cas_server.cpp
index 337eed84..5394b985 100644
--- a/src/buildtool/execution_api/execution_service/cas_server.cpp
+++ b/src/buildtool/execution_api/execution_service/cas_server.cpp
@@ -25,7 +25,7 @@
#include "fmt/core.h"
#include "src/buildtool/common/artifact_digest.hpp"
#include "src/buildtool/common/artifact_digest_factory.hpp"
-#include "src/buildtool/compatibility/compatibility.hpp"
+#include "src/buildtool/common/protocol_traits.hpp"
#include "src/buildtool/execution_api/execution_service/cas_utils.hpp"
#include "src/buildtool/logging/log_level.hpp"
#include "src/buildtool/storage/garbage_collector.hpp"
@@ -54,7 +54,7 @@ namespace {
bool valid = ref.hash() == computed.hash();
if (valid) {
bool const check_sizes =
- Compatibility::IsCompatible() or ref.size() != 0;
+ ProtocolTraits::Instance().IsCompatible() or ref.size() != 0;
if (check_sizes) {
valid = ref.size() == computed.size();
}
diff --git a/src/buildtool/execution_api/execution_service/execution_server.cpp b/src/buildtool/execution_api/execution_service/execution_server.cpp
index a213c552..6e3c77ab 100644
--- a/src/buildtool/execution_api/execution_service/execution_server.cpp
+++ b/src/buildtool/execution_api/execution_service/execution_server.cpp
@@ -276,7 +276,7 @@ namespace {
::bazel_re::OutputDirectory out_dir{};
*(out_dir.mutable_path()) = std::move(path);
- if (Compatibility::IsCompatible()) {
+ if (ProtocolTraits::Instance().IsCompatible()) {
// In compatible mode: Create a tree digest from directory
// digest on the fly and set tree digest.
LocalCasReader reader(&storage.CAS());
@@ -410,7 +410,7 @@ namespace {
return unexpected{input_root_digest.error()};
}
auto const input_root_path =
- Compatibility::IsCompatible()
+ ProtocolTraits::Instance().IsCompatible()
? storage.CAS().BlobPath(*input_root_digest,
/*is_executable=*/false)
: storage.CAS().TreePath(*input_root_digest);
diff --git a/src/buildtool/execution_api/execution_service/server_implementation.cpp b/src/buildtool/execution_api/execution_service/server_implementation.cpp
index 81eabe01..e6ad463c 100644
--- a/src/buildtool/execution_api/execution_service/server_implementation.cpp
+++ b/src/buildtool/execution_api/execution_service/server_implementation.cpp
@@ -26,8 +26,8 @@
#include "fmt/core.h"
#include "grpcpp/grpcpp.h"
#include "nlohmann/json.hpp"
+#include "src/buildtool/common/protocol_traits.hpp"
#include "src/buildtool/common/remote/port.hpp"
-#include "src/buildtool/compatibility/compatibility.hpp"
#include "src/buildtool/execution_api/execution_service/ac_server.hpp"
#include "src/buildtool/execution_api/execution_service/bytestream_server.hpp"
#include "src/buildtool/execution_api/execution_service/capabilities_server.hpp"
@@ -141,10 +141,12 @@ auto ServerImpl::Run(gsl::not_null<LocalContext const*> const& local_context,
}
auto const& info_str = nlohmann::to_string(info);
- Logger::Log(LogLevel::Info,
- fmt::format("{}execution service started: {}",
- Compatibility::IsCompatible() ? "compatible " : "",
- info_str));
+ Logger::Log(
+ LogLevel::Info,
+ fmt::format(
+ "{}execution service started: {}",
+ ProtocolTraits::Instance().IsCompatible() ? "compatible " : "",
+ info_str));
if (not info_file_.empty()) {
if (not TryWrite(info_file_, info_str)) {
diff --git a/src/buildtool/execution_api/local/TARGETS b/src/buildtool/execution_api/local/TARGETS
index 32d04697..66a57f21 100644
--- a/src/buildtool/execution_api/local/TARGETS
+++ b/src/buildtool/execution_api/local/TARGETS
@@ -30,6 +30,7 @@
, ["src/buildtool/common", "bazel_types"]
, ["src/buildtool/common", "artifact_digest_factory"]
, ["src/buildtool/common", "config"]
+ , ["src/buildtool/common", "protocol_traits"]
, ["src/buildtool/storage", "storage"]
, ["src/buildtool/execution_api/common", "common"]
, ["src/buildtool/execution_api/common", "artifact_blob_container"]
@@ -37,7 +38,6 @@
, ["src/buildtool/execution_api/bazel_msg", "bazel_msg_factory"]
, ["src/buildtool/execution_api/git", "git"]
, ["src/buildtool/file_system", "file_system_manager"]
- , ["src/buildtool/compatibility", "compatibility"]
, ["src/buildtool/execution_api/bazel_msg", "bazel_msg"]
, ["src/buildtool/logging", "log_level"]
, ["src/buildtool/logging", "logging"]
diff --git a/src/buildtool/execution_api/local/local_action.cpp b/src/buildtool/execution_api/local/local_action.cpp
index 97507d35..701acea4 100644
--- a/src/buildtool/execution_api/local/local_action.cpp
+++ b/src/buildtool/execution_api/local/local_action.cpp
@@ -70,7 +70,7 @@ class BuildCleanupAnchor {
[&cas](std::string const& content) -> std::optional<ArtifactDigest> {
return cas.StoreBlob(content);
};
- return Compatibility::IsCompatible()
+ return ProtocolTraits::Instance().IsCompatible()
? BazelMsgFactory::CreateDirectoryDigestFromLocalTree(
dir_path, store_blob, store_tree, store_symlink)
: BazelMsgFactory::CreateGitTreeDigestFromLocalTree(
diff --git a/src/buildtool/execution_api/local/local_api.hpp b/src/buildtool/execution_api/local/local_api.hpp
index b3e7808d..75f2d578 100644
--- a/src/buildtool/execution_api/local/local_api.hpp
+++ b/src/buildtool/execution_api/local/local_api.hpp
@@ -32,8 +32,8 @@
#include "gsl/gsl"
#include "src/buildtool/common/artifact_digest.hpp"
#include "src/buildtool/common/artifact_digest_factory.hpp"
+#include "src/buildtool/common/protocol_traits.hpp"
#include "src/buildtool/common/repository_config.hpp"
-#include "src/buildtool/compatibility/compatibility.hpp"
#include "src/buildtool/execution_api/bazel_msg/bazel_blob_container.hpp"
#include "src/buildtool/execution_api/common/artifact_blob_container.hpp"
#include "src/buildtool/execution_api/common/blob_tree.hpp"
@@ -284,7 +284,7 @@ class LocalApi final : public IExecutionApi {
return std::nullopt;
}
- if (Compatibility::IsCompatible()) {
+ if (ProtocolTraits::Instance().IsCompatible()) {
return CommonUploadTreeCompatible(
*this,
*build_root,
@@ -383,7 +383,8 @@ class LocalApi final : public IExecutionApi {
[[nodiscard]] static auto CreateFallbackApi(
RepositoryConfig const* repo_config) noexcept -> std::optional<GitApi> {
- if (repo_config == nullptr or Compatibility::IsCompatible()) {
+ if (repo_config == nullptr or
+ ProtocolTraits::Instance().IsCompatible()) {
return std::nullopt;
}
return GitApi{repo_config};
diff --git a/src/buildtool/execution_api/remote/TARGETS b/src/buildtool/execution_api/remote/TARGETS
index 41079f33..ae67146d 100644
--- a/src/buildtool/execution_api/remote/TARGETS
+++ b/src/buildtool/execution_api/remote/TARGETS
@@ -50,13 +50,12 @@
, "private-deps":
[ ["src/buildtool/common", "artifact_digest_factory"]
, ["src/buildtool/common", "bazel_digest_factory"]
+ , ["src/buildtool/common", "protocol_traits"]
, ["src/buildtool/file_system", "file_system_manager"]
, ["src/buildtool/file_system", "object_type"]
- , ["src/buildtool/compatibility", "compatibility"]
, ["src/buildtool/execution_api/bazel_msg", "bazel_msg_factory"]
, ["src/buildtool/execution_api/common", "common_api"]
, ["src/buildtool/execution_api/utils", "outputscheck"]
- , ["src/buildtool/compatibility", "compatibility"]
, ["@", "grpc", "", "grpc++"]
, ["src/buildtool/common/remote", "retry"]
, ["src/buildtool/execution_api/common", "message_limits"]
@@ -84,7 +83,6 @@
[ "bazel_network"
, ["@", "fmt", "", "fmt"]
, ["src/buildtool/auth", "auth"]
- , ["src/buildtool/compatibility", "compatibility"]
, ["src/buildtool/multithreading", "task_system"]
, ["src/buildtool/execution_api/common", "common"]
, ["src/buildtool/execution_api/common", "artifact_blob_container"]
@@ -94,6 +92,7 @@
, ["src/buildtool/storage", "fs_utils"]
, ["src/buildtool/crypto", "hash_function"]
, ["src/buildtool/common", "artifact_digest_factory"]
+ , ["src/buildtool/common", "protocol_traits"]
]
}
, "config":
diff --git a/src/buildtool/execution_api/remote/bazel/bazel_api.cpp b/src/buildtool/execution_api/remote/bazel/bazel_api.cpp
index e36bf942..d0e96292 100644
--- a/src/buildtool/execution_api/remote/bazel/bazel_api.cpp
+++ b/src/buildtool/execution_api/remote/bazel/bazel_api.cpp
@@ -29,7 +29,7 @@
#include "src/buildtool/common/artifact_digest.hpp"
#include "src/buildtool/common/artifact_digest_factory.hpp"
#include "src/buildtool/common/bazel_types.hpp"
-#include "src/buildtool/compatibility/compatibility.hpp"
+#include "src/buildtool/common/protocol_traits.hpp"
#include "src/buildtool/execution_api/bazel_msg/bazel_blob_container.hpp"
#include "src/buildtool/execution_api/bazel_msg/bazel_common.hpp"
#include "src/buildtool/execution_api/bazel_msg/bazel_msg_factory.hpp"
@@ -527,7 +527,7 @@ auto BazelApi::CreateAction(
return std::nullopt;
}
- if (Compatibility::IsCompatible()) {
+ if (ProtocolTraits::Instance().IsCompatible()) {
return CommonUploadTreeCompatible(
*this,
*build_root,
diff --git a/src/buildtool/execution_api/remote/bazel/bazel_cas_client.cpp b/src/buildtool/execution_api/remote/bazel/bazel_cas_client.cpp
index 130012e7..3d08825e 100644
--- a/src/buildtool/execution_api/remote/bazel/bazel_cas_client.cpp
+++ b/src/buildtool/execution_api/remote/bazel/bazel_cas_client.cpp
@@ -24,10 +24,10 @@
#include "src/buildtool/common/artifact_digest.hpp"
#include "src/buildtool/common/bazel_digest_factory.hpp"
#include "src/buildtool/common/bazel_types.hpp"
+#include "src/buildtool/common/protocol_traits.hpp"
#include "src/buildtool/common/remote/client_common.hpp"
#include "src/buildtool/common/remote/retry.hpp"
#include "src/buildtool/common/remote/retry_config.hpp"
-#include "src/buildtool/compatibility/compatibility.hpp"
#include "src/buildtool/crypto/hash_function.hpp"
#include "src/buildtool/execution_api/common/execution_common.hpp"
#include "src/buildtool/execution_api/common/message_limits.hpp"
@@ -54,7 +54,7 @@ namespace {
stub) noexcept -> bool {
// Create empty blob.
std::string empty_str{};
- HashFunction const hash_function{Compatibility::IsCompatible()
+ HashFunction const hash_function{ProtocolTraits::Instance().IsCompatible()
? HashFunction::Type::PlainSHA256
: HashFunction::Type::GitSHA1};
auto const digest = BazelDigestFactory::HashDataAs<ObjectType::File>(
@@ -120,7 +120,7 @@ namespace {
stub) noexcept -> bool {
// Create empty blob.
std::string empty_str{};
- HashFunction const hash_function{Compatibility::IsCompatible()
+ HashFunction const hash_function{ProtocolTraits::Instance().IsCompatible()
? HashFunction::Type::PlainSHA256
: HashFunction::Type::GitSHA1};
auto const digest = BazelDigestFactory::HashDataAs<ObjectType::File>(
diff --git a/src/buildtool/execution_api/remote/bazel/bazel_network_reader.cpp b/src/buildtool/execution_api/remote/bazel/bazel_network_reader.cpp
index 02f189d0..4b411d91 100644
--- a/src/buildtool/execution_api/remote/bazel/bazel_network_reader.cpp
+++ b/src/buildtool/execution_api/remote/bazel/bazel_network_reader.cpp
@@ -40,7 +40,7 @@ BazelNetworkReader::BazelNetworkReader(
: instance_name_{other.instance_name_},
cas_{other.cas_},
hash_function_{other.hash_function_} {
- if (Compatibility::IsCompatible() and request_remote_tree) {
+ if (ProtocolTraits::Instance().IsCompatible() and request_remote_tree) {
// Query full tree from remote CAS. Note that this is currently not
// supported by Buildbarn revision c3c06bbe2a.
auto full_tree =
diff --git a/src/buildtool/execution_api/remote/bazel/bazel_response.cpp b/src/buildtool/execution_api/remote/bazel/bazel_response.cpp
index ec76061c..cb481e3e 100644
--- a/src/buildtool/execution_api/remote/bazel/bazel_response.cpp
+++ b/src/buildtool/execution_api/remote/bazel/bazel_response.cpp
@@ -135,7 +135,7 @@ void BazelResponse::Populate() noexcept {
}
}
- if (not Compatibility::IsCompatible()) {
+ if (not ProtocolTraits::Instance().IsCompatible()) {
// in native mode: just collect and store tree digests
for (auto const& tree : action_result.output_directories()) {
auto digest =
diff --git a/src/buildtool/execution_api/utils/TARGETS b/src/buildtool/execution_api/utils/TARGETS
index b202a9ea..cc30421d 100644
--- a/src/buildtool/execution_api/utils/TARGETS
+++ b/src/buildtool/execution_api/utils/TARGETS
@@ -8,7 +8,7 @@
, ["src/buildtool/execution_api/common", "common"]
]
, "private-deps":
- [ ["src/buildtool/compatibility", "compatibility"]
+ [ ["src/buildtool/common", "protocol_traits"]
, ["src/buildtool/execution_api/bazel_msg", "bazel_msg_factory"]
, ["src/buildtool/logging", "logging"]
, ["src/buildtool/crypto", "hash_function"]
diff --git a/src/buildtool/execution_api/utils/subobject.cpp b/src/buildtool/execution_api/utils/subobject.cpp
index 380fe65f..e2c6b256 100644
--- a/src/buildtool/execution_api/utils/subobject.cpp
+++ b/src/buildtool/execution_api/utils/subobject.cpp
@@ -15,7 +15,7 @@
#include "src/buildtool/execution_api/utils/subobject.hpp"
#ifndef BOOTSTRAP_BUILD_TOOL
-#include "src/buildtool/compatibility/compatibility.hpp"
+#include "src/buildtool/common/protocol_traits.hpp"
#include "src/buildtool/crypto/hash_function.hpp"
#include "src/buildtool/execution_api/bazel_msg/bazel_msg_factory.hpp"
#include "src/buildtool/execution_api/common/tree_reader_utils.hpp"
@@ -43,7 +43,7 @@ auto RetrieveSubPathId(Artifact::ObjectInfo object_info,
sofar.string());
return std::nullopt;
}
- if (Compatibility::IsCompatible()) {
+ if (ProtocolTraits::Instance().IsCompatible()) {
auto directory =
BazelMsgFactory::MessageFromString<bazel_re::Directory>(*data);
if (not directory) {