aboutsummaryrefslogtreecommitdiff
path: root/src/libstore/build.cc
diff options
context:
space:
mode:
authorEelco Dolstra <edolstra@gmail.com>2017-08-25 17:49:40 +0200
committerEelco Dolstra <edolstra@gmail.com>2017-08-25 17:49:40 +0200
commitc137c0a5ebc0d58c53f86986ab66967ac8629cbe (patch)
tree38e01bef5549985449a4c911c1444758d585335f /src/libstore/build.cc
parentf194629f96d4bdbded897e7e88ac0d03211c959d (diff)
Allow activities to be nested
In particular, this allows more relevant activities ("substituting X") to supersede inferior ones ("downloading X").
Diffstat (limited to 'src/libstore/build.cc')
-rw-r--r--src/libstore/build.cc9
1 files changed, 6 insertions, 3 deletions
diff --git a/src/libstore/build.cc b/src/libstore/build.cc
index 77dee2914..cb67d7a6c 100644
--- a/src/libstore/build.cc
+++ b/src/libstore/build.cc
@@ -2407,14 +2407,14 @@ struct BuilderLogger : Logger
}
void startActivity(ActivityId act, ActivityType type,
- const std::string & s, const Fields & fields) override
+ const std::string & s, const Fields & fields, ActivityId parent) override
{
nlohmann::json json;
json["action"] = "start";
json["id"] = act;
json["type"] = type;
json["text"] = s;
- // FIXME: handle fields
+ // FIXME: handle fields, parent
log(lvlError, "@nix " + json.dump());
}
@@ -3313,7 +3313,7 @@ void DerivationGoal::flushLine()
if (type == actDownload)
builderActivities.emplace(std::piecewise_construct,
std::forward_as_tuple(json["id"]),
- std::forward_as_tuple(*logger, type, json["text"]));
+ std::forward_as_tuple(*logger, type, json["text"], Logger::Fields{}, act->id));
}
else if (action == "stop")
@@ -3655,6 +3655,9 @@ void SubstitutionGoal::tryToRun()
/* Wake up the worker loop when we're done. */
Finally updateStats([this]() { outPipe.writeSide = -1; });
+ Activity act(*logger, actSubstitute, "", Logger::Fields{storePath, sub->getUri()});
+ PushActivity pact(act.id);
+
copyStorePath(ref<Store>(sub), ref<Store>(worker.store.shared_from_this()),
storePath, repair);