diff options
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>; |