summaryrefslogtreecommitdiff
path: root/src/buildtool/graph_traverser/graph_traverser.hpp
diff options
context:
space:
mode:
authorOliver Reiche <oliver.reiche@huawei.com>2022-08-08 17:25:57 +0200
committerOliver Reiche <oliver.reiche@huawei.com>2022-08-19 18:18:53 +0200
commit61ee4517214cd8547ba7088fb4a53ec543d986b2 (patch)
tree09426e13ebac07fbec58d84c979fa759f9cea8cb /src/buildtool/graph_traverser/graph_traverser.hpp
parentf19c4d9296881083b8dc313e03c6535c68daa7a2 (diff)
downloadjustbuild-61ee4517214cd8547ba7088fb4a53ec543d986b2.tar.gz
Rebuild: Support proper progress printing
Diffstat (limited to 'src/buildtool/graph_traverser/graph_traverser.hpp')
-rw-r--r--src/buildtool/graph_traverser/graph_traverser.hpp9
1 files changed, 8 insertions, 1 deletions
diff --git a/src/buildtool/graph_traverser/graph_traverser.hpp b/src/buildtool/graph_traverser/graph_traverser.hpp
index acd1515a..0e81d46e 100644
--- a/src/buildtool/graph_traverser/graph_traverser.hpp
+++ b/src/buildtool/graph_traverser/graph_traverser.hpp
@@ -351,12 +351,19 @@ class GraphTraverser {
RemoteExecutionConfig::PlatformProperties(),
clargs_.build.timeout};
bool traversing{false};
- std::atomic<bool> failed{false};
+ std::atomic<bool> done = false;
+ std::atomic<bool> failed = false;
+ std::condition_variable cv{};
+ auto observer =
+ std::thread([this, &done, &cv]() { reporter_(&done, &cv); });
{
Traverser t{executor, g, clargs_.jobs, &failed};
traversing =
t.Traverse({std::begin(artifact_ids), std::end(artifact_ids)});
}
+ done = true;
+ cv.notify_all();
+ observer.join();
if (traversing and not failed and clargs_.rebuild->dump_flaky) {
std::ofstream file{*clargs_.rebuild->dump_flaky};