summaryrefslogtreecommitdiff
path: root/src/buildtool/execution_api
diff options
context:
space:
mode:
authorOliver Reiche <oliver.reiche@gmail.com>2023-04-15 16:28:33 +0200
committerOliver Reiche <oliver.reiche@huawei.com>2023-04-26 18:29:44 +0200
commitd762bfa1953933dfac0a29a74523c25719396b8c (patch)
tree1002b0aecc1af698f0349a4efb4bfc169886c60a /src/buildtool/execution_api
parent03e1019aca5d08e53bfeb455071d91561fc33039 (diff)
downloadjustbuild-d762bfa1953933dfac0a29a74523c25719396b8c.tar.gz
imports: Switch to Microsoft GSL implementation
... with two minor code base changes compared to previous use of gsl-lite: - dag.hpp: ActionNode::Ptr and ArtifactNode::Ptr are not wrapped in gsl::not_null<> anymore, due to lack of support for wrapping std::unique_ptr<>. More specifically, the move constructor is missing, rendering it impossible to use std::vector<>::emplace_back(). - utils/cpp/gsl.hpp: New header file added to implement the macros ExpectsAudit() and EnsureAudit(), asserts running only in debug builds, which were available in gsl-lite but are missing in MS GSL.
Diffstat (limited to 'src/buildtool/execution_api')
-rw-r--r--src/buildtool/execution_api/bazel_msg/TARGETS7
-rw-r--r--src/buildtool/execution_api/bazel_msg/bazel_blob_container.hpp4
-rw-r--r--src/buildtool/execution_api/bazel_msg/bazel_msg_factory.cpp2
-rw-r--r--src/buildtool/execution_api/bazel_msg/blob_tree.hpp9
-rw-r--r--src/buildtool/execution_api/bazel_msg/directory_tree.cpp3
-rw-r--r--src/buildtool/execution_api/bazel_msg/directory_tree.hpp2
-rw-r--r--src/buildtool/execution_api/common/TARGETS3
-rw-r--r--src/buildtool/execution_api/common/execution_action.hpp2
-rw-r--r--src/buildtool/execution_api/common/execution_api.hpp2
-rw-r--r--src/buildtool/execution_api/common/execution_common.hpp11
-rw-r--r--src/buildtool/execution_api/common/execution_response.hpp2
-rw-r--r--src/buildtool/execution_api/execution_service/TARGETS2
-rw-r--r--src/buildtool/execution_api/execution_service/execution_server.cpp2
-rw-r--r--src/buildtool/execution_api/git/TARGETS2
-rw-r--r--src/buildtool/execution_api/git/git_api.hpp2
-rw-r--r--src/buildtool/execution_api/local/TARGETS4
-rw-r--r--src/buildtool/execution_api/local/config.hpp3
-rw-r--r--src/buildtool/execution_api/local/local_action.cpp2
-rw-r--r--src/buildtool/execution_api/local/local_action.hpp4
-rw-r--r--src/buildtool/execution_api/local/local_api.hpp2
-rw-r--r--src/buildtool/execution_api/local/local_response.hpp9
-rw-r--r--src/buildtool/execution_api/remote/TARGETS7
-rw-r--r--src/buildtool/execution_api/remote/bazel/bazel_ac_client.cpp2
-rw-r--r--src/buildtool/execution_api/remote/bazel/bazel_api.hpp2
-rw-r--r--src/buildtool/execution_api/remote/bazel/bazel_cas_client.cpp2
-rw-r--r--src/buildtool/execution_api/remote/bazel/bazel_execution_client.cpp2
-rw-r--r--src/buildtool/execution_api/remote/bazel/bazel_network.cpp121
-rw-r--r--src/buildtool/execution_api/remote/bazel/bazel_network.hpp4
-rw-r--r--src/buildtool/execution_api/remote/bazel/bazel_response.cpp5
-rw-r--r--src/buildtool/execution_api/remote/bazel/bytestream_client.hpp93
-rw-r--r--src/buildtool/execution_api/remote/config.hpp2
31 files changed, 168 insertions, 151 deletions
diff --git a/src/buildtool/execution_api/bazel_msg/TARGETS b/src/buildtool/execution_api/bazel_msg/TARGETS
index c83fac48..31bbc5df 100644
--- a/src/buildtool/execution_api/bazel_msg/TARGETS
+++ b/src/buildtool/execution_api/bazel_msg/TARGETS
@@ -12,6 +12,7 @@
, "private-deps":
[ ["src/buildtool/crypto", "hash_function"]
, ["src/buildtool/file_system", "git_cas"]
+ , ["src/utils/cpp", "gsl"]
]
}
, "bazel_msg_factory":
@@ -30,7 +31,7 @@
, "private-deps":
[ ["src/buildtool/compatibility", "compatibility"]
, ["src/utils/cpp", "hex_string"]
- , ["@", "gsl-lite", "", "gsl-lite"]
+ , ["@", "gsl", "", "gsl"]
, ["src/buildtool/file_system", "file_system_manager"]
]
, "stage": ["src", "buildtool", "execution_api", "bazel_msg"]
@@ -41,7 +42,7 @@
, "hdrs": ["directory_tree.hpp"]
, "srcs": ["directory_tree.cpp"]
, "deps":
- [ ["@", "gsl-lite", "", "gsl-lite"]
+ [ ["@", "gsl", "", "gsl"]
, ["src/buildtool/common", "common"]
, ["src/buildtool/execution_engine/dag", "dag"]
]
@@ -59,7 +60,7 @@
, "deps":
[ "bazel_msg"
, "directory_tree"
- , ["@", "gsl-lite", "", "gsl-lite"]
+ , ["@", "gsl", "", "gsl"]
, ["src/buildtool/compatibility", "compatibility"]
]
, "private-deps":
diff --git a/src/buildtool/execution_api/bazel_msg/bazel_blob_container.hpp b/src/buildtool/execution_api/bazel_msg/bazel_blob_container.hpp
index 5ebc72bd..50552126 100644
--- a/src/buildtool/execution_api/bazel_msg/bazel_blob_container.hpp
+++ b/src/buildtool/execution_api/bazel_msg/bazel_blob_container.hpp
@@ -21,7 +21,7 @@
#include <utility>
#include <vector>
-#include "gsl-lite/gsl-lite.hpp"
+#include "gsl/gsl"
#include "src/buildtool/execution_api/bazel_msg/bazel_blob.hpp"
#include "src/utils/cpp/concepts.hpp"
@@ -168,7 +168,7 @@ class BlobContainer {
public:
explicit digest_to_blob(
gsl::not_null<underlaying_map_t const*> blobs) noexcept
- : blobs_{std::move(blobs)} {}
+ : blobs_{blobs} {}
digest_to_blob(digest_to_blob const& other) noexcept = default;
digest_to_blob(digest_to_blob&& other) noexcept = default;
~digest_to_blob() noexcept = default;
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 c89a6323..5f392483 100644
--- a/src/buildtool/execution_api/bazel_msg/bazel_msg_factory.cpp
+++ b/src/buildtool/execution_api/bazel_msg/bazel_msg_factory.cpp
@@ -24,7 +24,7 @@
#include <string>
#include <vector>
-#include "gsl-lite/gsl-lite.hpp"
+#include "gsl/gsl"
#include "src/buildtool/common/bazel_types.hpp"
#include "src/buildtool/compatibility/native_support.hpp"
#include "src/buildtool/file_system/file_system_manager.hpp"
diff --git a/src/buildtool/execution_api/bazel_msg/blob_tree.hpp b/src/buildtool/execution_api/bazel_msg/blob_tree.hpp
index 786e3c55..781150da 100644
--- a/src/buildtool/execution_api/bazel_msg/blob_tree.hpp
+++ b/src/buildtool/execution_api/bazel_msg/blob_tree.hpp
@@ -21,7 +21,7 @@
#include <utility>
#include <vector>
-#include "gsl-lite/gsl-lite.hpp"
+#include "gsl/gsl"
#include "src/buildtool/compatibility/native_support.hpp"
#include "src/buildtool/execution_api/bazel_msg/bazel_blob.hpp"
#include "src/buildtool/execution_api/bazel_msg/directory_tree.hpp"
@@ -34,12 +34,7 @@ using BlobTreePtr = gsl::not_null<std::shared_ptr<BlobTree>>;
class BlobTree {
public:
BlobTree(BazelBlob blob, std::vector<BlobTreePtr> nodes)
- : blob_{std::move(blob)} {
- nodes_.reserve(nodes.size());
- for (auto& node : nodes) {
- nodes_.emplace_back(std::move(node));
- }
- }
+ : blob_{std::move(blob)}, nodes_{std::move(nodes)} {}
[[nodiscard]] auto Blob() const noexcept -> BazelBlob { return blob_; }
[[nodiscard]] auto IsTree() const noexcept -> bool {
diff --git a/src/buildtool/execution_api/bazel_msg/directory_tree.cpp b/src/buildtool/execution_api/bazel_msg/directory_tree.cpp
index a7951f90..25e17ee6 100644
--- a/src/buildtool/execution_api/bazel_msg/directory_tree.cpp
+++ b/src/buildtool/execution_api/bazel_msg/directory_tree.cpp
@@ -17,6 +17,7 @@
#include "src/buildtool/common/artifact_digest.hpp"
#include "src/buildtool/file_system/file_system_manager.hpp"
#include "src/buildtool/logging/logger.hpp"
+#include "src/utils/cpp/gsl.hpp"
auto DirectoryTree::AddArtifact(std::filesystem::path const& path,
Artifact const* artifact) noexcept -> bool {
@@ -53,7 +54,7 @@ auto DirectoryTree::FromNamedArtifacts(
auto DirectoryTree::AddArtifact(std::filesystem::path::iterator* begin,
std::filesystem::path::iterator const& end,
Artifact const* artifact) -> bool {
- gsl_ExpectsAudit(std::distance(*begin, end) > 0);
+ ExpectsAudit(std::distance(*begin, end) > 0);
auto segment = *((*begin)++);
if (segment == "." or segment == "..") { // fail on "." and ".."
return false;
diff --git a/src/buildtool/execution_api/bazel_msg/directory_tree.hpp b/src/buildtool/execution_api/bazel_msg/directory_tree.hpp
index 968c8899..5436be9e 100644
--- a/src/buildtool/execution_api/bazel_msg/directory_tree.hpp
+++ b/src/buildtool/execution_api/bazel_msg/directory_tree.hpp
@@ -23,7 +23,7 @@
#include <variant>
#include <vector>
-#include "gsl-lite/gsl-lite.hpp"
+#include "gsl/gsl"
#include "src/buildtool/common/artifact.hpp"
#include "src/buildtool/execution_engine/dag/dag.hpp"
diff --git a/src/buildtool/execution_api/common/TARGETS b/src/buildtool/execution_api/common/TARGETS
index 2c7ca6cf..4e4bf796 100644
--- a/src/buildtool/execution_api/common/TARGETS
+++ b/src/buildtool/execution_api/common/TARGETS
@@ -8,12 +8,13 @@
, "execution_response.hpp"
]
, "deps":
- [ ["@", "gsl-lite", "", "gsl-lite"]
+ [ ["@", "gsl", "", "gsl"]
, ["src/buildtool/common", "common"]
, ["src/buildtool/crypto", "hash_function"]
, ["src/buildtool/execution_api/bazel_msg", "bazel_msg"]
, ["src/buildtool/execution_api/bazel_msg", "bazel_msg_factory"]
, ["src/utils/cpp", "hex_string"]
+ , ["src/utils/cpp", "gsl"]
, ["src/buildtool/logging", "logging"]
]
, "stage": ["src", "buildtool", "execution_api", "common"]
diff --git a/src/buildtool/execution_api/common/execution_action.hpp b/src/buildtool/execution_api/common/execution_action.hpp
index d3089f81..649c634c 100644
--- a/src/buildtool/execution_api/common/execution_action.hpp
+++ b/src/buildtool/execution_api/common/execution_action.hpp
@@ -18,7 +18,7 @@
#include <chrono>
#include <memory>
-#include "gsl-lite/gsl-lite.hpp"
+#include "gsl/gsl"
#include "src/buildtool/execution_api/common/execution_response.hpp"
class Logger;
diff --git a/src/buildtool/execution_api/common/execution_api.hpp b/src/buildtool/execution_api/common/execution_api.hpp
index ffa31483..7a301f71 100644
--- a/src/buildtool/execution_api/common/execution_api.hpp
+++ b/src/buildtool/execution_api/common/execution_api.hpp
@@ -21,7 +21,7 @@
#include <utility>
#include <vector>
-#include "gsl-lite/gsl-lite.hpp"
+#include "gsl/gsl"
#include "src/buildtool/common/artifact.hpp" // Artifact::ObjectInfo
#include "src/buildtool/execution_api/bazel_msg/bazel_blob_container.hpp"
#include "src/buildtool/execution_api/bazel_msg/bazel_msg_factory.hpp"
diff --git a/src/buildtool/execution_api/common/execution_common.hpp b/src/buildtool/execution_api/common/execution_common.hpp
index 51e62455..d9aea07f 100644
--- a/src/buildtool/execution_api/common/execution_common.hpp
+++ b/src/buildtool/execution_api/common/execution_common.hpp
@@ -30,9 +30,10 @@
#include <string>
#include <thread>
-#include "gsl-lite/gsl-lite.hpp"
+#include "gsl/gsl"
#include "src/buildtool/crypto/hash_function.hpp"
#include "src/buildtool/logging/logger.hpp"
+#include "src/utils/cpp/gsl.hpp"
#include "src/utils/cpp/hex_string.hpp"
/// \brief Create unique ID for current process and thread.
@@ -80,7 +81,7 @@ static void EncodeUUIDVersion4(std::string* uuid) {
constexpr auto kVersionByte = 6UL;
constexpr auto kVersionBits = 0x40U; // version 4: 0100 xxxx
constexpr auto kClearMask = 0x0fU;
- gsl_Expects(uuid->size() >= kVersionByte);
+ Expects(uuid->size() >= kVersionByte);
auto& byte = uuid->at(kVersionByte);
byte = static_cast<char>(kVersionBits |
(kClearMask & static_cast<std::uint8_t>(byte)));
@@ -90,7 +91,7 @@ static void EncodeUUIDVariant1(std::string* uuid) {
constexpr auto kVariantByte = 8UL;
constexpr auto kVariantBits = 0x80U; // variant 1: 10xx xxxx
constexpr auto kClearMask = 0x3fU;
- gsl_Expects(uuid->size() >= kVariantByte);
+ Expects(uuid->size() >= kVariantByte);
auto& byte = uuid->at(kVariantByte);
byte = static_cast<char>(kVariantBits |
(kClearMask & static_cast<std::uint8_t>(byte)));
@@ -106,7 +107,7 @@ static void EncodeUUIDVariant1(std::string* uuid) {
auto uuid = HashFunction::ComputeHash(value).Bytes();
EncodeUUIDVersion4(&uuid);
EncodeUUIDVariant1(&uuid);
- gsl_Expects(uuid.size() >= kRawLength);
+ Expects(uuid.size() >= kRawLength);
std::size_t cur{};
std::ostringstream ss{};
@@ -116,7 +117,7 @@ static void EncodeUUIDVariant1(std::string* uuid) {
cur = pos;
}
ss << uuid_hex.substr(cur);
- gsl_EnsuresAudit(ss.str().size() == (2 * kRawLength) + kHexDashPos.size());
+ EnsuresAudit(ss.str().size() == (2 * kRawLength) + kHexDashPos.size());
return ss.str();
}
diff --git a/src/buildtool/execution_api/common/execution_response.hpp b/src/buildtool/execution_api/common/execution_response.hpp
index deb8186f..a08134dd 100644
--- a/src/buildtool/execution_api/common/execution_response.hpp
+++ b/src/buildtool/execution_api/common/execution_response.hpp
@@ -20,7 +20,7 @@
#include <unordered_map>
#include <vector>
-#include "gsl-lite/gsl-lite.hpp"
+#include "gsl/gsl"
#include "src/buildtool/common/artifact.hpp"
/// \brief Abstract response.
diff --git a/src/buildtool/execution_api/execution_service/TARGETS b/src/buildtool/execution_api/execution_service/TARGETS
index 7227c8e4..26bf08e7 100644
--- a/src/buildtool/execution_api/execution_service/TARGETS
+++ b/src/buildtool/execution_api/execution_service/TARGETS
@@ -13,7 +13,7 @@
]
, "private-deps":
[ ["@", "fmt", "", "fmt"]
- , ["@", "gsl-lite", "", "gsl-lite"]
+ , ["@", "gsl", "", "gsl"]
, ["src/buildtool/storage", "storage"]
, ["src/buildtool/file_system", "file_system_manager"]
, "operation_cache"
diff --git a/src/buildtool/execution_api/execution_service/execution_server.cpp b/src/buildtool/execution_api/execution_service/execution_server.cpp
index ed22e023..c34201a1 100644
--- a/src/buildtool/execution_api/execution_service/execution_server.cpp
+++ b/src/buildtool/execution_api/execution_service/execution_server.cpp
@@ -22,7 +22,7 @@
#include "execution_server.hpp"
#include "fmt/format.h"
-#include "gsl-lite/gsl-lite.hpp"
+#include "gsl/gsl"
#include "src/buildtool/execution_api/execution_service/operation_cache.hpp"
#include "src/buildtool/file_system/file_system_manager.hpp"
#include "src/buildtool/storage/garbage_collector.hpp"
diff --git a/src/buildtool/execution_api/git/TARGETS b/src/buildtool/execution_api/git/TARGETS
index ca0f09bc..bed87ae8 100644
--- a/src/buildtool/execution_api/git/TARGETS
+++ b/src/buildtool/execution_api/git/TARGETS
@@ -3,7 +3,7 @@
, "name": ["git"]
, "hdrs": ["git_api.hpp"]
, "deps":
- [ ["@", "gsl-lite", "", "gsl-lite"]
+ [ ["@", "gsl", "", "gsl"]
, ["src/buildtool/common", "config"]
, ["src/buildtool/execution_api/bazel_msg", "bazel_msg_factory"]
, ["src/buildtool/execution_api/common", "common"]
diff --git a/src/buildtool/execution_api/git/git_api.hpp b/src/buildtool/execution_api/git/git_api.hpp
index 67207b79..2844d492 100644
--- a/src/buildtool/execution_api/git/git_api.hpp
+++ b/src/buildtool/execution_api/git/git_api.hpp
@@ -17,7 +17,7 @@
#include <cstdio>
-#include "gsl-lite/gsl-lite.hpp"
+#include "gsl/gsl"
#include "src/buildtool/common/repository_config.hpp"
#include "src/buildtool/execution_api/bazel_msg/bazel_msg_factory.hpp"
#include "src/buildtool/execution_api/common/execution_api.hpp"
diff --git a/src/buildtool/execution_api/local/TARGETS b/src/buildtool/execution_api/local/TARGETS
index 3109afca..b9e056b8 100644
--- a/src/buildtool/execution_api/local/TARGETS
+++ b/src/buildtool/execution_api/local/TARGETS
@@ -5,7 +5,7 @@
, "deps":
[ ["@", "fmt", "", "fmt"]
, ["@", "json", "", "json"]
- , ["@", "gsl-lite", "", "gsl-lite"]
+ , ["@", "gsl", "", "gsl"]
, ["src/buildtool/common", "common"]
, ["src/buildtool/file_system", "file_system_manager"]
, ["src/buildtool/file_system", "object_type"]
@@ -25,7 +25,7 @@
, "srcs": ["local_action.cpp"]
, "deps":
[ ["@", "fmt", "", "fmt"]
- , ["@", "gsl-lite", "", "gsl-lite"]
+ , ["@", "gsl", "", "gsl"]
, ["src/buildtool/storage", "storage"]
, ["src/buildtool/execution_api/common", "common"]
, ["src/buildtool/execution_api/bazel_msg", "bazel_msg_factory"]
diff --git a/src/buildtool/execution_api/local/config.hpp b/src/buildtool/execution_api/local/config.hpp
index a1882776..9257b758 100644
--- a/src/buildtool/execution_api/local/config.hpp
+++ b/src/buildtool/execution_api/local/config.hpp
@@ -20,7 +20,6 @@
#include <string>
#include <vector>
-#include <gsl-lite/gsl-lite.hpp>
#include <nlohmann/json.hpp>
#include "src/buildtool/common/artifact_digest.hpp"
@@ -29,6 +28,8 @@
#include "src/buildtool/logging/log_level.hpp"
#include "src/buildtool/logging/logger.hpp"
+#include <gsl/gsl>
+
/// \brief Store global build system configuration.
class LocalExecutionConfig {
struct ConfigData {
diff --git a/src/buildtool/execution_api/local/local_action.cpp b/src/buildtool/execution_api/local/local_action.cpp
index 209c6a5d..764c00aa 100644
--- a/src/buildtool/execution_api/local/local_action.cpp
+++ b/src/buildtool/execution_api/local/local_action.cpp
@@ -17,7 +17,7 @@
#include <algorithm>
#include <filesystem>
-#include "gsl-lite/gsl-lite.hpp"
+#include "gsl/gsl"
#include "src/buildtool/common/bazel_types.hpp"
#include "src/buildtool/compatibility/native_support.hpp"
#include "src/buildtool/execution_api/local/config.hpp"
diff --git a/src/buildtool/execution_api/local/local_action.hpp b/src/buildtool/execution_api/local/local_action.hpp
index 4fba44ba..a49060e4 100644
--- a/src/buildtool/execution_api/local/local_action.hpp
+++ b/src/buildtool/execution_api/local/local_action.hpp
@@ -59,14 +59,14 @@ class LocalAction final : public IExecutionAction {
std::chrono::milliseconds timeout_{kDefaultTimeout};
CacheFlag cache_flag_{CacheFlag::CacheOutput};
- LocalAction(gsl::not_null<Storage const*> storage,
+ LocalAction(gsl::not_null<Storage const*> const& storage,
ArtifactDigest root_digest,
std::vector<std::string> command,
std::vector<std::string> output_files,
std::vector<std::string> output_dirs,
std::map<std::string, std::string> env_vars,
std::map<std::string, std::string> const& properties) noexcept
- : storage_{std::move(storage)},
+ : storage_{storage},
root_digest_{std::move(root_digest)},
cmdline_{std::move(command)},
output_files_{std::move(output_files)},
diff --git a/src/buildtool/execution_api/local/local_api.hpp b/src/buildtool/execution_api/local/local_api.hpp
index c40f8471..577d771b 100644
--- a/src/buildtool/execution_api/local/local_api.hpp
+++ b/src/buildtool/execution_api/local/local_api.hpp
@@ -23,7 +23,7 @@
#include <vector>
#include "fmt/core.h"
-#include "gsl-lite/gsl-lite.hpp"
+#include "gsl/gsl"
#include "src/buildtool/compatibility/compatibility.hpp"
#include "src/buildtool/compatibility/native_support.hpp"
#include "src/buildtool/execution_api/bazel_msg/bazel_blob.hpp"
diff --git a/src/buildtool/execution_api/local/local_response.hpp b/src/buildtool/execution_api/local/local_response.hpp
index 93b12009..2875ec16 100644
--- a/src/buildtool/execution_api/local/local_response.hpp
+++ b/src/buildtool/execution_api/local/local_response.hpp
@@ -105,12 +105,13 @@ class LocalResponse final : public IExecutionResponse {
LocalAction::Output output_{};
gsl::not_null<Storage const*> storage_;
- explicit LocalResponse(std::string action_id,
- LocalAction::Output output,
- gsl::not_null<Storage const*> storage) noexcept
+ explicit LocalResponse(
+ std::string action_id,
+ LocalAction::Output output,
+ gsl::not_null<Storage const*> const& storage) noexcept
: action_id_{std::move(action_id)},
output_{std::move(output)},
- storage_{std::move(storage)} {}
+ storage_{storage} {}
};
#endif // INCLUDED_SRC_BUILDTOOL_EXECUTION_API_LOCAL_LOCAL_RESPONSE_HPP
diff --git a/src/buildtool/execution_api/remote/TARGETS b/src/buildtool/execution_api/remote/TARGETS
index 68ff94b3..5a462481 100644
--- a/src/buildtool/execution_api/remote/TARGETS
+++ b/src/buildtool/execution_api/remote/TARGETS
@@ -23,11 +23,12 @@
[ "config"
, ["src/buildtool/logging", "logging"]
, ["src/buildtool/execution_api/common", "common"]
- , ["@", "gsl-lite", "", "gsl-lite"]
+ , ["@", "gsl", "", "gsl"]
, ["src/buildtool/common", "bazel_types"]
, ["src/buildtool/execution_api/bazel_msg", "bazel_msg"]
, ["src/buildtool/auth", "auth"]
, ["src/buildtool/execution_api/common", "bytestream-common"]
+ , ["src/utils/cpp", "gsl"]
]
, "proto":
[ ["@", "bazel_remote_apis", "", "remote_execution_proto"]
@@ -52,7 +53,7 @@
, ["src/buildtool/execution_api/common", "common"]
, ["src/buildtool/execution_api/bazel_msg", "bazel_msg"]
, ["src/buildtool/execution_api/bazel_msg", "blob_tree"]
- , ["@", "gsl-lite", "", "gsl-lite"]
+ , ["@", "gsl", "", "gsl"]
, ["src/buildtool/common", "common"]
]
, "stage": ["src", "buildtool", "execution_api", "remote"]
@@ -69,7 +70,7 @@
, "deps":
[ ["src/buildtool/logging", "logging"]
, ["src/utils/cpp", "type_safe_arithmetic"]
- , ["@", "gsl-lite", "", "gsl-lite"]
+ , ["@", "gsl", "", "gsl"]
]
, "stage": ["src", "buildtool", "execution_api", "remote"]
}
diff --git a/src/buildtool/execution_api/remote/bazel/bazel_ac_client.cpp b/src/buildtool/execution_api/remote/bazel/bazel_ac_client.cpp
index 74542453..85759ec1 100644
--- a/src/buildtool/execution_api/remote/bazel/bazel_ac_client.cpp
+++ b/src/buildtool/execution_api/remote/bazel/bazel_ac_client.cpp
@@ -14,7 +14,7 @@
#include "src/buildtool/execution_api/remote/bazel/bazel_ac_client.hpp"
-#include "gsl-lite/gsl-lite.hpp"
+#include "gsl/gsl"
#include "src/buildtool/common/bazel_types.hpp"
#include "src/buildtool/execution_api/remote/bazel/bazel_client_common.hpp"
diff --git a/src/buildtool/execution_api/remote/bazel/bazel_api.hpp b/src/buildtool/execution_api/remote/bazel/bazel_api.hpp
index 111a09cf..6edfae5f 100644
--- a/src/buildtool/execution_api/remote/bazel/bazel_api.hpp
+++ b/src/buildtool/execution_api/remote/bazel/bazel_api.hpp
@@ -20,7 +20,7 @@
#include <utility>
#include <vector>
-#include "gsl-lite/gsl-lite.hpp"
+#include "gsl/gsl"
#include "src/buildtool/common/artifact_digest.hpp"
#include "src/buildtool/execution_api/bazel_msg/bazel_common.hpp"
#include "src/buildtool/execution_api/bazel_msg/blob_tree.hpp"
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 6dd2e9e3..0c59c83d 100644
--- a/src/buildtool/execution_api/remote/bazel/bazel_cas_client.cpp
+++ b/src/buildtool/execution_api/remote/bazel/bazel_cas_client.cpp
@@ -15,7 +15,7 @@
#include "src/buildtool/execution_api/remote/bazel/bazel_cas_client.hpp"
#include "grpcpp/grpcpp.h"
-#include "gsl-lite/gsl-lite.hpp"
+#include "gsl/gsl"
#include "src/buildtool/common/bazel_types.hpp"
#include "src/buildtool/execution_api/common/execution_common.hpp"
#include "src/buildtool/execution_api/remote/bazel/bazel_client_common.hpp"
diff --git a/src/buildtool/execution_api/remote/bazel/bazel_execution_client.cpp b/src/buildtool/execution_api/remote/bazel/bazel_execution_client.cpp
index b1244e0c..365998a7 100644
--- a/src/buildtool/execution_api/remote/bazel/bazel_execution_client.cpp
+++ b/src/buildtool/execution_api/remote/bazel/bazel_execution_client.cpp
@@ -15,7 +15,7 @@
#include "src/buildtool/execution_api/remote/bazel/bazel_execution_client.hpp"
#include "grpcpp/grpcpp.h"
-#include "gsl-lite/gsl-lite.hpp"
+#include "gsl/gsl"
#include "src/buildtool/execution_api/remote/bazel/bazel_client_common.hpp"
namespace bazel_re = build::bazel::remote::execution::v2;
diff --git a/src/buildtool/execution_api/remote/bazel/bazel_network.cpp b/src/buildtool/execution_api/remote/bazel/bazel_network.cpp
index c92164ba..159a848e 100644
--- a/src/buildtool/execution_api/remote/bazel/bazel_network.cpp
+++ b/src/buildtool/execution_api/remote/bazel/bazel_network.cpp
@@ -120,50 +120,53 @@ auto BazelNetwork::IsAvailable(std::vector<bazel_re::Digest> const& digests)
template <class T_Iter>
auto BazelNetwork::DoUploadBlobs(T_Iter const& first,
T_Iter const& last) noexcept -> bool {
- auto num_blobs = gsl::narrow<std::size_t>(std::distance(first, last));
-
- std::vector<bazel_re::Digest> digests{};
- digests.reserve(num_blobs);
-
- auto begin = first;
- auto current = first;
- std::size_t transfer_size{};
- while (current != last) {
- auto const& blob = *current;
- transfer_size += blob.data.size();
- if (transfer_size > kMaxBatchTransferSize) {
- if (begin == current) {
- if (cas_->UpdateSingleBlob(instance_name_, blob)) {
- digests.emplace_back(blob.digest);
+ try {
+ auto num_blobs = gsl::narrow<std::size_t>(std::distance(first, last));
+
+ std::vector<bazel_re::Digest> digests{};
+ digests.reserve(num_blobs);
+
+ auto begin = first;
+ auto current = first;
+ std::size_t transfer_size{};
+ while (current != last) {
+ auto const& blob = *current;
+ transfer_size += blob.data.size();
+ if (transfer_size > kMaxBatchTransferSize) {
+ if (begin == current) {
+ if (cas_->UpdateSingleBlob(instance_name_, blob)) {
+ digests.emplace_back(blob.digest);
+ }
+ ++current;
}
- ++current;
+ else {
+ for (auto& digest : cas_->BatchUpdateBlobs(
+ instance_name_, begin, current)) {
+ digests.emplace_back(std::move(digest));
+ }
+ }
+ begin = current;
+ transfer_size = 0;
}
else {
- for (auto& digest :
- cas_->BatchUpdateBlobs(instance_name_, begin, current)) {
- digests.emplace_back(std::move(digest));
- }
+ ++current;
}
- begin = current;
- transfer_size = 0;
- }
- else {
- ++current;
}
- }
- if (begin != current) {
- for (auto& digest :
- cas_->BatchUpdateBlobs(instance_name_, begin, current)) {
- digests.emplace_back(std::move(digest));
+ if (begin != current) {
+ for (auto& digest :
+ cas_->BatchUpdateBlobs(instance_name_, begin, current)) {
+ digests.emplace_back(std::move(digest));
+ }
}
- }
- if (digests.size() != num_blobs) {
- Logger::Log(LogLevel::Warning, "Failed to update all blobs");
- return false;
+ if (digests.size() == num_blobs) {
+ return true;
+ }
+ } catch (...) {
}
- return true;
+ Logger::Log(LogLevel::Warning, "Failed to update all blobs");
+ return false;
}
auto BazelNetwork::UploadBlobs(BlobContainer const& blobs,
@@ -206,31 +209,37 @@ auto BazelNetwork::BlobReader::Next() noexcept -> std::vector<BazelBlob> {
std::size_t size{};
std::vector<BazelBlob> blobs{};
- while (current_ != ids_.end()) {
- auto blob_size = gsl::narrow<std::size_t>(current_->size_bytes());
- size += blob_size;
- // read if size is 0 (unknown) or exceeds transfer size
- if (blob_size == 0 or size > kMaxBatchTransferSize) {
- // perform read of range [begin_, current_)
- if (begin_ == current_) {
- auto blob = cas_->ReadSingleBlob(instance_name_, *begin_);
- if (blob) {
- blobs.emplace_back(std::move(*blob));
+ try {
+ while (current_ != ids_.end()) {
+ auto blob_size = gsl::narrow<std::size_t>(current_->size_bytes());
+ size += blob_size;
+ // read if size is 0 (unknown) or exceeds transfer size
+ if (blob_size == 0 or size > kMaxBatchTransferSize) {
+ // perform read of range [begin_, current_)
+ if (begin_ == current_) {
+ auto blob = cas_->ReadSingleBlob(instance_name_, *begin_);
+ if (blob) {
+ blobs.emplace_back(std::move(*blob));
+ }
+ ++current_;
}
- ++current_;
- }
- else {
- blobs = cas_->BatchReadBlobs(instance_name_, begin_, current_);
+ else {
+ blobs =
+ cas_->BatchReadBlobs(instance_name_, begin_, current_);
+ }
+ begin_ = current_;
+ break;
}
- begin_ = current_;
- break;
+ ++current_;
}
- ++current_;
- }
- if (begin_ != current_) {
- blobs = cas_->BatchReadBlobs(instance_name_, begin_, current_);
- begin_ = current_;
+ if (begin_ != current_) {
+ blobs = cas_->BatchReadBlobs(instance_name_, begin_, current_);
+ begin_ = current_;
+ }
+ } catch (std::exception const& e) {
+ Logger::Log(LogLevel::Error, "Reading blobs failed with: {}", e.what());
+ Ensures(false);
}
return blobs;
diff --git a/src/buildtool/execution_api/remote/bazel/bazel_network.hpp b/src/buildtool/execution_api/remote/bazel/bazel_network.hpp
index e2c1a065..c1ae34ad 100644
--- a/src/buildtool/execution_api/remote/bazel/bazel_network.hpp
+++ b/src/buildtool/execution_api/remote/bazel/bazel_network.hpp
@@ -46,10 +46,10 @@ class BazelNetwork {
std::vector<bazel_re::Digest>::const_iterator current_;
BlobReader(std::string instance_name,
- gsl::not_null<BazelCasClient*> cas,
+ gsl::not_null<BazelCasClient*> const& cas,
std::vector<bazel_re::Digest> ids)
: instance_name_{std::move(instance_name)},
- cas_{std::move(cas)},
+ cas_{cas},
ids_{std::move(ids)},
begin_{ids_.begin()},
current_{begin_} {};
diff --git a/src/buildtool/execution_api/remote/bazel/bazel_response.cpp b/src/buildtool/execution_api/remote/bazel/bazel_response.cpp
index ddebd648..d45d9aa1 100644
--- a/src/buildtool/execution_api/remote/bazel/bazel_response.cpp
+++ b/src/buildtool/execution_api/remote/bazel/bazel_response.cpp
@@ -14,10 +14,11 @@
#include "src/buildtool/execution_api/remote/bazel/bazel_response.hpp"
-#include "gsl-lite/gsl-lite.hpp"
+#include "gsl/gsl"
#include "src/buildtool/compatibility/native_support.hpp"
#include "src/buildtool/execution_api/remote/bazel/bazel_cas_client.hpp"
#include "src/buildtool/logging/logger.hpp"
+#include "src/utils/cpp/gsl.hpp"
namespace {
@@ -63,7 +64,7 @@ auto BazelResponse::Artifacts() const noexcept -> ArtifactInfos {
if (not Compatibility::IsCompatible()) {
// in native mode: just collect and store tree digests
for (auto const& tree : action_result.output_directories()) {
- gsl_ExpectsAudit(NativeSupport::IsTree(tree.tree_digest().hash()));
+ ExpectsAudit(NativeSupport::IsTree(tree.tree_digest().hash()));
try {
artifacts.emplace(
tree.path(),
diff --git a/src/buildtool/execution_api/remote/bazel/bytestream_client.hpp b/src/buildtool/execution_api/remote/bazel/bytestream_client.hpp
index 79905b39..b9a55707 100644
--- a/src/buildtool/execution_api/remote/bazel/bytestream_client.hpp
+++ b/src/buildtool/execution_api/remote/bazel/bytestream_client.hpp
@@ -99,56 +99,61 @@ class ByteStreamClient {
[[nodiscard]] auto Write(std::string const& resource_name,
std::string const& data) const noexcept -> bool {
- grpc::ClientContext ctx;
- google::bytestream::WriteResponse response{};
- auto writer = stub_->Write(&ctx, &response);
-
- auto* allocated_data =
- std::make_unique<std::string>(kChunkSize, '\0').release();
- google::bytestream::WriteRequest request{};
- request.set_resource_name(resource_name);
- request.set_allocated_data(allocated_data);
- std::size_t pos{};
- do {
- auto const size = std::min(data.size() - pos, kChunkSize);
- allocated_data->resize(size);
- data.copy(allocated_data->data(), size, pos);
- request.set_write_offset(static_cast<int>(pos));
- request.set_finish_write(pos + size >= data.size());
- if (not writer->Write(request)) {
- // According to the docs, quote:
- // If there is an error or the connection is broken during the
- // `Write()`, the client should check the status of the
- // `Write()` by calling `QueryWriteStatus()` and continue
- // writing from the returned `committed_size`.
- auto const committed_size = QueryWriteStatus(resource_name);
- if (committed_size <= 0) {
- logger_.Emit(LogLevel::Error,
- "broken stream for upload to resource name {}",
- resource_name);
- return false;
+ try {
+ grpc::ClientContext ctx;
+ google::bytestream::WriteResponse response{};
+ auto writer = stub_->Write(&ctx, &response);
+
+ auto* allocated_data =
+ std::make_unique<std::string>(kChunkSize, '\0').release();
+ google::bytestream::WriteRequest request{};
+ request.set_resource_name(resource_name);
+ request.set_allocated_data(allocated_data);
+ std::size_t pos{};
+ do {
+ auto const size = std::min(data.size() - pos, kChunkSize);
+ allocated_data->resize(size);
+ data.copy(allocated_data->data(), size, pos);
+ request.set_write_offset(static_cast<int>(pos));
+ request.set_finish_write(pos + size >= data.size());
+ if (not writer->Write(request)) {
+ // According to the docs, quote:
+ // If there is an error or the connection is broken during
+ // the `Write()`, the client should check the status of the
+ // `Write()` by calling `QueryWriteStatus()` and continue
+ // writing from the returned `committed_size`.
+ auto const committed_size = QueryWriteStatus(resource_name);
+ if (committed_size <= 0) {
+ logger_.Emit(
+ LogLevel::Error,
+ "broken stream for upload to resource name {}",
+ resource_name);
+ return false;
+ }
+ pos = gsl::narrow<std::size_t>(committed_size);
+ }
+ else {
+ pos += kChunkSize;
}
- pos = gsl::narrow<std::size_t>(committed_size);
+ } while (pos < data.size());
+ if (not writer->WritesDone()) {
+ logger_.Emit(LogLevel::Error,
+ "broken stream for upload to resource name {}",
+ resource_name);
+ return false;
}
- else {
- pos += kChunkSize;
+
+ auto status = writer->Finish();
+ if (not status.ok()) {
+ LogStatus(&logger_, LogLevel::Error, status);
+ return false;
}
- } while (pos < data.size());
- if (not writer->WritesDone()) {
- logger_.Emit(LogLevel::Error,
- "broken stream for upload to resource name {}",
- resource_name);
- return false;
- }
- auto status = writer->Finish();
- if (not status.ok()) {
- LogStatus(&logger_, LogLevel::Error, status);
+ return gsl::narrow<std::size_t>(response.committed_size()) ==
+ data.size();
+ } catch (...) {
return false;
}
-
- return gsl::narrow<std::size_t>(response.committed_size()) ==
- data.size();
}
template <class T_Input>
diff --git a/src/buildtool/execution_api/remote/config.hpp b/src/buildtool/execution_api/remote/config.hpp
index b37e9f73..b10c3b23 100644
--- a/src/buildtool/execution_api/remote/config.hpp
+++ b/src/buildtool/execution_api/remote/config.hpp
@@ -23,7 +23,7 @@
#include <string>
#include <utility>
-#include "gsl-lite/gsl-lite.hpp"
+#include "gsl/gsl"
#include "src/buildtool/logging/logger.hpp"
#include "src/utils/cpp/type_safe_arithmetic.hpp"