summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/buildtool/main/TARGETS7
-rw-r--r--src/buildtool/main/analyse.cpp16
-rw-r--r--src/buildtool/main/analyse.hpp2
-rw-r--r--src/buildtool/main/diagnose.cpp15
-rw-r--r--src/buildtool/main/diagnose.hpp2
-rw-r--r--src/buildtool/main/main.cpp58
-rw-r--r--src/buildtool/serve_api/serve_service/target.cpp32
7 files changed, 68 insertions, 64 deletions
diff --git a/src/buildtool/main/TARGETS b/src/buildtool/main/TARGETS
index 6ee7c829..4185c339 100644
--- a/src/buildtool/main/TARGETS
+++ b/src/buildtool/main/TARGETS
@@ -257,11 +257,7 @@
, "hdrs": ["diagnose.hpp"]
, "srcs": ["diagnose.cpp"]
, "stage": ["src", "buildtool", "main"]
- , "deps":
- [ "analyse"
- , ["src/buildtool/build_engine/target_map", "result_map"]
- , ["src/buildtool/common", "cli"]
- ]
+ , "deps": ["analyse", ["src/buildtool/common", "cli"]]
, "private-deps":
[ ["@", "fmt", "", "fmt"]
, ["@", "gsl", "", "gsl"]
@@ -271,6 +267,7 @@
, ["src/buildtool/build_engine/expression", "expression"]
, ["src/buildtool/build_engine/expression", "expression_ptr_interface"]
, ["src/buildtool/build_engine/target_map", "configured_target"]
+ , ["src/buildtool/build_engine/target_map", "result_map"]
, ["src/buildtool/logging", "log_level"]
, ["src/buildtool/logging", "logging"]
, ["src/utils/cpp", "json"]
diff --git a/src/buildtool/main/analyse.cpp b/src/buildtool/main/analyse.cpp
index 025fb1a9..dcb2181b 100644
--- a/src/buildtool/main/analyse.cpp
+++ b/src/buildtool/main/analyse.cpp
@@ -23,6 +23,7 @@
#include <memory>
#include <thread>
#include <unordered_map>
+#include <utility>
#include <vector>
#include "fmt/core.h"
@@ -121,7 +122,6 @@ namespace Target = BuildMaps::Target;
[[nodiscard]] auto AnalyseTarget(
gsl::not_null<AnalyseContext*> const& context,
const Target::ConfiguredTarget& id,
- gsl::not_null<Target::ResultTargetMap*> const& result_map,
std::size_t jobs,
std::optional<std::string> const& request_action_input,
Logger const* logger,
@@ -147,8 +147,9 @@ namespace Target = BuildMaps::Target;
auto absent_target_variables_map =
Target::CreateAbsentTargetVariablesMap(context, jobs);
+ BuildMaps::Target::ResultTargetMap result_map{jobs};
auto absent_target_map = Target::CreateAbsentTargetMap(
- context, result_map, &absent_target_variables_map, jobs, serve_log);
+ context, &result_map, &absent_target_variables_map, jobs, serve_log);
auto target_map = Target::CreateTargetMap(context,
&source_targets,
@@ -156,7 +157,7 @@ namespace Target = BuildMaps::Target;
&rule_map,
&directory_entries,
&absent_target_map,
- result_map,
+ &result_map,
jobs);
Logger::Log(
logger, LogLevel::Info, "Requested target is {}", id.ToString());
@@ -240,7 +241,7 @@ namespace Target = BuildMaps::Target;
if (request_action_input) {
if (request_action_input->starts_with("%")) {
auto action_id = request_action_input->substr(1);
- auto action = result_map->GetAction(action_id);
+ auto action = result_map.GetAction(action_id);
if (action) {
Logger::Log(logger,
LogLevel::Info,
@@ -278,7 +279,7 @@ namespace Target = BuildMaps::Target;
}
}
else {
- auto action = result_map->GetAction(*request_action_input);
+ auto action = result_map.GetAction(*request_action_input);
if (action) {
Logger::Log(logger,
LogLevel::Info,
@@ -309,5 +310,8 @@ namespace Target = BuildMaps::Target;
}
}
}
- return AnalysisResult{.id = id, .target = target, .modified = modified};
+ return AnalysisResult{.id = id,
+ .target = target,
+ .result_map = std::move(result_map),
+ .modified = modified};
}
diff --git a/src/buildtool/main/analyse.hpp b/src/buildtool/main/analyse.hpp
index b608850c..771d06ad 100644
--- a/src/buildtool/main/analyse.hpp
+++ b/src/buildtool/main/analyse.hpp
@@ -30,13 +30,13 @@
struct AnalysisResult {
BuildMaps::Target::ConfiguredTarget id;
AnalysedTargetPtr target;
+ BuildMaps::Target::ResultTargetMap result_map;
std::optional<std::string> modified;
};
[[nodiscard]] auto AnalyseTarget(
gsl::not_null<AnalyseContext*> const& context,
const BuildMaps::Target::ConfiguredTarget& id,
- gsl::not_null<BuildMaps::Target::ResultTargetMap*> const& result_map,
std::size_t jobs,
std::optional<std::string> const& request_action_input,
Logger const* logger = nullptr,
diff --git a/src/buildtool/main/diagnose.cpp b/src/buildtool/main/diagnose.cpp
index 8cc198d9..9e67551f 100644
--- a/src/buildtool/main/diagnose.cpp
+++ b/src/buildtool/main/diagnose.cpp
@@ -37,6 +37,7 @@
#include "src/buildtool/build_engine/expression/expression_ptr.hpp"
#include "src/buildtool/build_engine/expression/target_result.hpp"
#include "src/buildtool/build_engine/target_map/configured_target.hpp"
+#include "src/buildtool/build_engine/target_map/result_map.hpp"
#include "src/buildtool/logging/log_level.hpp"
#include "src/buildtool/logging/logger.hpp"
#include "src/utils/cpp/json.hpp"
@@ -325,7 +326,6 @@ void DumpResult(std::string const& file_path, AnalysisResult const& result) {
} // namespace
void DiagnoseResults(AnalysisResult const& result,
- BuildMaps::Target::ResultTargetMap const& result_map,
DiagnosticArguments const& clargs) {
Logger::Log(
LogLevel::Info,
@@ -358,14 +358,16 @@ void DiagnoseResults(AnalysisResult const& result,
DumpVars(*clargs.dump_vars, result);
}
if (clargs.dump_targets) {
- DumpTargets(*clargs.dump_targets, result_map.ConfiguredTargets());
+ DumpTargets(*clargs.dump_targets,
+ result.result_map.ConfiguredTargets());
}
if (clargs.dump_export_targets) {
- DumpTargets(
- *clargs.dump_export_targets, result_map.ExportTargets(), "export ");
+ DumpTargets(*clargs.dump_export_targets,
+ result.result_map.ExportTargets(),
+ "export ");
}
if (clargs.dump_targets_graph) {
- auto graph = result_map.ConfiguredTargetsGraph().dump(2);
+ auto graph = result.result_map.ConfiguredTargetsGraph().dump(2);
Logger::Log(LogLevel::Info,
"Dumping graph of configured-targets to file {}.",
*clargs.dump_targets_graph);
@@ -373,7 +375,8 @@ void DiagnoseResults(AnalysisResult const& result,
os << graph << std::endl;
}
if (clargs.dump_anonymous) {
- DumpAnonymous(*clargs.dump_anonymous, result_map.ConfiguredTargets());
+ DumpAnonymous(*clargs.dump_anonymous,
+ result.result_map.ConfiguredTargets());
}
if (clargs.dump_nodes) {
DumpNodes(*clargs.dump_nodes, result);
diff --git a/src/buildtool/main/diagnose.hpp b/src/buildtool/main/diagnose.hpp
index cb3d57a6..0a6d0ec4 100644
--- a/src/buildtool/main/diagnose.hpp
+++ b/src/buildtool/main/diagnose.hpp
@@ -15,11 +15,9 @@
#ifndef INCLUDED_SRC_BUILDTOOL_MAIN_DIAGNOSE_HPP
#define INCLUDED_SRC_BUILDTOOL_MAIN_DIAGNOSE_HPP
-#include "src/buildtool/build_engine/target_map/result_map.hpp"
#include "src/buildtool/common/cli.hpp"
#include "src/buildtool/main/analyse.hpp"
void DiagnoseResults(AnalysisResult const& result,
- BuildMaps::Target::ResultTargetMap const& result_map,
DiagnosticArguments const& clargs);
#endif // INCLUDED_SRC_BUILDTOOL_MAIN_DIAGNOSE_HPP
diff --git a/src/buildtool/main/main.cpp b/src/buildtool/main/main.cpp
index 0aaac54a..d14c429c 100644
--- a/src/buildtool/main/main.cpp
+++ b/src/buildtool/main/main.cpp
@@ -1090,7 +1090,6 @@ auto main(int argc, char* argv[]) -> int {
}
#endif // BOOTSTRAP_BUILD_TOOL
- BuildMaps::Target::ResultTargetMap result_map{arguments.common.jobs};
auto id = ReadConfiguredTarget(
main_repo, main_ws_root, &repo_config, arguments.analysis);
auto serve_errors = nlohmann::json::array();
@@ -1115,13 +1114,13 @@ auto main(int argc, char* argv[]) -> int {
.progress = &exports_progress,
.serve = serve ? &*serve : nullptr};
- auto result = AnalyseTarget(&analyse_ctx,
- id,
- &result_map,
- arguments.common.jobs,
- arguments.analysis.request_action_input,
- /*logger=*/nullptr,
- &collect_serve_errors);
+ auto analyse_result =
+ AnalyseTarget(&analyse_ctx,
+ id,
+ arguments.common.jobs,
+ arguments.analysis.request_action_input,
+ /*logger=*/nullptr,
+ &collect_serve_errors);
if (arguments.analysis.serve_errors_file) {
Logger::Log(serve_errors.empty() ? LogLevel::Debug : LogLevel::Info,
"Dumping serve-error information to {}",
@@ -1129,11 +1128,11 @@ auto main(int argc, char* argv[]) -> int {
std::ofstream os(*arguments.analysis.serve_errors_file);
os << serve_errors.dump() << std::endl;
}
- if (result) {
- Logger::Log(
- LogLevel::Info,
- "Analysed target {}",
- result->id.ToShortString(Evaluator::GetExpressionLogLimit()));
+ if (analyse_result) {
+ Logger::Log(LogLevel::Info,
+ "Analysed target {}",
+ analyse_result->id.ToShortString(
+ Evaluator::GetExpressionLogLimit()));
{
auto cached = stats.ExportsCachedCounter();
@@ -1153,15 +1152,15 @@ auto main(int argc, char* argv[]) -> int {
}
if (arguments.analysis.graph_file) {
- result_map.ToFile(
+ analyse_result->result_map.ToFile(
*arguments.analysis.graph_file, &stats, &progress);
}
if (arguments.analysis.graph_file_plain) {
- result_map.ToFile</*kIncludeOrigins=*/false>(
+ analyse_result->result_map.ToFile</*kIncludeOrigins=*/false>(
*arguments.analysis.graph_file_plain, &stats, &progress);
}
auto const [artifacts, runfiles] =
- ReadOutputArtifacts(result->target);
+ ReadOutputArtifacts(analyse_result->target);
if (arguments.analysis.artifacts_to_build_file) {
DumpArtifactsToBuild(
artifacts,
@@ -1169,38 +1168,41 @@ auto main(int argc, char* argv[]) -> int {
*arguments.analysis.artifacts_to_build_file);
}
if (arguments.cmd == SubCommand::kAnalyse) {
- DiagnoseResults(*result, result_map, arguments.diagnose);
- ReportTaintedness(*result);
+ DiagnoseResults(*analyse_result, arguments.diagnose);
+ ReportTaintedness(*analyse_result);
// Clean up in parallel
{
TaskSystem ts{arguments.common.jobs};
- result_map.Clear(&ts);
+ analyse_result->result_map.Clear(&ts);
}
return kExitSuccess;
}
#ifndef BOOTSTRAP_BUILD_TOOL
- ReportTaintedness(*result);
+ ReportTaintedness(*analyse_result);
auto const& [actions, blobs, trees] =
- result_map.ToResult(&stats, &progress);
+ analyse_result->result_map.ToResult(&stats, &progress);
// collect cache targets and artifacts for target-level caching
- auto const cache_targets = result_map.CacheTargets();
+ auto const cache_targets =
+ analyse_result->result_map.CacheTargets();
auto cache_artifacts = CollectNonKnownArtifacts(cache_targets);
- // Clean up result map, now that it is no longer needed
+ // Clean up analyse_result map, now that it is no longer needed
{
TaskSystem ts{arguments.common.jobs};
- result_map.Clear(&ts);
+ analyse_result->result_map.Clear(&ts);
}
Logger::Log(
LogLevel::Info,
"{}ing{} {}.",
arguments.cmd == SubCommand::kRebuild ? "Rebuild" : "Build",
- result->modified
- ? fmt::format(" input of action {} of", *(result->modified))
+ analyse_result->modified
+ ? fmt::format(" input of action {} of",
+ *(analyse_result->modified))
: "",
- result->id.ToShortString(Evaluator::GetExpressionLogLimit()));
+ analyse_result->id.ToShortString(
+ Evaluator::GetExpressionLogLimit()));
auto build_result =
traverser.BuildAndStage(artifacts,
@@ -1223,7 +1225,7 @@ auto main(int argc, char* argv[]) -> int {
// Repeat taintedness message to make the user aware that
// the artifacts are not for production use.
- ReportTaintedness(*result);
+ ReportTaintedness(*analyse_result);
if (build_result->failed_artifacts) {
Logger::Log(LogLevel::Warning,
"Build result contains failed artifacts.");
diff --git a/src/buildtool/serve_api/serve_service/target.cpp b/src/buildtool/serve_api/serve_service/target.cpp
index 977d7ed7..ff0acfa5 100644
--- a/src/buildtool/serve_api/serve_service/target.cpp
+++ b/src/buildtool/serve_api/serve_service/target.cpp
@@ -450,7 +450,6 @@ auto TargetService::ServeTarget(
error_msg};
}
- BuildMaps::Target::ResultTargetMap result_map{serve_config_.jobs};
auto configured_target = BuildMaps::Target::ConfiguredTarget{
.target = std::move(*entity), .config = std::move(config)};
@@ -477,37 +476,38 @@ auto TargetService::ServeTarget(
.serve = serve_};
// analyse the configured target
- auto result = AnalyseTarget(&analyse_ctx,
- configured_target,
- &result_map,
- serve_config_.jobs,
- std::nullopt /*request_action_input*/,
- &logger);
-
- if (not result) {
+ auto analyse_result = AnalyseTarget(&analyse_ctx,
+ configured_target,
+ serve_config_.jobs,
+ std::nullopt /*request_action_input*/,
+ &logger);
+
+ if (not analyse_result) {
// report failure locally, to keep track of it...
auto msg = fmt::format("Failed to analyse target {}",
configured_target.target.ToString());
logger_->Emit(LogLevel::Warning, "{}", msg);
return HandleFailureLog(tmp_log, "analysis", response);
}
- logger_->Emit(LogLevel::Info, "Analysed target {}", result->id.ToString());
+ logger_->Emit(
+ LogLevel::Info, "Analysed target {}", analyse_result->id.ToString());
// get the output artifacts
- auto const [artifacts, runfiles] = ReadOutputArtifacts(result->target);
+ auto const [artifacts, runfiles] =
+ ReadOutputArtifacts(analyse_result->target);
- // get the result map outputs
+ // get the analyse_result map outputs
auto const& [actions, blobs, trees] =
- result_map.ToResult(&stats, &progress, &logger);
+ analyse_result->result_map.ToResult(&stats, &progress, &logger);
// collect cache targets and artifacts for target-level caching
- auto const cache_targets = result_map.CacheTargets();
+ auto const cache_targets = analyse_result->result_map.CacheTargets();
auto cache_artifacts = CollectNonKnownArtifacts(cache_targets);
- // Clean up result map, now that it is no longer needed
+ // Clean up analyse_result map, now that it is no longer needed
{
TaskSystem ts{serve_config_.jobs};
- result_map.Clear(&ts);
+ analyse_result->result_map.Clear(&ts);
}
auto jobs = serve_config_.build_jobs;