diff options
Diffstat (limited to 'src/buildtool/execution_api')
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) { |