diff options
author | Klaus Aehlig <klaus.aehlig@huawei.com> | 2025-05-05 15:35:59 +0200 |
---|---|---|
committer | Klaus Aehlig <klaus.aehlig@huawei.com> | 2025-05-06 13:09:36 +0200 |
commit | 6cd39f9127da68fd55678fbc4a65e902989f7d9b (patch) | |
tree | 19d98351266b83e346de0780d707b5fb76aa6617 | |
parent | d83e83b9d9ed15e3a0a112b7b9a9d612c7ee8b14 (diff) | |
download | justbuild-6cd39f9127da68fd55678fbc4a65e902989f7d9b.tar.gz |
just: record analysis errors in profile
-rw-r--r-- | src/buildtool/main/TARGETS | 1 | ||||
-rw-r--r-- | src/buildtool/main/analyse.cpp | 9 | ||||
-rw-r--r-- | src/buildtool/main/analyse.hpp | 5 | ||||
-rw-r--r-- | src/buildtool/main/main.cpp | 3 |
4 files changed, 12 insertions, 6 deletions
diff --git a/src/buildtool/main/TARGETS b/src/buildtool/main/TARGETS index 0d2cd0ef..86ea56a9 100644 --- a/src/buildtool/main/TARGETS +++ b/src/buildtool/main/TARGETS @@ -219,6 +219,7 @@ , ["src/buildtool/build_engine/target_map", "configured_target"] , ["src/buildtool/build_engine/target_map", "result_map"] , ["src/buildtool/logging", "logging"] + , ["src/buildtool/profile", "profile"] ] , "stage": ["src", "buildtool", "main"] , "private-deps": diff --git a/src/buildtool/main/analyse.cpp b/src/buildtool/main/analyse.cpp index 9315d5b7..31beb439 100644 --- a/src/buildtool/main/analyse.cpp +++ b/src/buildtool/main/analyse.cpp @@ -126,8 +126,8 @@ namespace Target = BuildMaps::Target; std::size_t jobs, std::optional<std::string> const& request_action_input, Logger const* logger, - BuildMaps::Target::ServeFailureLogReporter* serve_log) - -> std::optional<AnalysisResult> { + BuildMaps::Target::ServeFailureLogReporter* serve_log, + Profile* profile) -> std::optional<AnalysisResult> { // create async maps auto directory_entries = Base::CreateDirectoryEntriesMap(context->repo_config, jobs); @@ -181,12 +181,15 @@ namespace Target = BuildMaps::Target; &ts, {id}, [&target](auto values) { target = *values[0]; }, - [&failed, logger](auto const& msg, bool fatal) { + [&failed, logger, profile](auto const& msg, bool fatal) { Logger::Log(logger, fatal ? LogLevel::Error : LogLevel::Warning, "While processing targets:\n{}", msg); failed = failed or fatal; + if (fatal and (profile != nullptr)) { + profile->NoteAnalysisError(msg); + } }); } diff --git a/src/buildtool/main/analyse.hpp b/src/buildtool/main/analyse.hpp index 771d06ad..f10b147a 100644 --- a/src/buildtool/main/analyse.hpp +++ b/src/buildtool/main/analyse.hpp @@ -26,6 +26,7 @@ #include "src/buildtool/build_engine/target_map/result_map.hpp" #include "src/buildtool/logging/logger.hpp" #include "src/buildtool/main/analyse_context.hpp" +#include "src/buildtool/profile/profile.hpp" struct AnalysisResult { BuildMaps::Target::ConfiguredTarget id; @@ -40,6 +41,6 @@ struct AnalysisResult { std::size_t jobs, std::optional<std::string> const& request_action_input, Logger const* logger = nullptr, - BuildMaps::Target::ServeFailureLogReporter* = nullptr) - -> std::optional<AnalysisResult>; + BuildMaps::Target::ServeFailureLogReporter* = nullptr, + Profile* = nullptr) -> std::optional<AnalysisResult>; #endif // INCLUDED_SRC_BUILDOOL_MAIN_ANALYSE_HPP diff --git a/src/buildtool/main/main.cpp b/src/buildtool/main/main.cpp index 0a979a78..896d0545 100644 --- a/src/buildtool/main/main.cpp +++ b/src/buildtool/main/main.cpp @@ -1156,7 +1156,8 @@ auto main(int argc, char* argv[]) -> int { arguments.common.jobs, arguments.analysis.request_action_input, /*logger=*/nullptr, - &collect_serve_errors); + &collect_serve_errors, + profile.get()); if (arguments.analysis.serve_errors_file) { Logger::Log(serve_errors.empty() ? LogLevel::Debug : LogLevel::Info, "Dumping serve-error information to {}", |