diff options
Diffstat (limited to 'src')
6 files changed, 12 insertions, 20 deletions
diff --git a/src/buildtool/common/artifact_digest.hpp b/src/buildtool/common/artifact_digest.hpp index 6b9ecb88..987e654a 100644 --- a/src/buildtool/common/artifact_digest.hpp +++ b/src/buildtool/common/artifact_digest.hpp @@ -32,9 +32,7 @@ // unprefixed hex string as hash. For communication with the execution API it // can be cast to bazel_re::Digest which is the wire format that contains // prefixed hashes in native mode. -class ArtifactDigest { - friend struct std::hash<ArtifactDigest>; - +class ArtifactDigest final { public: ArtifactDigest() noexcept = default; @@ -63,6 +61,7 @@ class ArtifactDigest { } [[nodiscard]] auto size() const noexcept -> std::size_t { return size_; } + [[nodiscard]] auto IsTree() const noexcept -> bool { return is_tree_; } // NOLINTNEXTLINE allow implicit casts [[nodiscard]] operator bazel_re::Digest() const { @@ -134,8 +133,8 @@ struct hash<ArtifactDigest> { [[nodiscard]] auto operator()(ArtifactDigest const& digest) const noexcept -> std::size_t { std::size_t seed{}; - hash_combine(&seed, digest.hash_); - hash_combine(&seed, digest.is_tree_); + hash_combine(&seed, digest.hash()); + hash_combine(&seed, digest.IsTree()); return seed; } }; diff --git a/src/buildtool/execution_api/common/TARGETS b/src/buildtool/execution_api/common/TARGETS index 7d1b5ebe..57394424 100644 --- a/src/buildtool/execution_api/common/TARGETS +++ b/src/buildtool/execution_api/common/TARGETS @@ -89,7 +89,6 @@ [ "common" , ["src/buildtool/execution_api/bazel_msg", "directory_tree"] , ["@", "gsl", "", "gsl"] - , ["src/buildtool/compatibility", "compatibility"] ] , "private-deps": [ ["src/buildtool/file_system", "git_repo"] diff --git a/src/buildtool/execution_api/common/blob_tree.hpp b/src/buildtool/execution_api/common/blob_tree.hpp index 25d0f560..051b0fe2 100644 --- a/src/buildtool/execution_api/common/blob_tree.hpp +++ b/src/buildtool/execution_api/common/blob_tree.hpp @@ -22,7 +22,6 @@ #include <vector> #include "gsl/gsl" -#include "src/buildtool/compatibility/native_support.hpp" #include "src/buildtool/execution_api/bazel_msg/directory_tree.hpp" #include "src/buildtool/execution_api/common/artifact_blob_container.hpp" @@ -38,8 +37,7 @@ class BlobTree { [[nodiscard]] auto Blob() const noexcept -> ArtifactBlob { return blob_; } [[nodiscard]] auto IsTree() const noexcept -> bool { - return NativeSupport::IsTree( - static_cast<bazel_re::Digest>(blob_.digest).hash()); + return blob_.digest.IsTree(); } /// \brief Create a `BlobTree` from a `DirectoryTree`. diff --git a/src/buildtool/execution_api/execution_service/cas_server.cpp b/src/buildtool/execution_api/execution_service/cas_server.cpp index 9960dc96..a2a37e37 100644 --- a/src/buildtool/execution_api/execution_service/cas_server.cpp +++ b/src/buildtool/execution_api/execution_service/cas_server.cpp @@ -103,7 +103,7 @@ auto CASServiceImpl::FindMissingBlobs( logger_.Emit(LogLevel::Trace, "FindMissingBlobs: {}", hash); ArtifactDigest const digest(x); is_in_cas = - NativeSupport::IsTree(hash) + digest.IsTree() ? storage_.CAS().TreePath(digest).has_value() : storage_.CAS().BlobPath(digest, false).has_value(); } @@ -200,7 +200,7 @@ auto CASServiceImpl::BatchReadBlobs( ArtifactDigest const digest(x); auto const path = - NativeSupport::IsTree(x.hash()) + digest.IsTree() ? storage_.CAS().TreePath(digest) : storage_.CAS().BlobPath(digest, /*is_executable=*/false); diff --git a/src/buildtool/execution_api/local/local_api.hpp b/src/buildtool/execution_api/local/local_api.hpp index eadf45b7..59dc1880 100644 --- a/src/buildtool/execution_api/local/local_api.hpp +++ b/src/buildtool/execution_api/local/local_api.hpp @@ -33,7 +33,6 @@ #include "src/buildtool/common/artifact_digest.hpp" #include "src/buildtool/common/repository_config.hpp" #include "src/buildtool/compatibility/compatibility.hpp" -#include "src/buildtool/compatibility/native_support.hpp" #include "src/buildtool/execution_api/bazel_msg/bazel_blob_container.hpp" #include "src/buildtool/execution_api/common/artifact_blob_container.hpp" #include "src/buildtool/execution_api/common/blob_tree.hpp" @@ -262,8 +261,7 @@ class LocalApi final : public IExecutionApi { bool /*skip_find_missing*/) const noexcept -> bool final { for (auto const& blob : blobs.Blobs()) { - auto const is_tree = NativeSupport::IsTree( - static_cast<bazel_re::Digest>(blob.digest).hash()); + auto const is_tree = blob.digest.IsTree(); auto cas_digest = is_tree ? local_context_.storage->CAS().StoreTree(*blob.data) : local_context_.storage->CAS().StoreBlob(*blob.data, @@ -308,7 +306,7 @@ class LocalApi final : public IExecutionApi { [[nodiscard]] auto IsAvailable(ArtifactDigest const& digest) const noexcept -> bool final { return static_cast<bool>( - NativeSupport::IsTree(static_cast<bazel_re::Digest>(digest).hash()) + digest.IsTree() ? local_context_.storage->CAS().TreePath(digest) : local_context_.storage->CAS().BlobPath(digest, false)); } @@ -317,9 +315,8 @@ class LocalApi final : public IExecutionApi { const noexcept -> std::vector<ArtifactDigest> final { std::vector<ArtifactDigest> result; for (auto const& digest : digests) { - auto const& path = - NativeSupport::IsTree( - static_cast<bazel_re::Digest>(digest).hash()) + auto const path = + digest.IsTree() ? local_context_.storage->CAS().TreePath(digest) : local_context_.storage->CAS().BlobPath(digest, false); if (not path) { diff --git a/src/buildtool/execution_engine/executor/executor.hpp b/src/buildtool/execution_engine/executor/executor.hpp index 26e415b1..ad2fefea 100644 --- a/src/buildtool/execution_engine/executor/executor.hpp +++ b/src/buildtool/execution_engine/executor/executor.hpp @@ -351,8 +351,7 @@ class ExecutorImpl { Artifact::ObjectInfo const& info, std::string const& hash) noexcept -> bool { std::optional<std::string> content; - if (NativeSupport::IsTree( - static_cast<bazel_re::Digest>(info.digest).hash())) { + if (info.digest.IsTree()) { // if known tree is not available, recursively upload its content auto tree = ReadGitTree(repo, repo_config, hash); if (not tree) { |