summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/buildtool/build_engine/target_map/TARGETS1
-rw-r--r--src/buildtool/build_engine/target_map/built_in_rules.cpp3
-rw-r--r--src/buildtool/build_engine/target_map/target_map.cpp5
-rw-r--r--src/buildtool/common/artifact_digest.hpp20
-rw-r--r--src/buildtool/execution_api/bazel_msg/TARGETS1
-rw-r--r--src/buildtool/execution_api/bazel_msg/bazel_msg_factory.cpp5
-rw-r--r--src/buildtool/execution_api/common/TARGETS1
-rw-r--r--src/buildtool/execution_api/common/tree_reader_utils.cpp5
-rw-r--r--src/buildtool/execution_api/git/TARGETS1
-rw-r--r--src/buildtool/execution_api/git/git_api.hpp14
-rw-r--r--src/buildtool/execution_api/local/TARGETS1
-rw-r--r--src/buildtool/execution_api/local/local_api.hpp5
-rw-r--r--src/buildtool/execution_api/local/local_response.hpp11
-rw-r--r--src/buildtool/execution_api/remote/TARGETS1
-rw-r--r--src/buildtool/execution_api/remote/bazel/bazel_network_reader.cpp11
-rw-r--r--src/buildtool/execution_api/remote/bazel/bazel_response.cpp11
-rw-r--r--src/buildtool/execution_engine/executor/TARGETS1
-rw-r--r--src/buildtool/execution_engine/executor/executor.hpp5
-rw-r--r--src/buildtool/file_system/object_cas.hpp2
-rw-r--r--src/buildtool/graph_traverser/TARGETS1
-rw-r--r--src/buildtool/graph_traverser/graph_traverser.hpp3
-rw-r--r--src/buildtool/storage/TARGETS1
-rw-r--r--src/buildtool/storage/config.hpp6
-rw-r--r--src/buildtool/storage/local_ac.tpp19
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;
}
}