diff options
Diffstat (limited to 'src')
24 files changed, 72 insertions, 62 deletions
diff --git a/src/buildtool/build_engine/target_map/TARGETS b/src/buildtool/build_engine/target_map/TARGETS index ae56d784..da78656e 100644 --- a/src/buildtool/build_engine/target_map/TARGETS +++ b/src/buildtool/build_engine/target_map/TARGETS @@ -72,6 +72,7 @@ , ["src/buildtool/serve_api/remote", "serve_api"] , ["src/buildtool/serve_api/remote", "config"] , ["src/buildtool/common", "common"] + , ["src/buildtool/common", "artifact_digest_factory"] , ["src/buildtool/common", "config"] , ["src/buildtool/progress_reporting", "progress"] , ["src/buildtool/crypto", "hasher"] diff --git a/src/buildtool/build_engine/target_map/built_in_rules.cpp b/src/buildtool/build_engine/target_map/built_in_rules.cpp index 0237e450..b7b457b5 100644 --- a/src/buildtool/build_engine/target_map/built_in_rules.cpp +++ b/src/buildtool/build_engine/target_map/built_in_rules.cpp @@ -33,6 +33,7 @@ #include "src/buildtool/build_engine/target_map/export.hpp" #include "src/buildtool/build_engine/target_map/utils.hpp" #include "src/buildtool/common/artifact_description.hpp" +#include "src/buildtool/common/artifact_digest_factory.hpp" #include "src/buildtool/common/repository_config.hpp" #include "src/utils/cpp/path.hpp" #include "src/utils/cpp/vector.hpp" @@ -271,7 +272,7 @@ void BlobGenRuleWithDeps( auto stage = ExpressionPtr{Expression::map_t{ name_val->String(), ExpressionPtr{ArtifactDescription::CreateKnown( - ArtifactDigest::Create<ObjectType::File>( + ArtifactDigestFactory::HashDataAs<ObjectType::File>( context->storage->GetHashFunction(), data_val->String()), blob_type)}}}; diff --git a/src/buildtool/build_engine/target_map/target_map.cpp b/src/buildtool/build_engine/target_map/target_map.cpp index 26935f09..75ba5cd3 100644 --- a/src/buildtool/build_engine/target_map/target_map.cpp +++ b/src/buildtool/build_engine/target_map/target_map.cpp @@ -38,6 +38,7 @@ #include "src/buildtool/build_engine/target_map/built_in_rules.hpp" #include "src/buildtool/build_engine/target_map/utils.hpp" #include "src/buildtool/common/artifact_description.hpp" +#include "src/buildtool/common/artifact_digest_factory.hpp" #include "src/buildtool/common/repository_config.hpp" #include "src/buildtool/common/statistics.hpp" #include "src/buildtool/logging/log_level.hpp" @@ -760,7 +761,7 @@ void withDependencies( } blobs.emplace_back(data->String()); return ExpressionPtr{ArtifactDescription::CreateKnown( - ArtifactDigest::Create<ObjectType::File>( + ArtifactDigestFactory::HashDataAs<ObjectType::File>( context->storage->GetHashFunction(), data->String()), ObjectType::File)}; }}, @@ -781,7 +782,7 @@ void withDependencies( blobs.emplace_back(data->String()); return ExpressionPtr{ArtifactDescription::CreateKnown( - ArtifactDigest::Create<ObjectType::Symlink>( + ArtifactDigestFactory::HashDataAs<ObjectType::Symlink>( context->storage->GetHashFunction(), data->String()), ObjectType::Symlink)}; }}, diff --git a/src/buildtool/common/artifact_digest.hpp b/src/buildtool/common/artifact_digest.hpp index 24097776..1f6cde9e 100644 --- a/src/buildtool/common/artifact_digest.hpp +++ b/src/buildtool/common/artifact_digest.hpp @@ -23,9 +23,7 @@ #include "gsl/gsl" #include "src/buildtool/common/bazel_types.hpp" #include "src/buildtool/compatibility/native_support.hpp" -#include "src/buildtool/crypto/hash_function.hpp" #include "src/buildtool/crypto/hash_info.hpp" -#include "src/buildtool/file_system/object_type.hpp" #include "src/utils/cpp/gsl.hpp" #include "src/utils/cpp/hash_combine.hpp" @@ -78,24 +76,6 @@ class ArtifactDigest final { static_cast<bazel_re::Digest>(other)); } - template <ObjectType kType> - [[nodiscard]] static auto Create(HashFunction hash_function, - std::string const& content) noexcept - -> ArtifactDigest { - if constexpr (kType == ObjectType::Tree) { - return ArtifactDigest{ - hash_function.HashTreeData(content).HexString(), - content.size(), - /*is_tree=*/true}; - } - else { - return ArtifactDigest{ - hash_function.HashBlobData(content).HexString(), - content.size(), - /*is_tree=*/false}; - } - } - private: std::size_t size_{}; std::string hash_{}; diff --git a/src/buildtool/execution_api/bazel_msg/TARGETS b/src/buildtool/execution_api/bazel_msg/TARGETS index f434f816..c3a59b87 100644 --- a/src/buildtool/execution_api/bazel_msg/TARGETS +++ b/src/buildtool/execution_api/bazel_msg/TARGETS @@ -38,6 +38,7 @@ , ["src/buildtool/file_system", "file_system_manager"] , ["src/buildtool/file_system", "git_repo"] , ["src/buildtool/common", "bazel_digest_factory"] + , ["src/buildtool/common", "artifact_digest_factory"] ] , "stage": ["src", "buildtool", "execution_api", "bazel_msg"] } diff --git a/src/buildtool/execution_api/bazel_msg/bazel_msg_factory.cpp b/src/buildtool/execution_api/bazel_msg/bazel_msg_factory.cpp index f4c7baad..a0d9e8a8 100644 --- a/src/buildtool/execution_api/bazel_msg/bazel_msg_factory.cpp +++ b/src/buildtool/execution_api/bazel_msg/bazel_msg_factory.cpp @@ -25,6 +25,7 @@ #include <utility> // std::move #include <vector> +#include "src/buildtool/common/artifact_digest_factory.hpp" #include "src/buildtool/common/bazel_digest_factory.hpp" #include "src/buildtool/common/bazel_types.hpp" #include "src/buildtool/compatibility/native_support.hpp" @@ -149,8 +150,8 @@ struct DirectoryNodeBundle final { // SHA256 is used since bazel types are processed here. HashFunction const hash_function{HashFunction::Type::PlainSHA256}; - auto digest = - ArtifactDigest::Create<ObjectType::File>(hash_function, *content); + auto digest = ArtifactDigestFactory::HashDataAs<ObjectType::File>( + hash_function, *content); return DirectoryNodeBundle{ .message = CreateDirectoryNode(dir_name, digest), diff --git a/src/buildtool/execution_api/common/TARGETS b/src/buildtool/execution_api/common/TARGETS index 9e55c71c..5965838b 100644 --- a/src/buildtool/execution_api/common/TARGETS +++ b/src/buildtool/execution_api/common/TARGETS @@ -25,6 +25,7 @@ , ["src/buildtool/file_system", "git_repo"] , ["src/buildtool/execution_engine/dag", "dag"] ] + , "private-deps": [["src/buildtool/common", "artifact_digest_factory"]] , "stage": ["src", "buildtool", "execution_api", "common"] } , "bytestream-common": diff --git a/src/buildtool/execution_api/common/tree_reader_utils.cpp b/src/buildtool/execution_api/common/tree_reader_utils.cpp index 0573d89e..151594d0 100644 --- a/src/buildtool/execution_api/common/tree_reader_utils.cpp +++ b/src/buildtool/execution_api/common/tree_reader_utils.cpp @@ -19,6 +19,7 @@ #include "nlohmann/json.hpp" #include "src/buildtool/common/artifact_digest.hpp" +#include "src/buildtool/common/artifact_digest_factory.hpp" #include "src/buildtool/crypto/hash_function.hpp" #include "src/buildtool/file_system/object_type.hpp" #include "src/buildtool/logging/log_level.hpp" @@ -45,8 +46,8 @@ namespace { -> Artifact::ObjectInfo { return Artifact::ObjectInfo{ - .digest = ArtifactDigest::Create<ObjectType::File>(hash_function, - node.target()), + .digest = ArtifactDigestFactory::HashDataAs<ObjectType::File>( + hash_function, node.target()), .type = ObjectType::Symlink}; } diff --git a/src/buildtool/execution_api/git/TARGETS b/src/buildtool/execution_api/git/TARGETS index 34b2e4dd..68f2b019 100644 --- a/src/buildtool/execution_api/git/TARGETS +++ b/src/buildtool/execution_api/git/TARGETS @@ -5,6 +5,7 @@ , "deps": [ ["@", "gsl", "", "gsl"] , ["src/buildtool/common", "common"] + , ["src/buildtool/common", "artifact_digest_factory"] , ["src/buildtool/common", "config"] , ["src/buildtool/execution_api/bazel_msg", "bazel_msg_factory"] , ["src/buildtool/execution_api/common", "common"] diff --git a/src/buildtool/execution_api/git/git_api.hpp b/src/buildtool/execution_api/git/git_api.hpp index 43afc14a..20814420 100644 --- a/src/buildtool/execution_api/git/git_api.hpp +++ b/src/buildtool/execution_api/git/git_api.hpp @@ -24,6 +24,7 @@ #include "gsl/gsl" #include "src/buildtool/common/artifact_digest.hpp" +#include "src/buildtool/common/artifact_digest_factory.hpp" #include "src/buildtool/common/repository_config.hpp" #include "src/buildtool/crypto/hash_function.hpp" #include "src/buildtool/execution_api/bazel_msg/bazel_msg_factory.hpp" @@ -231,8 +232,9 @@ class GitApi final : public IExecutionApi { if (not entry_content) { return false; } - auto digest = ArtifactDigest::Create<ObjectType::File>( - hash_function, *entry_content); + auto digest = + ArtifactDigestFactory::HashDataAs<ObjectType::File>( + hash_function, *entry_content); // Collect blob and upload to remote CAS if transfer // size reached. if (not UpdateContainerAndUpload<ArtifactDigest>( @@ -263,10 +265,10 @@ class GitApi final : public IExecutionApi { ArtifactDigest digest = IsTreeObject(info.type) - ? ArtifactDigest::Create<ObjectType::Tree>(hash_function, - *content) - : ArtifactDigest::Create<ObjectType::File>(hash_function, - *content); + ? ArtifactDigestFactory::HashDataAs<ObjectType::Tree>( + hash_function, *content) + : ArtifactDigestFactory::HashDataAs<ObjectType::File>( + hash_function, *content); // Collect blob and upload to remote CAS if transfer size reached. if (not UpdateContainerAndUpload<ArtifactDigest>( diff --git a/src/buildtool/execution_api/local/TARGETS b/src/buildtool/execution_api/local/TARGETS index e457d712..61992aef 100644 --- a/src/buildtool/execution_api/local/TARGETS +++ b/src/buildtool/execution_api/local/TARGETS @@ -27,6 +27,7 @@ , ["@", "grpc", "", "grpc++"] , "context" , ["src/buildtool/common", "common"] + , ["src/buildtool/common", "artifact_digest_factory"] , ["src/buildtool/common", "config"] , ["src/buildtool/storage", "storage"] , ["src/buildtool/execution_api/common", "common"] diff --git a/src/buildtool/execution_api/local/local_api.hpp b/src/buildtool/execution_api/local/local_api.hpp index 0c6e9a1f..b3e7808d 100644 --- a/src/buildtool/execution_api/local/local_api.hpp +++ b/src/buildtool/execution_api/local/local_api.hpp @@ -31,6 +31,7 @@ #include "grpcpp/support/status.h" #include "gsl/gsl" #include "src/buildtool/common/artifact_digest.hpp" +#include "src/buildtool/common/artifact_digest_factory.hpp" #include "src/buildtool/common/repository_config.hpp" #include "src/buildtool/compatibility/compatibility.hpp" #include "src/buildtool/execution_api/bazel_msg/bazel_blob_container.hpp" @@ -209,10 +210,10 @@ class LocalApi final : public IExecutionApi { // storage_.ReadTreeInfos() will contain 0 as size. ArtifactDigest digest = IsTreeObject(info.type) - ? ArtifactDigest::Create<ObjectType::Tree>( + ? ArtifactDigestFactory::HashDataAs<ObjectType::Tree>( local_context_.storage_config->hash_function, *content) - : ArtifactDigest::Create<ObjectType::File>( + : ArtifactDigestFactory::HashDataAs<ObjectType::File>( local_context_.storage_config->hash_function, *content); diff --git a/src/buildtool/execution_api/local/local_response.hpp b/src/buildtool/execution_api/local/local_response.hpp index 68ab0bcc..8e563c5d 100644 --- a/src/buildtool/execution_api/local/local_response.hpp +++ b/src/buildtool/execution_api/local/local_response.hpp @@ -20,6 +20,7 @@ #include <utility> #include "gsl/gsl" +#include "src/buildtool/common/artifact_digest_factory.hpp" #include "src/buildtool/crypto/hash_function.hpp" #include "src/buildtool/execution_api/common/execution_response.hpp" #include "src/buildtool/execution_api/local/local_action.hpp" @@ -140,8 +141,9 @@ class LocalResponse final : public IExecutionResponse { artifacts.emplace( link.path(), Artifact::ObjectInfo{ - .digest = ArtifactDigest::Create<ObjectType::File>( - storage_.GetHashFunction(), link.target()), + .digest = + ArtifactDigestFactory::HashDataAs<ObjectType::File>( + storage_.GetHashFunction(), link.target()), .type = ObjectType::Symlink}); } catch (...) { return; @@ -152,8 +154,9 @@ class LocalResponse final : public IExecutionResponse { artifacts.emplace( link.path(), Artifact::ObjectInfo{ - .digest = ArtifactDigest::Create<ObjectType::File>( - storage_.GetHashFunction(), link.target()), + .digest = + ArtifactDigestFactory::HashDataAs<ObjectType::File>( + storage_.GetHashFunction(), link.target()), .type = ObjectType::Symlink}); dir_symlinks.emplace(link.path()); // add it to set } catch (...) { diff --git a/src/buildtool/execution_api/remote/TARGETS b/src/buildtool/execution_api/remote/TARGETS index 8d057783..e415ce1c 100644 --- a/src/buildtool/execution_api/remote/TARGETS +++ b/src/buildtool/execution_api/remote/TARGETS @@ -47,6 +47,7 @@ , "stage": ["src", "buildtool", "execution_api", "remote"] , "private-deps": [ ["src/buildtool/common", "common"] + , ["src/buildtool/common", "artifact_digest_factory"] , ["src/buildtool/common", "bazel_digest_factory"] , ["src/buildtool/file_system", "file_system_manager"] , ["src/buildtool/file_system", "object_type"] diff --git a/src/buildtool/execution_api/remote/bazel/bazel_network_reader.cpp b/src/buildtool/execution_api/remote/bazel/bazel_network_reader.cpp index 09ebb662..be28d58e 100644 --- a/src/buildtool/execution_api/remote/bazel/bazel_network_reader.cpp +++ b/src/buildtool/execution_api/remote/bazel/bazel_network_reader.cpp @@ -16,6 +16,7 @@ #include <algorithm> +#include "src/buildtool/common/artifact_digest_factory.hpp" #include "src/buildtool/execution_api/bazel_msg/bazel_msg_factory.hpp" #include "src/buildtool/execution_api/common/message_limits.hpp" #include "src/buildtool/file_system/file_system_manager.hpp" @@ -149,7 +150,7 @@ auto BazelNetworkReader::MakeAuxiliaryMap( result.reserve(full_tree.size()); for (auto& dir : full_tree) { try { - result.emplace(ArtifactDigest::Create<ObjectType::File>( + result.emplace(ArtifactDigestFactory::HashDataAs<ObjectType::File>( hash_function_, dir.SerializeAsString()), std::move(dir)); } catch (...) { @@ -222,10 +223,10 @@ auto BazelNetworkReader::Validate(BazelBlob const& blob) const noexcept -> bool { ArtifactDigest const rehashed_digest = NativeSupport::IsTree(blob.digest.hash()) - ? ArtifactDigest::Create<ObjectType::Tree>(hash_function_, - *blob.data) - : ArtifactDigest::Create<ObjectType::File>(hash_function_, - *blob.data); + ? ArtifactDigestFactory::HashDataAs<ObjectType::Tree>( + hash_function_, *blob.data) + : ArtifactDigestFactory::HashDataAs<ObjectType::File>( + hash_function_, *blob.data); if (rehashed_digest == ArtifactDigest{blob.digest}) { return true; } diff --git a/src/buildtool/execution_api/remote/bazel/bazel_response.cpp b/src/buildtool/execution_api/remote/bazel/bazel_response.cpp index aa4a64b6..a5ac6ff1 100644 --- a/src/buildtool/execution_api/remote/bazel/bazel_response.cpp +++ b/src/buildtool/execution_api/remote/bazel/bazel_response.cpp @@ -17,6 +17,7 @@ #include <cstddef> #include "gsl/gsl" +#include "src/buildtool/common/artifact_digest_factory.hpp" #include "src/buildtool/common/bazel_digest_factory.hpp" #include "src/buildtool/compatibility/native_support.hpp" #include "src/buildtool/crypto/hash_function.hpp" @@ -104,8 +105,9 @@ void BazelResponse::Populate() noexcept { artifacts.emplace( link.path(), Artifact::ObjectInfo{ - .digest = ArtifactDigest::Create<ObjectType::File>( - network_->GetHashFunction(), link.target()), + .digest = + ArtifactDigestFactory::HashDataAs<ObjectType::File>( + network_->GetHashFunction(), link.target()), .type = ObjectType::Symlink}); } catch (...) { return; @@ -116,8 +118,9 @@ void BazelResponse::Populate() noexcept { artifacts.emplace( link.path(), Artifact::ObjectInfo{ - .digest = ArtifactDigest::Create<ObjectType::File>( - network_->GetHashFunction(), link.target()), + .digest = + ArtifactDigestFactory::HashDataAs<ObjectType::File>( + network_->GetHashFunction(), link.target()), .type = ObjectType::Symlink}); dir_symlinks.emplace(link.path()); // add it to set } catch (...) { diff --git a/src/buildtool/execution_engine/executor/TARGETS b/src/buildtool/execution_engine/executor/TARGETS index 85e48a00..fb407a8d 100644 --- a/src/buildtool/execution_engine/executor/TARGETS +++ b/src/buildtool/execution_engine/executor/TARGETS @@ -7,6 +7,7 @@ , ["src/buildtool/logging", "log_level"] , ["src/buildtool/logging", "logging"] , ["src/buildtool/common", "common"] + , ["src/buildtool/common", "artifact_digest_factory"] , ["src/buildtool/common", "tree"] , ["src/buildtool/compatibility", "compatibility"] , ["src/buildtool/file_system", "file_system_manager"] diff --git a/src/buildtool/execution_engine/executor/executor.hpp b/src/buildtool/execution_engine/executor/executor.hpp index ad2fefea..0cf54eec 100644 --- a/src/buildtool/execution_engine/executor/executor.hpp +++ b/src/buildtool/execution_engine/executor/executor.hpp @@ -29,6 +29,7 @@ #include "gsl/gsl" #include "src/buildtool/common/artifact_digest.hpp" +#include "src/buildtool/common/artifact_digest_factory.hpp" #include "src/buildtool/common/statistics.hpp" #include "src/buildtool/common/tree.hpp" #include "src/buildtool/compatibility/compatibility.hpp" @@ -465,8 +466,8 @@ class ExecutorImpl { if (not content.has_value()) { return std::nullopt; } - auto digest = - ArtifactDigest::Create<ObjectType::File>(hash_function, *content); + auto digest = ArtifactDigestFactory::HashDataAs<ObjectType::File>( + hash_function, *content); if (not api.Upload(ArtifactBlobContainer{ {ArtifactBlob{digest, std::move(*content), diff --git a/src/buildtool/file_system/object_cas.hpp b/src/buildtool/file_system/object_cas.hpp index 79ba70da..edf43854 100644 --- a/src/buildtool/file_system/object_cas.hpp +++ b/src/buildtool/file_system/object_cas.hpp @@ -125,7 +125,7 @@ class ObjectCAS { [[nodiscard]] auto CreateDigest(std::string const& bytes) const noexcept -> std::optional<ArtifactDigest> { - return ArtifactDigest::Create<kType>(hash_function_, bytes); + return ArtifactDigestFactory::HashDataAs<kType>(hash_function_, bytes); } [[nodiscard]] auto CreateDigest(std::filesystem::path const& file_path) diff --git a/src/buildtool/graph_traverser/TARGETS b/src/buildtool/graph_traverser/TARGETS index a44d25a7..f2f77dd2 100644 --- a/src/buildtool/graph_traverser/TARGETS +++ b/src/buildtool/graph_traverser/TARGETS @@ -5,6 +5,7 @@ , "deps": [ ["src/buildtool/common", "cli"] , ["src/buildtool/common", "common"] + , ["src/buildtool/common", "artifact_digest_factory"] , ["src/buildtool/common", "tree"] , ["src/buildtool/execution_engine/dag", "dag"] , ["src/buildtool/execution_engine/executor", "context"] diff --git a/src/buildtool/graph_traverser/graph_traverser.hpp b/src/buildtool/graph_traverser/graph_traverser.hpp index b4268111..51a1976d 100644 --- a/src/buildtool/graph_traverser/graph_traverser.hpp +++ b/src/buildtool/graph_traverser/graph_traverser.hpp @@ -32,6 +32,7 @@ #include "fmt/core.h" #include "gsl/gsl" #include "src/buildtool/common/artifact_digest.hpp" +#include "src/buildtool/common/artifact_digest_factory.hpp" #include "src/buildtool/common/cli.hpp" #include "src/buildtool/common/tree.hpp" #include "src/buildtool/execution_api/common/artifact_blob_container.hpp" @@ -274,7 +275,7 @@ class GraphTraverser { std::vector<std::string> const& blobs) const noexcept -> bool { ArtifactBlobContainer container; for (auto const& blob : blobs) { - auto digest = ArtifactDigest::Create<ObjectType::File>( + auto digest = ArtifactDigestFactory::HashDataAs<ObjectType::File>( context_.apis->hash_function, blob); Logger::Log(logger_, LogLevel::Trace, [&]() { return fmt::format( diff --git a/src/buildtool/storage/TARGETS b/src/buildtool/storage/TARGETS index 7ca3f6be..ce54901e 100644 --- a/src/buildtool/storage/TARGETS +++ b/src/buildtool/storage/TARGETS @@ -6,6 +6,7 @@ [ "backend_description" , ["@", "gsl", "", "gsl"] , ["src/buildtool/common", "common"] + , ["src/buildtool/common", "artifact_digest_factory"] , ["src/buildtool/common/remote", "remote_common"] , ["src/buildtool/compatibility", "compatibility"] , ["src/buildtool/file_system", "file_system_manager"] diff --git a/src/buildtool/storage/config.hpp b/src/buildtool/storage/config.hpp index 0841f9d5..81f14feb 100644 --- a/src/buildtool/storage/config.hpp +++ b/src/buildtool/storage/config.hpp @@ -25,6 +25,7 @@ #include "gsl/gsl" #include "src/buildtool/common/artifact_digest.hpp" +#include "src/buildtool/common/artifact_digest_factory.hpp" #include "src/buildtool/common/remote/remote_common.hpp" #include "src/buildtool/compatibility/compatibility.hpp" #include "src/buildtool/crypto/hash_function.hpp" @@ -158,7 +159,7 @@ struct StorageConfig final { [[nodiscard]] auto DefaultBackendDescriptionId() noexcept -> std::string { try { - return ArtifactDigest::Create<ObjectType::File>( + return ArtifactDigestFactory::HashDataAs<ObjectType::File>( hash_function, DescribeBackend(std::nullopt, {}, {}).value()) .hash(); @@ -232,7 +233,8 @@ class StorageConfig::Builder final { remote_address_, remote_platform_properties_, remote_dispatch_); if (desc) { backend_description_id = - ArtifactDigest::Create<ObjectType::File>(hash_function, *desc) + ArtifactDigestFactory::HashDataAs<ObjectType::File>( + hash_function, *desc) .hash(); } else { diff --git a/src/buildtool/storage/local_ac.tpp b/src/buildtool/storage/local_ac.tpp index 2f67c798..8cc55638 100644 --- a/src/buildtool/storage/local_ac.tpp +++ b/src/buildtool/storage/local_ac.tpp @@ -20,6 +20,7 @@ #include "fmt/core.h" #include "nlohmann/json.hpp" +#include "src/buildtool/common/artifact_digest_factory.hpp" #include "src/buildtool/common/bazel_types.hpp" #include "src/buildtool/logging/log_level.hpp" #include "src/buildtool/storage/local_ac.hpp" @@ -83,18 +84,20 @@ auto LocalAC<kDoGlobalUplink>::LocalUplinkEntry( } } for (auto const& link : result->output_file_symlinks()) { - if (not cas_.LocalUplinkBlob(latest.cas_, - ArtifactDigest::Create<ObjectType::File>( - cas_.GetHashFunction(), link.target()), - /*is_executable=*/false)) { + if (not cas_.LocalUplinkBlob( + latest.cas_, + ArtifactDigestFactory::HashDataAs<ObjectType::File>( + cas_.GetHashFunction(), link.target()), + /*is_executable=*/false)) { return false; } } for (auto const& link : result->output_directory_symlinks()) { - if (not cas_.LocalUplinkBlob(latest.cas_, - ArtifactDigest::Create<ObjectType::File>( - cas_.GetHashFunction(), link.target()), - /*is_executable=*/false)) { + if (not cas_.LocalUplinkBlob( + latest.cas_, + ArtifactDigestFactory::HashDataAs<ObjectType::File>( + cas_.GetHashFunction(), link.target()), + /*is_executable=*/false)) { return false; } } |