1
1
Fork 0
mirror of https://github.com/NixOS/nix.git synced 2025-11-21 09:49:36 +01:00

Show duration of running builds

This commit is contained in:
Eelco Dolstra 2020-11-13 11:19:37 +01:00
parent 256d6427fa
commit 208425bd12

View file

@ -8,6 +8,7 @@
#include <map> #include <map>
#include <thread> #include <thread>
#include <iostream> #include <iostream>
#include <chrono>
#include <termios.h> #include <termios.h>
#include <poll.h> #include <poll.h>
@ -62,6 +63,7 @@ private:
bool visible = true; bool visible = true;
ActivityId parent; ActivityId parent;
std::optional<std::string> name; std::optional<std::string> name;
std::optional<std::chrono::time_point<std::chrono::steady_clock>> startTime;
}; };
struct ActivitiesByType struct ActivitiesByType
@ -396,6 +398,9 @@ public:
|| type == actSubstitute) || type == actSubstitute)
i->visible = false; i->visible = false;
if (type == actBuild)
i->startTime = std::chrono::steady_clock::now();
update(*state); update(*state);
} }
@ -603,10 +608,13 @@ public:
fmt(" %s", fmt(" %s",
renderBar(builds.done, builds.failed, builds.running, builds.expected))); renderBar(builds.done, builds.failed, builds.running, builds.expected)));
auto now = std::chrono::steady_clock::now();
for (auto & build : state.activitiesByType[actBuild].its) { for (auto & build : state.activitiesByType[actBuild].its) {
state.statusLines.insert_or_assign({idBuilds, n++}, state.statusLines.insert_or_assign({idBuilds, n++},
fmt(ANSI_BOLD " ‣ %s%s: %s", fmt(ANSI_BOLD " ‣ %s (%d s)%s: %s",
build.second->s, build.second->s,
std::chrono::duration_cast<std::chrono::seconds>(now - *build.second->startTime).count(),
build.second->phase ? fmt(" (%s)", *build.second->phase) : "", build.second->phase ? fmt(" (%s)", *build.second->phase) : "",
build.second->lastLine)); build.second->lastLine));
} }