summaryrefslogtreecommitdiff
path: root/src/buildtool/execution_api/local/local_cas_reader.cpp
diff options
context:
space:
mode:
authorMaksim Denisov <denisov.maksim@huawei.com>2024-09-03 13:20:22 +0200
committerMaksim Denisov <denisov.maksim@huawei.com>2024-09-09 13:07:13 +0200
commit4cecbc2873cd4ce464a8bf3b3c529830fcd29d0d (patch)
tree1061aeb5c73f18331ff0817b30da9cb0f2d5667b /src/buildtool/execution_api/local/local_cas_reader.cpp
parentc04a25e02be349d36d95edb9df2bed390c352a7d (diff)
downloadjustbuild-4cecbc2873cd4ce464a8bf3b3c529830fcd29d0d.tar.gz
Use ArtifactDigestFactory casts in readers
Diffstat (limited to 'src/buildtool/execution_api/local/local_cas_reader.cpp')
-rw-r--r--src/buildtool/execution_api/local/local_cas_reader.cpp9
1 files changed, 8 insertions, 1 deletions
diff --git a/src/buildtool/execution_api/local/local_cas_reader.cpp b/src/buildtool/execution_api/local/local_cas_reader.cpp
index 3e5ebe7b..2da3bc00 100644
--- a/src/buildtool/execution_api/local/local_cas_reader.cpp
+++ b/src/buildtool/execution_api/local/local_cas_reader.cpp
@@ -23,6 +23,7 @@
#include <vector>
#include "gsl/gsl"
+#include "src/buildtool/common/artifact_digest_factory.hpp"
#include "src/buildtool/crypto/hash_function.hpp"
#include "src/buildtool/execution_api/bazel_msg/bazel_msg_factory.hpp"
#include "src/buildtool/file_system/file_system_manager.hpp"
@@ -52,6 +53,7 @@ auto LocalCasReader::ReadDirectory(ArtifactDigest const& digest) const noexcept
auto LocalCasReader::MakeTree(ArtifactDigest const& root) const noexcept
-> std::optional<bazel_re::Tree> {
+ auto const hash_type = cas_.GetHashFunction().GetType();
try {
std::unordered_map<ArtifactDigest, bazel_re::Directory> directories;
@@ -70,7 +72,12 @@ auto LocalCasReader::MakeTree(ArtifactDigest const& root) const noexcept
return std::nullopt;
}
for (auto const& node : read_dir->directories()) {
- to_check.push(ArtifactDigest{node.digest()});
+ auto digest =
+ ArtifactDigestFactory::FromBazel(hash_type, node.digest());
+ if (not digest) {
+ return std::nullopt;
+ }
+ to_check.push(*std::move(digest));
}
directories.insert_or_assign(std::move(current),
*std::move(read_dir));