summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/buildtool/build_engine/target_map/TARGETS1
-rw-r--r--src/buildtool/build_engine/target_map/export.cpp14
-rw-r--r--src/buildtool/build_engine/target_map/target_cache_key.cpp28
-rw-r--r--src/buildtool/build_engine/target_map/target_cache_key.hpp3
4 files changed, 27 insertions, 19 deletions
diff --git a/src/buildtool/build_engine/target_map/TARGETS b/src/buildtool/build_engine/target_map/TARGETS
index 6a71153f..d2204331 100644
--- a/src/buildtool/build_engine/target_map/TARGETS
+++ b/src/buildtool/build_engine/target_map/TARGETS
@@ -115,7 +115,6 @@
, "deps":
[ ["src/buildtool/build_engine/base_maps", "entity_name_data"]
, ["src/buildtool/build_engine/expression", "expression"]
- , ["src/buildtool/common", "common"]
]
, "stage": ["src", "buildtool", "build_engine", "target_map"]
, "private-deps":
diff --git a/src/buildtool/build_engine/target_map/export.cpp b/src/buildtool/build_engine/target_map/export.cpp
index 7a53e78e..9005f037 100644
--- a/src/buildtool/build_engine/target_map/export.cpp
+++ b/src/buildtool/build_engine/target_map/export.cpp
@@ -77,6 +77,18 @@ void FinalizeExport(
true);
(*setter)(std::move(analysis_result));
}
+
+[[nodiscard]] auto ComputeTargetCacheKey(
+ BuildMaps::Base::EntityName const& exported_target,
+ Configuration const& target_config) -> std::optional<TargetCacheKey> {
+ static auto const& repos = RepositoryConfig::Instance();
+ auto const& target_name = exported_target.GetNamedTarget();
+ if (auto repo_key = repos.RepositoryKey(target_name.repository)) {
+ return TargetCacheKey::Create(*repo_key, target_name, target_config);
+ }
+ return std::nullopt;
+}
+
} // namespace
void ExportRule(
@@ -130,7 +142,7 @@ void ExportRule(
auto target_config = effective_config.Update(fixed_config);
auto target_cache_key =
- TargetCacheKey::Create(*exported_target, target_config);
+ ComputeTargetCacheKey(*exported_target, target_config);
if (target_cache_key) {
if (auto target_cache_value =
TargetCache::Instance().Read(*target_cache_key)) {
diff --git a/src/buildtool/build_engine/target_map/target_cache_key.cpp b/src/buildtool/build_engine/target_map/target_cache_key.cpp
index 1ee6a7ef..6408c2a6 100644
--- a/src/buildtool/build_engine/target_map/target_cache_key.cpp
+++ b/src/buildtool/build_engine/target_map/target_cache_key.cpp
@@ -19,30 +19,26 @@
#include <nlohmann/json.hpp>
#include "src/buildtool/common/artifact_digest.hpp"
-#include "src/buildtool/common/repository_config.hpp"
#include "src/buildtool/execution_api/local/local_cas.hpp"
#include "src/buildtool/file_system/object_type.hpp"
#include "src/buildtool/logging/log_level.hpp"
#include "src/buildtool/logging/logger.hpp"
-auto TargetCacheKey::Create(BuildMaps::Base::EntityName const& target,
+auto TargetCacheKey::Create(std::string const& repo_key,
+ BuildMaps::Base::NamedTarget const& target_name,
Configuration const& effective_config) noexcept
-> std::optional<TargetCacheKey> {
- static auto const& repos = RepositoryConfig::Instance();
try {
- if (auto repo_key =
- repos.RepositoryKey(target.GetNamedTarget().repository)) {
- // target's repository is content-fixed, we can compute a cache key
- auto const& name = target.GetNamedTarget();
- auto target_desc = nlohmann::json{
- {{"repo_key", *repo_key},
- {"target_name", nlohmann::json{name.module, name.name}.dump()},
- {"effective_config", effective_config.ToString()}}};
- static auto const& cas = LocalCAS<ObjectType::File>::Instance();
- if (auto target_key = cas.StoreBlobFromBytes(target_desc.dump(2))) {
- return TargetCacheKey{
- {ArtifactDigest{*target_key}, ObjectType::File}};
- }
+ // target's repository is content-fixed, we can compute a cache key
+ auto target_desc = nlohmann::json{
+ {{"repo_key", repo_key},
+ {"target_name",
+ nlohmann::json{target_name.module, target_name.name}.dump()},
+ {"effective_config", effective_config.ToString()}}};
+ static auto const& cas = LocalCAS<ObjectType::File>::Instance();
+ if (auto target_key = cas.StoreBlobFromBytes(target_desc.dump(2))) {
+ return TargetCacheKey{
+ {ArtifactDigest{*target_key}, ObjectType::File}};
}
} catch (std::exception const& ex) {
Logger::Log(LogLevel::Error,
diff --git a/src/buildtool/build_engine/target_map/target_cache_key.hpp b/src/buildtool/build_engine/target_map/target_cache_key.hpp
index bc648135..116a6a07 100644
--- a/src/buildtool/build_engine/target_map/target_cache_key.hpp
+++ b/src/buildtool/build_engine/target_map/target_cache_key.hpp
@@ -26,7 +26,8 @@
class TargetCacheKey {
public:
[[nodiscard]] static auto Create(
- BuildMaps::Base::EntityName const& target,
+ std::string const& repo_key,
+ BuildMaps::Base::NamedTarget const& target_name,
Configuration const& effective_config) noexcept
-> std::optional<TargetCacheKey>;