From fb365b17ca339a25688ff61918280a46d64943b9 Mon Sep 17 00:00:00 2001 From: Klaus Aehlig Date: Mon, 15 Jan 2024 10:06:48 +0100 Subject: Analysed target: keep track of implied export targets ... that are eligible for caching. In this way, we can accurately keep track of the dependencies between target-level cache entries. Note that it is enough to track the export targets eligible for caching, as no target depending on an ineligible export target can be eligible. --- src/buildtool/build_engine/target_map/export.cpp | 9 +++++++++ 1 file changed, 9 insertions(+) (limited to 'src/buildtool/build_engine/target_map/export.cpp') diff --git a/src/buildtool/build_engine/target_map/export.cpp b/src/buildtool/build_engine/target_map/export.cpp index 50238b26..a2215411 100644 --- a/src/buildtool/build_engine/target_map/export.cpp +++ b/src/buildtool/build_engine/target_map/export.cpp @@ -65,6 +65,13 @@ void FinalizeExport( std::unordered_set vars_set{}; vars_set.insert(vars.begin(), vars.end()); + std::set implied{}; + if (target_cache_key) { + implied.insert((*value)->ImpliedExport().begin(), + (*value)->ImpliedExport().end()); + implied.insert(target_cache_key->Id().digest.hash()); + } + auto analysis_result = std::make_shared( TargetResult{.artifact_stage = (*value)->Artifacts(), .provides = provides, @@ -74,6 +81,7 @@ void FinalizeExport( std::vector{}, std::move(vars_set), std::set{}, + std::move(implied), std::move(deps_info)); analysis_result = result_map->Add(target, effective_config, @@ -151,6 +159,7 @@ void ExportRule( std::unordered_set{flexible_vars->begin(), flexible_vars->end()}, std::set{}, + entry.ToImplied(), deps_info); analysis_result = result_map->Add(key.target, -- cgit v1.2.3