summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKlaus Aehlig <klaus.aehlig@huawei.com>2025-05-05 15:35:59 +0200
committerKlaus Aehlig <klaus.aehlig@huawei.com>2025-05-06 13:09:36 +0200
commit6cd39f9127da68fd55678fbc4a65e902989f7d9b (patch)
tree19d98351266b83e346de0780d707b5fb76aa6617
parentd83e83b9d9ed15e3a0a112b7b9a9d612c7ee8b14 (diff)
downloadjustbuild-6cd39f9127da68fd55678fbc4a65e902989f7d9b.tar.gz
just: record analysis errors in profile
-rw-r--r--src/buildtool/main/TARGETS1
-rw-r--r--src/buildtool/main/analyse.cpp9
-rw-r--r--src/buildtool/main/analyse.hpp5
-rw-r--r--src/buildtool/main/main.cpp3
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 {}",