summaryrefslogtreecommitdiff
path: root/src/buildtool/build_engine
diff options
context:
space:
mode:
Diffstat (limited to 'src/buildtool/build_engine')
-rw-r--r--src/buildtool/build_engine/target_map/TARGETS2
-rw-r--r--src/buildtool/build_engine/target_map/absent_target_map.cpp14
-rw-r--r--src/buildtool/build_engine/target_map/absent_target_map.hpp2
-rw-r--r--src/buildtool/build_engine/target_map/built_in_rules.cpp9
-rw-r--r--src/buildtool/build_engine/target_map/built_in_rules.hpp2
-rw-r--r--src/buildtool/build_engine/target_map/export.cpp7
-rw-r--r--src/buildtool/build_engine/target_map/export.hpp2
-rw-r--r--src/buildtool/build_engine/target_map/result_map.hpp22
-rw-r--r--src/buildtool/build_engine/target_map/target_map.cpp26
-rw-r--r--src/buildtool/build_engine/target_map/target_map.hpp2
10 files changed, 63 insertions, 25 deletions
diff --git a/src/buildtool/build_engine/target_map/TARGETS b/src/buildtool/build_engine/target_map/TARGETS
index b753e503..38c261d5 100644
--- a/src/buildtool/build_engine/target_map/TARGETS
+++ b/src/buildtool/build_engine/target_map/TARGETS
@@ -45,6 +45,7 @@
, ["src/buildtool/build_engine/base_maps", "rule_map"]
, ["src/buildtool/build_engine/base_maps", "source_map"]
, ["src/buildtool/build_engine/base_maps", "targets_file_map"]
+ , ["src/buildtool/common", "common"]
, ["src/buildtool/common", "config"]
, ["src/buildtool/multithreading", "async_map_consumer"]
, ["src/buildtool/storage", "storage"]
@@ -97,6 +98,7 @@
[ "configured_target"
, "result_map"
, ["src/buildtool/build_engine/analysed_target", "target"]
+ , ["src/buildtool/common", "common"]
, ["src/buildtool/common", "config"]
, ["src/buildtool/multithreading", "async_map_consumer"]
, ["@", "gsl", "", "gsl"]
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 27eb9e86..f72dc697 100644
--- a/src/buildtool/build_engine/target_map/absent_target_map.cpp
+++ b/src/buildtool/build_engine/target_map/absent_target_map.cpp
@@ -23,13 +23,15 @@
auto BuildMaps::Target::CreateAbsentTargetMap(
const gsl::not_null<ResultTargetMap*>& result_map,
gsl::not_null<RepositoryConfig*> const& repo_config,
+ gsl::not_null<Statistics*> const& local_stats,
std::size_t jobs) -> AbsentTargetMap {
#ifndef BOOTSTRAP_BUILD_TOOL
- auto target_reader = [result_map, repo_config](auto /*ts*/,
- auto setter,
- auto logger,
- auto /*subcaller*/,
- auto key) {
+ auto target_reader = [result_map, repo_config, local_stats](
+ auto /*ts*/,
+ auto setter,
+ auto logger,
+ auto /*subcaller*/,
+ auto key) {
// assumptions:
// - target with absent targets file requested
// - ServeApi correctly configured
@@ -137,7 +139,7 @@ auto BuildMaps::Target::CreateAbsentTargetMap(
info.ToString());
(*setter)(std::move(analysis_result));
- Statistics::Instance().IncrementExportsCachedCounter();
+ local_stats->IncrementExportsCachedCounter();
return;
}
(*logger)(fmt::format("Reading target entry for key {} failed",
diff --git a/src/buildtool/build_engine/target_map/absent_target_map.hpp b/src/buildtool/build_engine/target_map/absent_target_map.hpp
index aa2b5b42..a00fc05d 100644
--- a/src/buildtool/build_engine/target_map/absent_target_map.hpp
+++ b/src/buildtool/build_engine/target_map/absent_target_map.hpp
@@ -19,6 +19,7 @@
#include "src/buildtool/build_engine/target_map/configured_target.hpp"
#include "src/buildtool/build_engine/target_map/result_map.hpp"
#include "src/buildtool/common/repository_config.hpp"
+#include "src/buildtool/common/statistics.hpp"
#include "src/buildtool/multithreading/async_map_consumer.hpp"
namespace BuildMaps::Target {
@@ -26,6 +27,7 @@ using AbsentTargetMap = AsyncMapConsumer<ConfiguredTarget, AnalysedTargetPtr>;
auto CreateAbsentTargetMap(const gsl::not_null<ResultTargetMap*>&,
gsl::not_null<RepositoryConfig*> const& repo_config,
+ gsl::not_null<Statistics*> const& local_stats,
std::size_t jobs = 0) -> AbsentTargetMap;
} // namespace BuildMaps::Target
diff --git a/src/buildtool/build_engine/target_map/built_in_rules.cpp b/src/buildtool/build_engine/target_map/built_in_rules.cpp
index d28a6ed9..2c90cc9d 100644
--- a/src/buildtool/build_engine/target_map/built_in_rules.cpp
+++ b/src/buildtool/build_engine/target_map/built_in_rules.cpp
@@ -340,6 +340,7 @@ void FileGenRule(
const BuildMaps::Target::ConfiguredTarget& key,
const gsl::not_null<RepositoryConfig*>& repo_config,
[[maybe_unused]] const ActiveTargetCache& /*target_cache*/,
+ [[maybe_unused]] const gsl::not_null<Statistics*>& /*stats*/,
const BuildMaps::Target::TargetMap::SubCallerPtr& subcaller,
const BuildMaps::Target::TargetMap::SetterPtr& setter,
const BuildMaps::Target::TargetMap::LoggerPtr& logger,
@@ -359,6 +360,7 @@ void SymlinkRule(
const BuildMaps::Target::ConfiguredTarget& key,
const gsl::not_null<RepositoryConfig*>& repo_config,
[[maybe_unused]] const ActiveTargetCache& /*target_cache*/,
+ [[maybe_unused]] const gsl::not_null<Statistics*>& /*stats*/,
const BuildMaps::Target::TargetMap::SubCallerPtr& subcaller,
const BuildMaps::Target::TargetMap::SetterPtr& setter,
const BuildMaps::Target::TargetMap::LoggerPtr& logger,
@@ -487,6 +489,7 @@ void TreeRule(
const BuildMaps::Target::ConfiguredTarget& key,
const gsl::not_null<RepositoryConfig*>& repo_config,
[[maybe_unused]] const ActiveTargetCache& /*target_cache*/,
+ [[maybe_unused]] const gsl::not_null<Statistics*>& /*stats*/,
const BuildMaps::Target::TargetMap::SubCallerPtr& subcaller,
const BuildMaps::Target::TargetMap::SetterPtr& setter,
const BuildMaps::Target::TargetMap::LoggerPtr& logger,
@@ -736,6 +739,7 @@ void InstallRule(
const BuildMaps::Target::ConfiguredTarget& key,
const gsl::not_null<RepositoryConfig*>& repo_config,
[[maybe_unused]] const ActiveTargetCache& /*target_cache*/,
+ [[maybe_unused]] const gsl::not_null<Statistics*>& /*stats*/,
const BuildMaps::Target::TargetMap::SubCallerPtr& subcaller,
const BuildMaps::Target::TargetMap::SetterPtr& setter,
const BuildMaps::Target::TargetMap::LoggerPtr& logger,
@@ -1322,6 +1326,7 @@ void GenericRule(
const BuildMaps::Target::ConfiguredTarget& key,
const gsl::not_null<RepositoryConfig*>& repo_config,
[[maybe_unused]] const ActiveTargetCache& /*target_cache*/,
+ [[maybe_unused]] const gsl::not_null<Statistics*>& /*stats*/,
const BuildMaps::Target::TargetMap::SubCallerPtr& subcaller,
const BuildMaps::Target::TargetMap::SetterPtr& setter,
const BuildMaps::Target::TargetMap::LoggerPtr& logger,
@@ -1400,6 +1405,7 @@ void ConfigureRule(
const BuildMaps::Target::ConfiguredTarget& key,
const gsl::not_null<RepositoryConfig*>& repo_config,
[[maybe_unused]] const ActiveTargetCache& /*target_cache*/,
+ [[maybe_unused]] const gsl::not_null<Statistics*>& /*stats*/,
const BuildMaps::Target::TargetMap::SubCallerPtr& subcaller,
const BuildMaps::Target::TargetMap::SetterPtr& setter,
const BuildMaps::Target::TargetMap::LoggerPtr& logger,
@@ -1541,6 +1547,7 @@ auto const kBuiltIns = std::unordered_map<
const BuildMaps::Target::ConfiguredTarget&,
const gsl::not_null<RepositoryConfig*>&,
const ActiveTargetCache&,
+ const gsl::not_null<Statistics*>&,
const BuildMaps::Target::TargetMap::SubCallerPtr&,
const BuildMaps::Target::TargetMap::SetterPtr&,
const BuildMaps::Target::TargetMap::LoggerPtr&,
@@ -1572,6 +1579,7 @@ auto HandleBuiltin(
const BuildMaps::Target::ConfiguredTarget& key,
const gsl::not_null<RepositoryConfig*>& repo_config,
const ActiveTargetCache& target_cache,
+ const gsl::not_null<Statistics*>& stats,
const BuildMaps::Target::TargetMap::SubCallerPtr& subcaller,
const BuildMaps::Target::TargetMap::SetterPtr& setter,
const BuildMaps::Target::TargetMap::LoggerPtr& logger,
@@ -1598,6 +1606,7 @@ auto HandleBuiltin(
key,
repo_config,
target_cache,
+ stats,
subcaller,
setter,
target_logger,
diff --git a/src/buildtool/build_engine/target_map/built_in_rules.hpp b/src/buildtool/build_engine/target_map/built_in_rules.hpp
index e3e2f220..1eb6e086 100644
--- a/src/buildtool/build_engine/target_map/built_in_rules.hpp
+++ b/src/buildtool/build_engine/target_map/built_in_rules.hpp
@@ -21,6 +21,7 @@
#include "src/buildtool/build_engine/target_map/result_map.hpp"
#include "src/buildtool/build_engine/target_map/target_map.hpp"
#include "src/buildtool/common/repository_config.hpp"
+#include "src/buildtool/common/statistics.hpp"
#include "src/buildtool/storage/target_cache.hpp"
namespace BuildMaps::Target {
@@ -30,6 +31,7 @@ auto HandleBuiltin(
const BuildMaps::Target::ConfiguredTarget& key,
const gsl::not_null<RepositoryConfig*>& repo_config,
const ActiveTargetCache& target_cache,
+ const gsl::not_null<Statistics*>& stats,
const BuildMaps::Target::TargetMap::SubCallerPtr& subcaller,
const BuildMaps::Target::TargetMap::SetterPtr& setter,
const BuildMaps::Target::TargetMap::LoggerPtr& logger,
diff --git a/src/buildtool/build_engine/target_map/export.cpp b/src/buildtool/build_engine/target_map/export.cpp
index c9aed0e3..29085716 100644
--- a/src/buildtool/build_engine/target_map/export.cpp
+++ b/src/buildtool/build_engine/target_map/export.cpp
@@ -98,6 +98,7 @@ void ExportRule(
const BuildMaps::Target::ConfiguredTarget& key,
const gsl::not_null<RepositoryConfig*>& repo_config,
const ActiveTargetCache& target_cache,
+ const gsl::not_null<Statistics*>& stats,
const BuildMaps::Target::TargetMap::SubCallerPtr& subcaller,
const BuildMaps::Target::TargetMap::SetterPtr& setter,
const BuildMaps::Target::TargetMap::LoggerPtr& logger,
@@ -134,7 +135,7 @@ void ExportRule(
#endif // BOOTSTRAP_BUILD_TOOL
if (not target_cache_value) {
- Statistics::Instance().IncrementExportsUncachedCounter();
+ stats->IncrementExportsUncachedCounter();
Logger::Log(LogLevel::Performance,
"Export target {} registered for caching: {}",
key.target.ToString(),
@@ -176,7 +177,7 @@ void ExportRule(
info.ToString());
(*setter)(std::move(analysis_result));
- Statistics::Instance().IncrementExportsCachedCounter();
+ stats->IncrementExportsCachedCounter();
return;
}
(*logger)(fmt::format("Reading target entry for key {} failed",
@@ -185,7 +186,7 @@ void ExportRule(
}
}
else {
- Statistics::Instance().IncrementExportsNotEligibleCounter();
+ stats->IncrementExportsNotEligibleCounter();
Logger::Log(LogLevel::Performance,
"Export target {} is not eligible for target caching",
key.target.ToString());
diff --git a/src/buildtool/build_engine/target_map/export.hpp b/src/buildtool/build_engine/target_map/export.hpp
index 7f470706..3f43796b 100644
--- a/src/buildtool/build_engine/target_map/export.hpp
+++ b/src/buildtool/build_engine/target_map/export.hpp
@@ -21,12 +21,14 @@
#include "src/buildtool/build_engine/target_map/result_map.hpp"
#include "src/buildtool/build_engine/target_map/target_map.hpp"
#include "src/buildtool/common/repository_config.hpp"
+#include "src/buildtool/common/statistics.hpp"
#include "src/buildtool/storage/target_cache.hpp"
void ExportRule(const nlohmann::json& desc_json,
const BuildMaps::Target::ConfiguredTarget& key,
const gsl::not_null<RepositoryConfig*>& repo_config,
const ActiveTargetCache& target_cache,
+ const gsl::not_null<Statistics*>& stats,
const BuildMaps::Target::TargetMap::SubCallerPtr& subcaller,
const BuildMaps::Target::TargetMap::SetterPtr& setter,
const BuildMaps::Target::TargetMap::LoggerPtr& logger,
diff --git a/src/buildtool/build_engine/target_map/result_map.hpp b/src/buildtool/build_engine/target_map/result_map.hpp
index 6911bf02..dcc6577e 100644
--- a/src/buildtool/build_engine/target_map/result_map.hpp
+++ b/src/buildtool/build_engine/target_map/result_map.hpp
@@ -170,7 +170,9 @@ class ResultTargetMap {
}
template <bool kIncludeOrigins = false>
- [[nodiscard]] auto ToResult() const -> ResultType<kIncludeOrigins> {
+ [[nodiscard]] auto ToResult(gsl::not_null<Statistics const*> const& stats,
+ gsl::not_null<Progress*> const& progress) const
+ -> ResultType<kIncludeOrigins> {
ResultType<kIncludeOrigins> result{};
size_t na = 0;
size_t nb = 0;
@@ -184,7 +186,7 @@ class ResultTargetMap {
result.blobs.reserve(nb);
result.trees.reserve(nt);
- auto& origin_map = Progress::Instance().OriginMap();
+ auto& origin_map = progress->OriginMap();
origin_map.clear();
origin_map.reserve(na);
for (const auto& target : targets_) {
@@ -298,7 +300,7 @@ class ResultTargetMap {
});
result.actions.erase(lastaction, result.actions.end());
- int trees_traversed = Statistics::Instance().TreesAnalysedCounter();
+ int trees_traversed = stats->TreesAnalysedCounter();
if (trees_traversed > 0) {
Logger::Log(LogLevel::Performance,
"Analysed {} non-known source trees",
@@ -314,8 +316,10 @@ class ResultTargetMap {
}
template <bool kIncludeOrigins = false>
- [[nodiscard]] auto ToJson() const -> nlohmann::json {
- auto const result = ToResult<kIncludeOrigins>();
+ [[nodiscard]] auto ToJson(gsl::not_null<Statistics const*> const& stats,
+ gsl::not_null<Progress*> const& progress) const
+ -> nlohmann::json {
+ auto const result = ToResult<kIncludeOrigins>(stats, progress);
auto actions = nlohmann::json::object();
auto trees = nlohmann::json::object();
std::for_each(result.actions.begin(),
@@ -340,11 +344,15 @@ class ResultTargetMap {
}
template <bool kIncludeOrigins = true>
- auto ToFile(std::string const& graph_file, int indent = 2) const -> void {
+ auto ToFile(std::string const& graph_file,
+ gsl::not_null<Statistics const*> const& stats,
+ gsl::not_null<Progress*> const& progress,
+ int indent = 2) const -> void {
Logger::Log(
LogLevel::Info, "Dumping action graph to file {}.", graph_file);
std::ofstream os(graph_file);
- os << std::setw(indent) << ToJson<kIncludeOrigins>() << std::endl;
+ os << std::setw(indent) << ToJson<kIncludeOrigins>(stats, progress)
+ << std::endl;
}
void Clear(gsl::not_null<TaskSystem*> const& ts) {
diff --git a/src/buildtool/build_engine/target_map/target_map.cpp b/src/buildtool/build_engine/target_map/target_map.cpp
index 4d28ac6a..aed6d93a 100644
--- a/src/buildtool/build_engine/target_map/target_map.cpp
+++ b/src/buildtool/build_engine/target_map/target_map.cpp
@@ -1238,6 +1238,7 @@ void withTargetsFile(
const BuildMaps::Target::ConfiguredTarget& key,
const gsl::not_null<RepositoryConfig*>& repo_config,
const ActiveTargetCache& target_cache,
+ const gsl::not_null<Statistics*>& stats,
const nlohmann::json& targets_file,
const gsl::not_null<BuildMaps::Base::SourceTargetMap*>& source_target,
const gsl::not_null<BuildMaps::Base::UserRuleMap*>& rule_map,
@@ -1277,6 +1278,7 @@ void withTargetsFile(
key,
repo_config,
target_cache,
+ stats,
subcaller,
setter,
logger,
@@ -1457,7 +1459,8 @@ void TreeTarget(
const BuildMaps::Target::TargetMap::LoggerPtr& logger,
const gsl::not_null<BuildMaps::Target::ResultTargetMap*>& result_map,
const gsl::not_null<BuildMaps::Base::DirectoryEntriesMap*>&
- directory_entries) {
+ directory_entries,
+ const gsl::not_null<Statistics*>& stats) {
const auto& target = key.target.GetNamedTarget();
const auto dir_name = std::filesystem::path{target.module} / target.name;
auto module_ = BuildMaps::Base::ModuleName{target.repository, dir_name};
@@ -1465,7 +1468,7 @@ void TreeTarget(
directory_entries->ConsumeAfterKeysReady(
ts,
{module_},
- [setter, subcaller, target, key, result_map, logger, dir_name](
+ [setter, subcaller, target, key, result_map, logger, dir_name, stats](
auto values) {
// expected values.size() == 1
const auto& dir_entries = *values[0];
@@ -1495,7 +1498,7 @@ void TreeTarget(
"Source tree reference for non-known tree {}",
key.target.ToString());
});
- Statistics::Instance().IncrementTreesAnalysedCounter();
+ stats->IncrementTreesAnalysedCounter();
using BuildMaps::Target::ConfiguredTarget;
@@ -1660,6 +1663,7 @@ auto CreateTargetMap(
const gsl::not_null<ResultTargetMap*>& result_map,
const gsl::not_null<RepositoryConfig*>& repo_config,
const ActiveTargetCache& target_cache,
+ const gsl::not_null<Statistics*>& stats,
std::size_t jobs) -> TargetMap {
auto target_reader = [source_target_map,
targets_file_map,
@@ -1668,11 +1672,12 @@ auto CreateTargetMap(
absent_target_map,
result_map,
repo_config,
- target_cache](auto ts,
- auto setter,
- auto logger,
- auto subcaller,
- auto key) {
+ target_cache,
+ stats](auto ts,
+ auto setter,
+ auto logger,
+ auto subcaller,
+ auto key) {
if (key.target.IsAnonymousTarget()) {
withTargetNode(key,
repo_config,
@@ -1700,7 +1705,8 @@ auto CreateTargetMap(
setter,
wrapped_logger,
result_map,
- directory_entries_map);
+ directory_entries_map,
+ stats);
}
else if (key.target.GetNamedTarget().reference_t ==
BuildMaps::Base::ReferenceType::kFile) {
@@ -1808,6 +1814,7 @@ auto CreateTargetMap(
[key,
repo_config,
target_cache,
+ stats,
source_target_map,
rule_map,
ts,
@@ -1818,6 +1825,7 @@ auto CreateTargetMap(
withTargetsFile(key,
repo_config,
target_cache,
+ stats,
*values[0],
source_target_map,
rule_map,
diff --git a/src/buildtool/build_engine/target_map/target_map.hpp b/src/buildtool/build_engine/target_map/target_map.hpp
index 2832eb35..eda27b77 100644
--- a/src/buildtool/build_engine/target_map/target_map.hpp
+++ b/src/buildtool/build_engine/target_map/target_map.hpp
@@ -28,6 +28,7 @@
#include "src/buildtool/build_engine/target_map/configured_target.hpp"
#include "src/buildtool/build_engine/target_map/result_map.hpp"
#include "src/buildtool/common/repository_config.hpp"
+#include "src/buildtool/common/statistics.hpp"
#include "src/buildtool/multithreading/async_map_consumer.hpp"
#include "src/buildtool/storage/target_cache.hpp"
@@ -44,6 +45,7 @@ auto CreateTargetMap(
const gsl::not_null<ResultTargetMap*>&,
const gsl::not_null<RepositoryConfig*>&,
const ActiveTargetCache&,
+ const gsl::not_null<Statistics*>& stats,
std::size_t jobs = 0) -> TargetMap;
// use explicit cast to std::function to allow template deduction when used