aboutsummaryrefslogtreecommitdiff
path: root/src/libstore/build/goal.hh
diff options
context:
space:
mode:
authoreldritch horrors <pennae@lix.systems>2024-08-25 13:41:56 +0200
committereldritch horrors <pennae@lix.systems>2024-08-30 10:18:28 +0000
commita5c1e73fa8e004a93e37254a3582ba91048c4550 (patch)
tree7788396907f8108a413eec22623ee01737cfb54d /src/libstore/build/goal.hh
parentbb161a96cf1171a5c4ed3661a0f2f5a93ac10804 (diff)
libstore: add "is dependency" info to goal
whether goal errors are reported via the `ex` member or just printed to the log depends on whether the goal is a toplevel goal or a dependency. if goals are aware of this themselves we can move error printing out of the worker loop, and since a running worker can only be used by running goals it's totally sufficient to keep a `Worker::running` flag for this Change-Id: I6b5cbe6eccee1afa5fde80653c4b968554ddd16f
Diffstat (limited to 'src/libstore/build/goal.hh')
-rw-r--r--src/libstore/build/goal.hh10
1 files changed, 9 insertions, 1 deletions
diff --git a/src/libstore/build/goal.hh b/src/libstore/build/goal.hh
index 1bfea8231..1f25fb233 100644
--- a/src/libstore/build/goal.hh
+++ b/src/libstore/build/goal.hh
@@ -61,6 +61,13 @@ struct Goal
Worker & worker;
/**
+ * Whether this goal is only a dependency of other goals. Toplevel
+ * goals that are also dependencies of other toplevel goals do not
+ * set this, only goals that are exclusively dependencies do this.
+ */
+ const bool isDependency;
+
+ /**
* Goals that this goal is waiting for.
*/
Goals waitees;
@@ -143,8 +150,9 @@ public:
*/
std::shared_ptr<Error> ex;
- explicit Goal(Worker & worker)
+ explicit Goal(Worker & worker, bool isDependency)
: worker(worker)
+ , isDependency(isDependency)
{ }
virtual ~Goal() noexcept(false)