summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/buildtool/build_engine/target_map/absent_target_map.cpp116
1 files changed, 60 insertions, 56 deletions
diff --git a/src/buildtool/build_engine/target_map/absent_target_map.cpp b/src/buildtool/build_engine/target_map/absent_target_map.cpp
index ddc2a6ca..1ab385c3 100644
--- a/src/buildtool/build_engine/target_map/absent_target_map.cpp
+++ b/src/buildtool/build_engine/target_map/absent_target_map.cpp
@@ -215,62 +215,66 @@ auto BuildMaps::Target::CreateAbsentTargetMap(
BuildMaps::Target::ServeFailureLogReporter* serve_failure_reporter)
-> AbsentTargetMap {
#ifndef BOOTSTRAP_BUILD_TOOL
- auto target_reader =
- [result_map,
- repo_config,
- stats,
- exports_progress,
- absent_variables,
- serve_failure_reporter](
- auto ts, auto setter, auto logger, auto subcaller, auto key) {
- // assumptions:
- // - target with absent targets file requested
- // - ServeApi correctly configured
- auto const& repo_name = key.target.ToModule().repository;
- auto target_root_id =
- repo_config->TargetRoot(repo_name)->GetAbsentTreeId();
- if (!target_root_id) {
- (*logger)(fmt::format("Failed to get the target root id for "
- "repository \"{}\"",
- repo_name),
- /*fatal=*/true);
- return;
- }
- auto vars_request = AbsentTargetDescription{
- .target_root_id = *target_root_id,
- .target_file = *(repo_config->TargetFileName(repo_name)),
- .target = key.target.GetNamedTarget().name};
- absent_variables->ConsumeAfterKeysReady(
- ts,
- {vars_request},
- [key,
- setter,
- repo_config,
- logger,
- serve_failure_reporter,
- result_map,
- stats,
- exports_progress,
- subcaller](auto const& values) {
- WithFlexibleVariables(key,
- *(values[0]),
- repo_config,
- subcaller,
- setter,
- logger,
- result_map,
- stats,
- exports_progress,
- serve_failure_reporter);
- },
- [logger, target = key.target](auto const& msg, auto fatal) {
- (*logger)(fmt::format("While requested the flexible "
- "variables of {}:\n{}",
- target.ToString(),
- msg),
- fatal);
- });
- };
+ auto target_reader = [result_map,
+ repo_config,
+ stats,
+ exports_progress,
+ absent_variables,
+ serve_failure_reporter](auto ts,
+ auto setter,
+ auto logger,
+ auto subcaller,
+ auto key) {
+ // assumptions:
+ // - target with absent targets file requested
+ // - ServeApi correctly configured
+ auto const& repo_name = key.target.ToModule().repository;
+ auto target_root_id =
+ repo_config->TargetRoot(repo_name)->GetAbsentTreeId();
+ if (!target_root_id) {
+ (*logger)(fmt::format("Failed to get the target root id for "
+ "repository \"{}\"",
+ repo_name),
+ /*fatal=*/true);
+ return;
+ }
+ std::filesystem::path module{key.target.ToModule().module};
+ auto vars_request = AbsentTargetDescription{
+ .target_root_id = *target_root_id,
+ .target_file =
+ (module / *(repo_config->TargetFileName(repo_name))).string(),
+ .target = key.target.GetNamedTarget().name};
+ absent_variables->ConsumeAfterKeysReady(
+ ts,
+ {vars_request},
+ [key,
+ setter,
+ repo_config,
+ logger,
+ serve_failure_reporter,
+ result_map,
+ stats,
+ exports_progress,
+ subcaller](auto const& values) {
+ WithFlexibleVariables(key,
+ *(values[0]),
+ repo_config,
+ subcaller,
+ setter,
+ logger,
+ result_map,
+ stats,
+ exports_progress,
+ serve_failure_reporter);
+ },
+ [logger, target = key.target](auto const& msg, auto fatal) {
+ (*logger)(fmt::format("While requested the flexible "
+ "variables of {}:\n{}",
+ target.ToString(),
+ msg),
+ fatal);
+ });
+ };
#else
auto target_reader = [](auto /*ts*/,
auto /*setter*/,