summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/buildtool/execution_api/bazel_msg/TARGETS4
-rw-r--r--src/buildtool/execution_api/bazel_msg/bazel_msg_factory.cpp56
-rw-r--r--src/buildtool/execution_api/bazel_msg/bazel_msg_factory.hpp5
-rw-r--r--src/buildtool/execution_api/local/TARGETS2
-rw-r--r--src/buildtool/execution_api/local/local_action.cpp14
-rw-r--r--src/buildtool/execution_api/local/local_action.hpp7
-rw-r--r--src/buildtool/execution_api/remote/TARGETS4
-rw-r--r--src/buildtool/execution_api/remote/bazel/bazel_action.cpp12
-rw-r--r--src/buildtool/execution_api/remote/bazel/bazel_action.hpp7
-rw-r--r--src/buildtool/execution_api/remote/bazel/bazel_api.cpp17
10 files changed, 65 insertions, 63 deletions
diff --git a/src/buildtool/execution_api/bazel_msg/TARGETS b/src/buildtool/execution_api/bazel_msg/TARGETS
index c3a59b87..d2a3147a 100644
--- a/src/buildtool/execution_api/bazel_msg/TARGETS
+++ b/src/buildtool/execution_api/bazel_msg/TARGETS
@@ -33,11 +33,9 @@
, ["src/buildtool/crypto", "hash_function"]
]
, "private-deps":
- [ ["src/buildtool/compatibility", "compatibility"]
- , ["src/utils/cpp", "hex_string"]
+ [ ["src/utils/cpp", "hex_string"]
, ["src/buildtool/file_system", "file_system_manager"]
, ["src/buildtool/file_system", "git_repo"]
- , ["src/buildtool/common", "bazel_digest_factory"]
, ["src/buildtool/common", "artifact_digest_factory"]
]
, "stage": ["src", "buildtool", "execution_api", "bazel_msg"]
diff --git a/src/buildtool/execution_api/bazel_msg/bazel_msg_factory.cpp b/src/buildtool/execution_api/bazel_msg/bazel_msg_factory.cpp
index a0d9e8a8..a48e7541 100644
--- a/src/buildtool/execution_api/bazel_msg/bazel_msg_factory.cpp
+++ b/src/buildtool/execution_api/bazel_msg/bazel_msg_factory.cpp
@@ -26,9 +26,6 @@
#include <vector>
#include "src/buildtool/common/artifact_digest_factory.hpp"
-#include "src/buildtool/common/bazel_digest_factory.hpp"
-#include "src/buildtool/common/bazel_types.hpp"
-#include "src/buildtool/compatibility/native_support.hpp"
#include "src/buildtool/file_system/file_system_manager.hpp"
#include "src/buildtool/file_system/git_repo.hpp"
#include "src/utils/cpp/hex_string.hpp"
@@ -91,7 +88,7 @@ template <class T>
bazel_re::FileNode node;
node.set_name(file_name);
node.set_is_executable(IsExecutableObject(type));
- (*node.mutable_digest()) = static_cast<bazel_re::Digest>(digest);
+ (*node.mutable_digest()) = ArtifactDigestFactory::ToBazel(digest);
return node;
}
@@ -101,7 +98,7 @@ template <class T>
-> bazel_re::DirectoryNode {
bazel_re::DirectoryNode node;
node.set_name(dir_name);
- (*node.mutable_digest()) = static_cast<bazel_re::Digest>(digest);
+ (*node.mutable_digest()) = ArtifactDigestFactory::ToBazel(digest);
return node;
}
@@ -162,7 +159,7 @@ struct DirectoryNodeBundle final {
/// \brief Create bundle for protobuf message Command from args strings.
[[nodiscard]] auto CreateCommandBundle(
BazelMsgFactory::ActionDigestRequest const& request)
- -> std::optional<BazelBlob> {
+ -> std::optional<ArtifactBlob> {
bazel_re::Command msg;
// DEPRECATED as of v2.2: platform properties are now specified
// directly in the action. See documentation note in the
@@ -187,18 +184,18 @@ struct DirectoryNodeBundle final {
if (not content) {
return std::nullopt;
}
- auto digest = BazelDigestFactory::HashDataAs<ObjectType::File>(
+ auto digest = ArtifactDigestFactory::HashDataAs<ObjectType::File>(
request.hash_function, *content);
- return BazelBlob{std::move(digest),
- std::move(*content),
- /*is_exec=*/false};
+ return ArtifactBlob{std::move(digest),
+ std::move(*content),
+ /*is_exec=*/false};
}
/// \brief Create bundle for protobuf message Action from Command.
[[nodiscard]] auto CreateActionBundle(
- bazel_re::Digest const& command,
+ ArtifactDigest const& command,
BazelMsgFactory::ActionDigestRequest const& request)
- -> std::optional<BazelBlob> {
+ -> std::optional<ArtifactBlob> {
using seconds = std::chrono::seconds;
using nanoseconds = std::chrono::nanoseconds;
auto sec = std::chrono::duration_cast<seconds>(request.timeout);
@@ -211,10 +208,10 @@ struct DirectoryNodeBundle final {
bazel_re::Action msg;
msg.set_do_not_cache(request.skip_action_cache);
msg.set_allocated_timeout(duration.release());
- msg.set_allocated_command_digest(
- gsl::owner<bazel_re::Digest*>{new bazel_re::Digest{command}});
- msg.set_allocated_input_root_digest(
- gsl::owner<bazel_re::Digest*>{new bazel_re::Digest{*request.exec_dir}});
+ *msg.mutable_command_digest() = ArtifactDigestFactory::ToBazel(command);
+ *msg.mutable_input_root_digest() =
+ ArtifactDigestFactory::ToBazel(*request.exec_dir);
+
// New in version 2.2: clients SHOULD set these platform properties
// as well as those in the
// [Command][build.bazel.remote.execution.v2.Command]. Servers
@@ -226,11 +223,11 @@ struct DirectoryNodeBundle final {
if (not content) {
return std::nullopt;
}
- auto digest = BazelDigestFactory::HashDataAs<ObjectType::File>(
+ auto digest = ArtifactDigestFactory::HashDataAs<ObjectType::File>(
request.hash_function, *content);
- return BazelBlob{std::move(digest),
- std::move(*content),
- /*is_exec=*/false};
+ return ArtifactBlob{std::move(digest),
+ std::move(*content),
+ /*is_exec=*/false};
}
/// \brief Convert `DirectoryTree` to `DirectoryNodeBundle`.
@@ -485,7 +482,7 @@ auto BazelMsgFactory::CreateGitTreeDigestFromLocalTree(
}
auto BazelMsgFactory::CreateActionDigestFromCommandLine(
- ActionDigestRequest const& request) -> std::optional<bazel_re::Digest> {
+ ActionDigestRequest const& request) -> std::optional<ArtifactDigest> {
auto cmd = CreateCommandBundle(request);
if (not cmd) {
return std::nullopt;
@@ -496,12 +493,15 @@ auto BazelMsgFactory::CreateActionDigestFromCommandLine(
return std::nullopt;
}
- if (not request.store_blob) {
- return action->digest;
+ if (request.store_blob) {
+ std::invoke(*request.store_blob,
+ BazelBlob{ArtifactDigestFactory::ToBazel(cmd->digest),
+ cmd->data,
+ cmd->is_exec});
+ std::invoke(*request.store_blob,
+ BazelBlob{ArtifactDigestFactory::ToBazel(action->digest),
+ action->data,
+ action->is_exec});
}
-
- auto digest = action->digest;
- std::invoke(*request.store_blob, std::move(*cmd));
- std::invoke(*request.store_blob, std::move(*action));
- return digest;
+ return action->digest;
}
diff --git a/src/buildtool/execution_api/bazel_msg/bazel_msg_factory.hpp b/src/buildtool/execution_api/bazel_msg/bazel_msg_factory.hpp
index 564c346b..51f1c5f0 100644
--- a/src/buildtool/execution_api/bazel_msg/bazel_msg_factory.hpp
+++ b/src/buildtool/execution_api/bazel_msg/bazel_msg_factory.hpp
@@ -29,7 +29,6 @@
#include "src/buildtool/common/bazel_types.hpp"
#include "src/buildtool/crypto/hash_function.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/directory_tree.hpp"
#include "src/buildtool/execution_api/common/artifact_blob_container.hpp"
#include "src/buildtool/execution_engine/dag/dag.hpp"
@@ -100,7 +99,7 @@ class BazelMsgFactory {
/// CommandBundle that can be captured via BlobStoreFunc.
/// \returns Digest representing the action.
[[nodiscard]] static auto CreateActionDigestFromCommandLine(
- ActionDigestRequest const& request) -> std::optional<bazel_re::Digest>;
+ ActionDigestRequest const& request) -> std::optional<ArtifactDigest>;
/// \brief Create message vector from std::map.
/// \param[in] input map
@@ -161,7 +160,7 @@ struct BazelMsgFactory::ActionDigestRequest final {
VectorPtr<bazel_re::Platform_Property> const properties;
/// \brief The Digest of the execution directory.
- gsl::not_null<bazel_re::Digest const*> const exec_dir;
+ gsl::not_null<ArtifactDigest const*> const exec_dir;
/// \brief Hash function to be used.
HashFunction const hash_function;
diff --git a/src/buildtool/execution_api/local/TARGETS b/src/buildtool/execution_api/local/TARGETS
index 61992aef..32d04697 100644
--- a/src/buildtool/execution_api/local/TARGETS
+++ b/src/buildtool/execution_api/local/TARGETS
@@ -27,6 +27,7 @@
, ["@", "grpc", "", "grpc++"]
, "context"
, ["src/buildtool/common", "common"]
+ , ["src/buildtool/common", "bazel_types"]
, ["src/buildtool/common", "artifact_digest_factory"]
, ["src/buildtool/common", "config"]
, ["src/buildtool/storage", "storage"]
@@ -49,7 +50,6 @@
, "private-deps":
[ ["src/buildtool/file_system", "object_type"]
, ["src/buildtool/system", "system_command"]
- , ["src/buildtool/common", "bazel_types"]
, ["src/buildtool/file_system", "file_system_manager"]
, ["src/buildtool/execution_api/utils", "outputscheck"]
, ["src/buildtool/crypto", "hash_function"]
diff --git a/src/buildtool/execution_api/local/local_action.cpp b/src/buildtool/execution_api/local/local_action.cpp
index 4a2dcfbc..2c79b32e 100644
--- a/src/buildtool/execution_api/local/local_action.cpp
+++ b/src/buildtool/execution_api/local/local_action.cpp
@@ -21,8 +21,6 @@
#include <system_error>
#include <utility>
-#include "src/buildtool/common/artifact_digest.hpp"
-#include "src/buildtool/common/bazel_types.hpp"
#include "src/buildtool/compatibility/native_support.hpp"
#include "src/buildtool/execution_api/common/tree_reader.hpp"
#include "src/buildtool/execution_api/local/local_cas_reader.hpp"
@@ -85,7 +83,7 @@ auto LocalAction::Execute(Logger const* logger) noexcept
-> IExecutionResponse::Ptr {
auto do_cache = CacheEnabled(cache_flag_);
- auto action = CreateActionDigest(root_digest_, not do_cache);
+ auto const action = CreateActionDigest(root_digest_, not do_cache);
if (not action) {
if (logger != nullptr) {
logger->Emit(LogLevel::Error,
@@ -101,13 +99,12 @@ auto LocalAction::Execute(Logger const* logger) noexcept
" - exec_dir digest: {}\n"
" - action digest: {}",
root_digest_.hash(),
- NativeSupport::Unprefix(action->hash()));
+ action->hash());
}
if (do_cache) {
- ArtifactDigest const a_digest{*action};
if (auto result =
- local_context_.storage->ActionCache().CachedResult(a_digest)) {
+ local_context_.storage->ActionCache().CachedResult(*action)) {
if (result->exit_code() == 0 and
ActionResultContainsExpectedOutputs(
*result, output_files_, output_dirs_)) {
@@ -120,10 +117,11 @@ auto LocalAction::Execute(Logger const* logger) noexcept
}
if (ExecutionEnabled(cache_flag_)) {
- if (auto output = Run(*action)) {
+ if (auto output = Run(static_cast<bazel_re::Digest>(*action))) {
if (cache_flag_ == CacheFlag::PretendCached) {
// ensure the same id is created as if caching were enabled
- auto action_cached = CreateActionDigest(root_digest_, false);
+ auto const action_cached =
+ CreateActionDigest(root_digest_, false);
if (not action_cached) {
if (logger != nullptr) {
logger->Emit(
diff --git a/src/buildtool/execution_api/local/local_action.hpp b/src/buildtool/execution_api/local/local_action.hpp
index 8cc12aba..dedc2951 100644
--- a/src/buildtool/execution_api/local/local_action.hpp
+++ b/src/buildtool/execution_api/local/local_action.hpp
@@ -25,6 +25,8 @@
#include <vector>
#include "gsl/gsl"
+#include "src/buildtool/common/artifact_digest.hpp"
+#include "src/buildtool/common/bazel_types.hpp"
#include "src/buildtool/execution_api/bazel_msg/bazel_msg_factory.hpp"
#include "src/buildtool/execution_api/common/execution_action.hpp"
#include "src/buildtool/execution_api/common/execution_response.hpp"
@@ -97,11 +99,10 @@ class LocalAction final : public IExecutionAction {
[[nodiscard]] auto CreateActionDigest(ArtifactDigest const& exec_dir,
bool do_not_cache)
- -> std::optional<bazel_re::Digest> {
+ -> std::optional<ArtifactDigest> {
auto const env_vars = BazelMsgFactory::CreateMessageVectorFromMap<
bazel_re::Command_EnvironmentVariable>(env_vars_);
- auto const bazel_exec_dir = static_cast<bazel_re::Digest>(exec_dir);
BazelMsgFactory::ActionDigestRequest request{
.command_line = &cmdline_,
.cwd = &cwd_,
@@ -109,7 +110,7 @@ class LocalAction final : public IExecutionAction {
.output_dirs = &output_dirs_,
.env_vars = &env_vars,
.properties = &properties_,
- .exec_dir = &bazel_exec_dir,
+ .exec_dir = &exec_dir,
.hash_function = local_context_.storage_config->hash_function,
.timeout = timeout_,
.skip_action_cache = do_not_cache};
diff --git a/src/buildtool/execution_api/remote/TARGETS b/src/buildtool/execution_api/remote/TARGETS
index e415ce1c..4bee7a7e 100644
--- a/src/buildtool/execution_api/remote/TARGETS
+++ b/src/buildtool/execution_api/remote/TARGETS
@@ -28,6 +28,7 @@
, ["src/buildtool/execution_api/common", "common"]
, ["src/buildtool/execution_api/common", "artifact_blob_container"]
, ["@", "gsl", "", "gsl"]
+ , ["src/buildtool/common", "common"]
, ["src/buildtool/common", "bazel_types"]
, ["src/buildtool/execution_api/bazel_msg", "bazel_msg"]
, ["src/buildtool/execution_api/bazel_msg", "bazel_msg_factory"]
@@ -46,8 +47,7 @@
]
, "stage": ["src", "buildtool", "execution_api", "remote"]
, "private-deps":
- [ ["src/buildtool/common", "common"]
- , ["src/buildtool/common", "artifact_digest_factory"]
+ [ ["src/buildtool/common", "artifact_digest_factory"]
, ["src/buildtool/common", "bazel_digest_factory"]
, ["src/buildtool/file_system", "file_system_manager"]
, ["src/buildtool/file_system", "object_type"]
diff --git a/src/buildtool/execution_api/remote/bazel/bazel_action.cpp b/src/buildtool/execution_api/remote/bazel/bazel_action.cpp
index dcbddb8d..15ca949f 100644
--- a/src/buildtool/execution_api/remote/bazel/bazel_action.cpp
+++ b/src/buildtool/execution_api/remote/bazel/bazel_action.cpp
@@ -16,6 +16,7 @@
#include <utility> // std::move
+#include "src/buildtool/common/artifact_digest_factory.hpp"
#include "src/buildtool/execution_api/bazel_msg/bazel_blob_container.hpp"
#include "src/buildtool/execution_api/bazel_msg/bazel_msg_factory.hpp"
#include "src/buildtool/execution_api/remote/bazel/bazel_response.hpp"
@@ -24,7 +25,7 @@
BazelAction::BazelAction(
std::shared_ptr<BazelNetwork> network,
- bazel_re::Digest root_digest,
+ ArtifactDigest root_digest,
std::vector<std::string> command,
std::string cwd,
std::vector<std::string> output_files,
@@ -112,7 +113,7 @@ auto BazelAction::Execute(Logger const* logger) noexcept
}
auto BazelAction::CreateBundlesForAction(BazelBlobContainer* blobs,
- bazel_re::Digest const& exec_dir,
+ ArtifactDigest const& exec_dir,
bool do_not_cache) const noexcept
-> std::optional<bazel_re::Digest> {
using StoreFunc = BazelMsgFactory::ActionDigestRequest::BlobStoreFunc;
@@ -134,5 +135,10 @@ auto BazelAction::CreateBundlesForAction(BazelBlobContainer* blobs,
.timeout = timeout_,
.skip_action_cache = do_not_cache,
.store_blob = std::move(store_blob)};
- return BazelMsgFactory::CreateActionDigestFromCommandLine(request);
+ auto const action_digest =
+ BazelMsgFactory::CreateActionDigestFromCommandLine(request);
+ if (not action_digest) {
+ return std::nullopt;
+ }
+ return ArtifactDigestFactory::ToBazel(*action_digest);
}
diff --git a/src/buildtool/execution_api/remote/bazel/bazel_action.hpp b/src/buildtool/execution_api/remote/bazel/bazel_action.hpp
index 7bf62a45..c990cc8e 100644
--- a/src/buildtool/execution_api/remote/bazel/bazel_action.hpp
+++ b/src/buildtool/execution_api/remote/bazel/bazel_action.hpp
@@ -21,6 +21,7 @@
#include <string>
#include <vector>
+#include "src/buildtool/common/artifact_digest.hpp"
#include "src/buildtool/common/bazel_types.hpp"
#include "src/buildtool/execution_api/common/execution_action.hpp"
#include "src/buildtool/execution_api/remote/bazel/bazel_network.hpp"
@@ -42,7 +43,7 @@ class BazelAction final : public IExecutionAction {
private:
std::shared_ptr<BazelNetwork> const network_;
- bazel_re::Digest const root_digest_;
+ ArtifactDigest const root_digest_;
std::vector<std::string> const cmdline_;
std::string const cwd_;
std::vector<std::string> output_files_;
@@ -54,7 +55,7 @@ class BazelAction final : public IExecutionAction {
explicit BazelAction(
std::shared_ptr<BazelNetwork> network,
- bazel_re::Digest root_digest,
+ ArtifactDigest root_digest,
std::vector<std::string> command,
std::string cwd,
std::vector<std::string> output_files,
@@ -63,7 +64,7 @@ class BazelAction final : public IExecutionAction {
std::map<std::string, std::string> const& properties) noexcept;
[[nodiscard]] auto CreateBundlesForAction(BazelBlobContainer* blobs,
- bazel_re::Digest const& exec_dir,
+ ArtifactDigest const& exec_dir,
bool do_not_cache) const noexcept
-> std::optional<bazel_re::Digest>;
};
diff --git a/src/buildtool/execution_api/remote/bazel/bazel_api.cpp b/src/buildtool/execution_api/remote/bazel/bazel_api.cpp
index ee672503..cb4ca14b 100644
--- a/src/buildtool/execution_api/remote/bazel/bazel_api.cpp
+++ b/src/buildtool/execution_api/remote/bazel/bazel_api.cpp
@@ -213,15 +213,14 @@ auto BazelApi::CreateAction(
std::map<std::string, std::string> const& env_vars,
std::map<std::string, std::string> const& properties) const noexcept
-> IExecutionAction::Ptr {
- return std::unique_ptr<BazelAction>{
- new BazelAction{network_,
- static_cast<bazel_re::Digest>(root_digest),
- command,
- cwd,
- output_files,
- output_dirs,
- env_vars,
- properties}};
+ return std::unique_ptr<BazelAction>{new BazelAction{network_,
+ root_digest,
+ command,
+ cwd,
+ output_files,
+ output_dirs,
+ env_vars,
+ properties}};
}
// NOLINTNEXTLINE(misc-no-recursion, google-default-arguments)