diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/buildtool/execution_api/common/common_api.cpp | 10 | ||||
-rw-r--r-- | src/buildtool/execution_api/common/common_api.hpp | 8 | ||||
-rw-r--r-- | src/buildtool/execution_api/common/execution_api.hpp | 22 | ||||
-rw-r--r-- | src/buildtool/execution_api/git/git_api.hpp | 18 | ||||
-rw-r--r-- | src/buildtool/execution_api/local/local_api.hpp | 18 | ||||
-rw-r--r-- | src/buildtool/execution_api/remote/bazel/bazel_api.cpp | 27 | ||||
-rw-r--r-- | src/buildtool/execution_api/remote/bazel/bazel_api.hpp | 21 |
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) |