From 9fbc8d2985fbb930fd02498238a3fb2ddfb4512e Mon Sep 17 00:00:00 2001 From: Maksim Denisov Date: Tue, 3 Sep 2024 14:56:55 +0200 Subject: Use ArtifactDigestFactory casts in Storage --- src/buildtool/storage/local_ac.tpp | 16 ++++++++++++---- src/buildtool/storage/local_cas.tpp | 16 ++++++++++++---- test/buildtool/storage/local_ac.test.cpp | 3 +-- 3 files changed, 25 insertions(+), 10 deletions(-) diff --git a/src/buildtool/storage/local_ac.tpp b/src/buildtool/storage/local_ac.tpp index 8cc55638..e58c7fb9 100644 --- a/src/buildtool/storage/local_ac.tpp +++ b/src/buildtool/storage/local_ac.tpp @@ -77,9 +77,13 @@ auto LocalAC::LocalUplinkEntry( // Uplink result content for (auto const& file : result->output_files()) { - ArtifactDigest const a_digest{file.digest()}; + auto const digest = ArtifactDigestFactory::FromBazel( + cas_.GetHashFunction().GetType(), file.digest()); + if (not digest) { + return false; + } if (not cas_.LocalUplinkBlob( - latest.cas_, a_digest, file.is_executable())) { + latest.cas_, *digest, file.is_executable())) { return false; } } @@ -102,8 +106,12 @@ auto LocalAC::LocalUplinkEntry( } } for (auto const& directory : result->output_directories()) { - ArtifactDigest const a_digest{directory.tree_digest()}; - if (not cas_.LocalUplinkTree(latest.cas_, a_digest)) { + auto const digest = ArtifactDigestFactory::FromBazel( + cas_.GetHashFunction().GetType(), directory.tree_digest()); + if (not digest) { + return false; + } + if (not cas_.LocalUplinkTree(latest.cas_, *digest)) { return false; } } diff --git a/src/buildtool/storage/local_cas.tpp b/src/buildtool/storage/local_cas.tpp index d43bd18b..8b91f7e4 100644 --- a/src/buildtool/storage/local_cas.tpp +++ b/src/buildtool/storage/local_cas.tpp @@ -217,14 +217,22 @@ auto LocalCAS::LocalUplinkBazelDirectory( // Uplink bazel directory entries. for (auto const& file : dir.files()) { - ArtifactDigest const a_digest{file.digest()}; - if (not LocalUplinkBlob(latest, a_digest, file.is_executable())) { + auto const digest = ArtifactDigestFactory::FromBazel( + hash_function_.GetType(), file.digest()); + if (not digest) { + return false; + } + if (not LocalUplinkBlob(latest, *digest, file.is_executable())) { return false; } } for (auto const& directory : dir.directories()) { - ArtifactDigest const a_digest{directory.digest()}; - if (not LocalUplinkBazelDirectory(latest, a_digest, seen)) { + auto const digest = ArtifactDigestFactory::FromBazel( + hash_function_.GetType(), directory.digest()); + if (not digest) { + return false; + } + if (not LocalUplinkBazelDirectory(latest, *digest, seen)) { return false; } } diff --git a/test/buildtool/storage/local_ac.test.cpp b/test/buildtool/storage/local_ac.test.cpp index 543a09b5..73320ce4 100644 --- a/test/buildtool/storage/local_ac.test.cpp +++ b/test/buildtool/storage/local_ac.test.cpp @@ -144,8 +144,7 @@ auto RunDummyExecution(gsl::not_null const*> const& ac, bazel_re::OutputFile out{}; out.set_path(seed); auto digest = cas_->StoreBlob(""); - out.set_allocated_digest( - gsl::owner{new bazel_re::Digest{*digest}}); + *out.mutable_digest() = ArtifactDigestFactory::ToBazel(*digest); out.set_is_executable(false); return out; }(); -- cgit v1.2.3