summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/buildtool/execution_api/common/common_api.cpp10
-rw-r--r--src/buildtool/execution_api/common/common_api.hpp8
-rw-r--r--src/buildtool/execution_api/common/execution_api.hpp22
-rw-r--r--src/buildtool/execution_api/git/git_api.hpp18
-rw-r--r--src/buildtool/execution_api/local/local_api.hpp18
-rw-r--r--src/buildtool/execution_api/remote/bazel/bazel_api.cpp27
-rw-r--r--src/buildtool/execution_api/remote/bazel/bazel_api.hpp21
7 files changed, 64 insertions, 60 deletions
diff --git a/src/buildtool/execution_api/common/common_api.cpp b/src/buildtool/execution_api/common/common_api.cpp
index be7fa53c..ce124a67 100644
--- a/src/buildtool/execution_api/common/common_api.cpp
+++ b/src/buildtool/execution_api/common/common_api.cpp
@@ -82,9 +82,9 @@ auto CommonRetrieveToFds(
}
/// NOLINTNEXTLINE(misc-no-recursion)
-auto CommonUploadBlobTree(BlobTreePtr const& blob_tree,
- gsl::not_null<IExecutionApi*> const& api) noexcept
- -> bool {
+auto CommonUploadBlobTree(
+ BlobTreePtr const& blob_tree,
+ gsl::not_null<const IExecutionApi*> const& api) noexcept -> bool {
// Create digest list from blobs for batch availability check.
auto missing_blobs_info = GetMissingArtifactsInfo<BlobTreePtr>(
api, blob_tree->begin(), blob_tree->end(), [](BlobTreePtr const& node) {
@@ -127,7 +127,7 @@ auto CommonUploadBlobTree(BlobTreePtr const& blob_tree,
}
auto CommonUploadTreeCompatible(
- gsl::not_null<IExecutionApi*> const& api,
+ gsl::not_null<const IExecutionApi*> const& api,
DirectoryTreePtr const& build_root,
BazelMsgFactory::LinkDigestResolveFunc const& resolve_links) noexcept
-> std::optional<ArtifactDigest> {
@@ -163,7 +163,7 @@ auto CommonUploadTreeCompatible(
return ArtifactDigest{*digest};
}
-auto CommonUploadTreeNative(gsl::not_null<IExecutionApi*> const& api,
+auto CommonUploadTreeNative(gsl::not_null<const IExecutionApi*> const& api,
DirectoryTreePtr const& build_root) noexcept
-> std::optional<ArtifactDigest> {
auto blob_tree = BlobTree::FromDirectoryTree(build_root);
diff --git a/src/buildtool/execution_api/common/common_api.hpp b/src/buildtool/execution_api/common/common_api.hpp
index f657fee5..e35be206 100644
--- a/src/buildtool/execution_api/common/common_api.hpp
+++ b/src/buildtool/execution_api/common/common_api.hpp
@@ -61,7 +61,7 @@ struct MissingArtifactsInfo {
/// original given type, or nullopt in case of exceptions.
template <typename T>
[[nodiscard]] auto GetMissingArtifactsInfo(
- gsl::not_null<IExecutionApi*> const& api,
+ gsl::not_null<const IExecutionApi*> const& api,
typename std::vector<T>::const_iterator const& begin,
typename std::vector<T>::const_iterator const& end,
typename std::function<ArtifactDigest(T const&)> const& converter) noexcept
@@ -85,18 +85,18 @@ template <typename T>
/// \brief Upload missing blobs from a given BlobTree.
[[nodiscard]] auto CommonUploadBlobTree(
BlobTreePtr const& blob_tree,
- gsl::not_null<IExecutionApi*> const& api) noexcept -> bool;
+ gsl::not_null<const IExecutionApi*> const& api) noexcept -> bool;
/// \brief Runs the compatible branch of local/bazel UploadTree API.
[[nodiscard]] auto CommonUploadTreeCompatible(
- gsl::not_null<IExecutionApi*> const& api,
+ gsl::not_null<const IExecutionApi*> const& api,
DirectoryTreePtr const& build_root,
BazelMsgFactory::LinkDigestResolveFunc const& resolve_links) noexcept
-> std::optional<ArtifactDigest>;
/// \brief Runs the native branch of local/bazel UploadTree API.
[[nodiscard]] auto CommonUploadTreeNative(
- gsl::not_null<IExecutionApi*> const& api,
+ gsl::not_null<const IExecutionApi*> const& api,
DirectoryTreePtr const& build_root) noexcept
-> std::optional<ArtifactDigest>;
diff --git a/src/buildtool/execution_api/common/execution_api.hpp b/src/buildtool/execution_api/common/execution_api.hpp
index a4892258..1a8ee578 100644
--- a/src/buildtool/execution_api/common/execution_api.hpp
+++ b/src/buildtool/execution_api/common/execution_api.hpp
@@ -57,7 +57,7 @@ class IExecutionApi {
std::vector<std::string> const& output_files,
std::vector<std::string> const& output_dirs,
std::map<std::string, std::string> const& env_vars,
- std::map<std::string, std::string> const& properties) noexcept
+ std::map<std::string, std::string> const& properties) const noexcept
-> IExecutionAction::Ptr = 0;
/// \brief Retrieve artifacts from CAS and store to specified paths.
@@ -71,7 +71,7 @@ class IExecutionApi {
std::vector<Artifact::ObjectInfo> const& artifacts_info,
std::vector<std::filesystem::path> const& output_paths,
std::optional<gsl::not_null<IExecutionApi*>> const& alternative =
- std::nullopt) noexcept -> bool = 0;
+ std::nullopt) const noexcept -> bool = 0;
/// \brief Retrieve artifacts from CAS and write to file descriptors.
/// Tree artifacts are not resolved and instead the tree object will be
@@ -81,14 +81,14 @@ class IExecutionApi {
[[nodiscard]] virtual auto RetrieveToFds(
std::vector<Artifact::ObjectInfo> const& artifacts_info,
std::vector<int> const& fds,
- bool raw_tree) noexcept -> bool = 0;
+ bool raw_tree) const noexcept -> bool = 0;
/// \brief Synchronization of artifacts between two CASes. Retrieves
/// artifacts from one CAS and writes to another CAS. Tree artifacts are
/// resolved and its containing file artifacts are recursively retrieved.
[[nodiscard]] virtual auto RetrieveToCas(
std::vector<Artifact::ObjectInfo> const& artifacts_info,
- gsl::not_null<IExecutionApi*> const& api) noexcept -> bool = 0;
+ gsl::not_null<IExecutionApi*> const& api) const noexcept -> bool = 0;
/// \brief A variant of RetrieveToCas that is allowed to internally use
/// the specified number of threads to carry out the task in parallel.
@@ -100,14 +100,14 @@ class IExecutionApi {
std::vector<Artifact::ObjectInfo> const& artifacts_info,
gsl::not_null<IExecutionApi*> const& api,
std::size_t /* jobs */,
- bool /* use_blob_splitting */) noexcept -> bool {
+ bool /* use_blob_splitting */) const noexcept -> bool {
return RetrieveToCas(artifacts_info, api);
}
/// \brief Retrieve one artifact from CAS and make it available for
/// furter in-memory processing
[[nodiscard]] virtual auto RetrieveToMemory(
- Artifact::ObjectInfo const& artifact_info) noexcept
+ Artifact::ObjectInfo const& artifact_info) const noexcept
-> std::optional<std::string> = 0;
/// \brief Upload blobs to CAS. Uploads only the blobs that are not yet
@@ -115,13 +115,13 @@ class IExecutionApi {
/// \param blobs Container of blobs to upload.
/// \param skip_find_missing Skip finding missing blobs, just upload all.
/// NOLINTNEXTLINE(google-default-arguments)
- [[nodiscard]] virtual auto Upload(ArtifactBlobContainer&& blobs,
- bool skip_find_missing = false) noexcept
- -> bool = 0;
+ [[nodiscard]] virtual auto Upload(
+ ArtifactBlobContainer&& blobs,
+ bool skip_find_missing = false) const noexcept -> bool = 0;
[[nodiscard]] virtual auto UploadTree(
- std::vector<DependencyGraph::NamedArtifactNodePtr> const&
- artifacts) noexcept -> std::optional<ArtifactDigest> = 0;
+ std::vector<DependencyGraph::NamedArtifactNodePtr> const& artifacts)
+ const noexcept -> std::optional<ArtifactDigest> = 0;
[[nodiscard]] virtual auto IsAvailable(
ArtifactDigest const& digest) const noexcept -> bool = 0;
diff --git a/src/buildtool/execution_api/git/git_api.hpp b/src/buildtool/execution_api/git/git_api.hpp
index b3b4daa3..2b29fa40 100644
--- a/src/buildtool/execution_api/git/git_api.hpp
+++ b/src/buildtool/execution_api/git/git_api.hpp
@@ -38,13 +38,13 @@ class GitApi final : public IExecutionApi {
GitApi() = delete;
explicit GitApi(gsl::not_null<const RepositoryConfig*> const& repo_config)
: repo_config_{repo_config} {}
- auto CreateAction(
+ [[nodiscard]] auto CreateAction(
ArtifactDigest const& /*root_digest*/,
std::vector<std::string> const& /*command*/,
std::vector<std::string> const& /*output_files*/,
std::vector<std::string> const& /*output_dirs*/,
std::map<std::string, std::string> const& /*env_vars*/,
- std::map<std::string, std::string> const& /*properties*/) noexcept
+ std::map<std::string, std::string> const& /*properties*/) const noexcept
-> IExecutionAction::Ptr final {
// Execution not supported from git cas
return nullptr;
@@ -55,7 +55,7 @@ class GitApi final : public IExecutionApi {
std::vector<Artifact::ObjectInfo> const& artifacts_info,
std::vector<std::filesystem::path> const& output_paths,
std::optional<gsl::not_null<IExecutionApi*>> const& /*alternative*/ =
- std::nullopt) noexcept -> bool override {
+ std::nullopt) const noexcept -> bool override {
if (artifacts_info.size() != output_paths.size()) {
Logger::Log(LogLevel::Error,
"different number of digests and output paths.");
@@ -106,7 +106,7 @@ class GitApi final : public IExecutionApi {
[[nodiscard]] auto RetrieveToFds(
std::vector<Artifact::ObjectInfo> const& artifacts_info,
std::vector<int> const& fds,
- bool raw_tree) noexcept -> bool override {
+ bool raw_tree) const noexcept -> bool override {
if (artifacts_info.size() != fds.size()) {
Logger::Log(LogLevel::Error,
"different number of digests and file descriptors.");
@@ -175,7 +175,8 @@ class GitApi final : public IExecutionApi {
// NOLINTNEXTLINE(misc-no-recursion)
[[nodiscard]] auto RetrieveToCas(
std::vector<Artifact::ObjectInfo> const& artifacts_info,
- gsl::not_null<IExecutionApi*> const& api) noexcept -> bool override {
+ gsl::not_null<IExecutionApi*> const& api) const noexcept
+ -> bool override {
// Return immediately if target CAS is this CAS
if (this == api) {
return true;
@@ -281,14 +282,14 @@ class GitApi final : public IExecutionApi {
}
[[nodiscard]] auto RetrieveToMemory(
- Artifact::ObjectInfo const& artifact_info) noexcept
+ Artifact::ObjectInfo const& artifact_info) const noexcept
-> std::optional<std::string> override {
return repo_config_->ReadBlobFromGitCAS(artifact_info.digest.hash());
}
/// NOLINTNEXTLINE(google-default-arguments)
[[nodiscard]] auto Upload(ArtifactBlobContainer&& /*blobs*/,
- bool /*skip_find_missing*/ = false) noexcept
+ bool /*skip_find_missing*/ = false) const noexcept
-> bool override {
// Upload to git cas not supported
return false;
@@ -296,7 +297,8 @@ class GitApi final : public IExecutionApi {
[[nodiscard]] auto UploadTree(
std::vector<DependencyGraph::NamedArtifactNodePtr> const&
- /*artifacts*/) noexcept -> std::optional<ArtifactDigest> override {
+ /*artifacts*/) const noexcept
+ -> std::optional<ArtifactDigest> override {
// Upload to git cas not supported
return std::nullopt;
}
diff --git a/src/buildtool/execution_api/local/local_api.hpp b/src/buildtool/execution_api/local/local_api.hpp
index 035b14e9..fc64e842 100644
--- a/src/buildtool/execution_api/local/local_api.hpp
+++ b/src/buildtool/execution_api/local/local_api.hpp
@@ -57,13 +57,13 @@ class LocalApi final : public IExecutionApi {
repo_config = std::nullopt)
: repo_config_{std::move(repo_config)} {}
- auto CreateAction(
+ [[nodiscard]] auto CreateAction(
ArtifactDigest const& root_digest,
std::vector<std::string> const& command,
std::vector<std::string> const& output_files,
std::vector<std::string> const& output_dirs,
std::map<std::string, std::string> const& env_vars,
- std::map<std::string, std::string> const& properties) noexcept
+ std::map<std::string, std::string> const& properties) const noexcept
-> IExecutionAction::Ptr final {
return IExecutionAction::Ptr{new LocalAction{storage_,
root_digest,
@@ -79,7 +79,7 @@ class LocalApi final : public IExecutionApi {
std::vector<Artifact::ObjectInfo> const& artifacts_info,
std::vector<std::filesystem::path> const& output_paths,
std::optional<gsl::not_null<IExecutionApi*>> const& /*alternative*/ =
- std::nullopt) noexcept -> bool final {
+ std::nullopt) const noexcept -> bool final {
if (artifacts_info.size() != output_paths.size()) {
Logger::Log(LogLevel::Error,
"different number of digests and output paths.");
@@ -143,7 +143,7 @@ class LocalApi final : public IExecutionApi {
[[nodiscard]] auto RetrieveToFds(
std::vector<Artifact::ObjectInfo> const& artifacts_info,
std::vector<int> const& fds,
- bool raw_tree) noexcept -> bool final {
+ bool raw_tree) const noexcept -> bool final {
auto dumper = StreamDumper<LocalCasReader>{storage_->CAS()};
return CommonRetrieveToFds(
artifacts_info,
@@ -171,7 +171,7 @@ class LocalApi final : public IExecutionApi {
// NOLINTNEXTLINE(misc-no-recursion)
[[nodiscard]] auto RetrieveToCas(
std::vector<Artifact::ObjectInfo> const& artifacts_info,
- gsl::not_null<IExecutionApi*> const& api) noexcept -> bool final {
+ gsl::not_null<IExecutionApi*> const& api) const noexcept -> bool final {
// Return immediately if target CAS is this CAS
if (this == api) {
@@ -249,7 +249,7 @@ class LocalApi final : public IExecutionApi {
}
[[nodiscard]] auto RetrieveToMemory(
- Artifact::ObjectInfo const& artifact_info) noexcept
+ Artifact::ObjectInfo const& artifact_info) const noexcept
-> std::optional<std::string> override {
std::optional<std::filesystem::path> location{};
if (IsTreeObject(artifact_info.type)) {
@@ -271,7 +271,7 @@ class LocalApi final : public IExecutionApi {
}
[[nodiscard]] auto Upload(ArtifactBlobContainer&& blobs,
- bool /*skip_find_missing*/) noexcept
+ bool /*skip_find_missing*/) const noexcept
-> bool final {
for (auto const& blob : blobs.Blobs()) {
auto const is_tree = NativeSupport::IsTree(
@@ -288,8 +288,8 @@ class LocalApi final : public IExecutionApi {
}
[[nodiscard]] auto UploadTree(
- std::vector<DependencyGraph::NamedArtifactNodePtr> const&
- artifacts) noexcept -> std::optional<ArtifactDigest> final {
+ std::vector<DependencyGraph::NamedArtifactNodePtr> const& artifacts)
+ const noexcept -> std::optional<ArtifactDigest> final {
auto build_root = DirectoryTree::FromNamedArtifacts(artifacts);
if (not build_root) {
Logger::Log(LogLevel::Debug,
diff --git a/src/buildtool/execution_api/remote/bazel/bazel_api.cpp b/src/buildtool/execution_api/remote/bazel/bazel_api.cpp
index 96acd065..04cae278 100644
--- a/src/buildtool/execution_api/remote/bazel/bazel_api.cpp
+++ b/src/buildtool/execution_api/remote/bazel/bazel_api.cpp
@@ -51,7 +51,7 @@ namespace {
[[nodiscard]] auto RetrieveToCas(
std::vector<bazel_re::Digest> const& digests,
- gsl::not_null<IExecutionApi*> const& api,
+ gsl::not_null<const IExecutionApi*> const& api,
std::shared_ptr<BazelNetwork> const& network,
std::unordered_map<ArtifactDigest, Artifact::ObjectInfo> const&
info_map) noexcept -> bool {
@@ -98,8 +98,8 @@ namespace {
[[nodiscard]] auto RetrieveToCasSplitted(
Artifact::ObjectInfo const& artifact_info,
- gsl::not_null<IExecutionApi*> const& this_api,
- gsl::not_null<IExecutionApi*> const& other_api,
+ gsl::not_null<const IExecutionApi*> const& this_api,
+ gsl::not_null<const IExecutionApi*> const& other_api,
std::shared_ptr<BazelNetwork> const& network,
std::unordered_map<ArtifactDigest, Artifact::ObjectInfo> const&
info_map) noexcept -> bool {
@@ -206,7 +206,7 @@ auto BazelApi::CreateAction(
std::vector<std::string> const& output_files,
std::vector<std::string> const& output_dirs,
std::map<std::string, std::string> const& env_vars,
- std::map<std::string, std::string> const& properties) noexcept
+ std::map<std::string, std::string> const& properties) const noexcept
-> IExecutionAction::Ptr {
return std::unique_ptr<BazelAction>{new BazelAction{network_,
root_digest,
@@ -221,8 +221,8 @@ auto BazelApi::CreateAction(
[[nodiscard]] auto BazelApi::RetrieveToPaths(
std::vector<Artifact::ObjectInfo> const& artifacts_info,
std::vector<std::filesystem::path> const& output_paths,
- std::optional<gsl::not_null<IExecutionApi*>> const& alternative) noexcept
- -> bool {
+ std::optional<gsl::not_null<IExecutionApi*>> const& alternative)
+ const noexcept -> bool {
if (artifacts_info.size() != output_paths.size()) {
Logger::Log(LogLevel::Warning,
"different number of digests and output paths.");
@@ -299,7 +299,7 @@ auto BazelApi::CreateAction(
[[nodiscard]] auto BazelApi::RetrieveToFds(
std::vector<Artifact::ObjectInfo> const& artifacts_info,
std::vector<int> const& fds,
- bool raw_tree) noexcept -> bool {
+ bool raw_tree) const noexcept -> bool {
auto dumper = StreamDumper<BazelNetworkReader>{network_->CreateReader()};
return CommonRetrieveToFds(
artifacts_info,
@@ -315,7 +315,7 @@ auto BazelApi::CreateAction(
// NOLINTNEXTLINE(misc-no-recursion)
[[nodiscard]] auto BazelApi::RetrieveToCas(
std::vector<Artifact::ObjectInfo> const& artifacts_info,
- gsl::not_null<IExecutionApi*> const& api) noexcept -> bool {
+ gsl::not_null<IExecutionApi*> const& api) const noexcept -> bool {
// Return immediately if target CAS is this CAS
if (this == api) {
@@ -363,7 +363,7 @@ auto BazelApi::CreateAction(
std::vector<Artifact::ObjectInfo> const& artifacts_info,
gsl::not_null<IExecutionApi*> const& api,
std::size_t jobs,
- bool use_blob_splitting) noexcept -> bool {
+ bool use_blob_splitting) const noexcept -> bool {
// Return immediately if target CAS is this CAS
if (this == api) {
@@ -431,7 +431,7 @@ auto BazelApi::CreateAction(
}
[[nodiscard]] auto BazelApi::RetrieveToMemory(
- Artifact::ObjectInfo const& artifact_info) noexcept
+ Artifact::ObjectInfo const& artifact_info) const noexcept
-> std::optional<std::string> {
auto reader = network_->CreateReader();
if (auto blob = reader.ReadSingleBlob(artifact_info.digest)) {
@@ -441,7 +441,8 @@ auto BazelApi::CreateAction(
}
[[nodiscard]] auto BazelApi::Upload(ArtifactBlobContainer&& blobs,
- bool skip_find_missing) noexcept -> bool {
+ bool skip_find_missing) const noexcept
+ -> bool {
auto bazel_blobs = ConvertToBazelBlobContainer(std::move(blobs));
return bazel_blobs ? network_->UploadBlobs(std::move(*bazel_blobs),
skip_find_missing)
@@ -449,8 +450,8 @@ auto BazelApi::CreateAction(
}
[[nodiscard]] auto BazelApi::UploadTree(
- std::vector<DependencyGraph::NamedArtifactNodePtr> const&
- artifacts) noexcept -> std::optional<ArtifactDigest> {
+ std::vector<DependencyGraph::NamedArtifactNodePtr> const& artifacts)
+ const noexcept -> std::optional<ArtifactDigest> {
auto build_root = DirectoryTree::FromNamedArtifacts(artifacts);
if (not build_root) {
Logger::Log(LogLevel::Debug,
diff --git a/src/buildtool/execution_api/remote/bazel/bazel_api.hpp b/src/buildtool/execution_api/remote/bazel/bazel_api.hpp
index 9d6f2964..62080bf1 100644
--- a/src/buildtool/execution_api/remote/bazel/bazel_api.hpp
+++ b/src/buildtool/execution_api/remote/bazel/bazel_api.hpp
@@ -49,13 +49,13 @@ class BazelApi final : public IExecutionApi {
auto operator=(BazelApi&&) -> BazelApi& = delete;
~BazelApi() final;
- auto CreateAction(
+ [[nodiscard]] auto CreateAction(
ArtifactDigest const& root_digest,
std::vector<std::string> const& command,
std::vector<std::string> const& output_files,
std::vector<std::string> const& output_dirs,
std::map<std::string, std::string> const& env_vars,
- std::map<std::string, std::string> const& properties) noexcept
+ std::map<std::string, std::string> const& properties) const noexcept
-> IExecutionAction::Ptr final;
// NOLINTNEXTLINE(google-default-arguments)
@@ -63,29 +63,30 @@ class BazelApi final : public IExecutionApi {
std::vector<Artifact::ObjectInfo> const& artifacts_info,
std::vector<std::filesystem::path> const& output_paths,
std::optional<gsl::not_null<IExecutionApi*>> const& alternative =
- std::nullopt) noexcept -> bool final;
+ std::nullopt) const noexcept -> bool final;
[[nodiscard]] auto RetrieveToFds(
std::vector<Artifact::ObjectInfo> const& artifacts_info,
std::vector<int> const& fds,
- bool raw_tree) noexcept -> bool final;
+ bool raw_tree) const noexcept -> bool final;
[[nodiscard]] auto ParallelRetrieveToCas(
std::vector<Artifact::ObjectInfo> const& artifacts_info,
gsl::not_null<IExecutionApi*> const& api,
std::size_t jobs,
- bool use_blob_splitting) noexcept -> bool final;
+ bool use_blob_splitting) const noexcept -> bool final;
[[nodiscard]] auto RetrieveToCas(
std::vector<Artifact::ObjectInfo> const& artifacts_info,
- gsl::not_null<IExecutionApi*> const& api) noexcept -> bool final;
+ gsl::not_null<IExecutionApi*> const& api) const noexcept -> bool final;
[[nodiscard]] auto Upload(ArtifactBlobContainer&& blobs,
- bool skip_find_missing) noexcept -> bool final;
+ bool skip_find_missing) const noexcept
+ -> bool final;
[[nodiscard]] auto UploadTree(
- std::vector<DependencyGraph::NamedArtifactNodePtr> const&
- artifacts) noexcept -> std::optional<ArtifactDigest> final;
+ std::vector<DependencyGraph::NamedArtifactNodePtr> const& artifacts)
+ const noexcept -> std::optional<ArtifactDigest> final;
[[nodiscard]] auto IsAvailable(ArtifactDigest const& digest) const noexcept
-> bool final;
@@ -94,7 +95,7 @@ class BazelApi final : public IExecutionApi {
const noexcept -> std::vector<ArtifactDigest> final;
[[nodiscard]] auto RetrieveToMemory(
- Artifact::ObjectInfo const& artifact_info) noexcept
+ Artifact::ObjectInfo const& artifact_info) const noexcept
-> std::optional<std::string> final;
[[nodiscard]] auto SplitBlob(ArtifactDigest const& blob_digest)