diff options
author | Robert Hensing <roberth@users.noreply.github.com> | 2023-04-17 18:08:05 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-04-17 18:08:05 +0200 |
commit | 3f9589f17e9e03aeb45b70f436c25227c728ba51 (patch) | |
tree | 347724e73ffcc1f437ee2665434d097ed1b5ea0c /src/libstore/build/goal.hh | |
parent | 39e0f609cce54276ebfd9ac647364b49c73120b0 (diff) | |
parent | 24866b71c40f0fcb5a601d90d4f87366fe626090 (diff) |
Merge pull request #6312 from obsidiansystems/keyed-build-result
Shuffle `BuildResult` data definition, make state machine clearer, introduce `SingleDrvOutputs`
Diffstat (limited to 'src/libstore/build/goal.hh')
-rw-r--r-- | src/libstore/build/goal.hh | 16 |
1 files changed, 15 insertions, 1 deletions
diff --git a/src/libstore/build/goal.hh b/src/libstore/build/goal.hh index f4bf6f38b..c0e12a2ed 100644 --- a/src/libstore/build/goal.hh +++ b/src/libstore/build/goal.hh @@ -81,11 +81,26 @@ struct Goal : public std::enable_shared_from_this<Goal> */ ExitCode exitCode = ecBusy; +protected: /** * Build result. */ BuildResult buildResult; +public: + + /** + * Project a `BuildResult` with just the information that pertains + * to the given request. + * + * In general, goals may be aliased between multiple requests, and + * the stored `BuildResult` has information for the union of all + * requests. We don't want to leak what the other request are for + * sake of both privacy and determinism, and this "safe accessor" + * ensures we don't. + */ + BuildResult getBuildResult(const DerivedPath &); + /** * Exception containing an error message, if any. */ @@ -93,7 +108,6 @@ struct Goal : public std::enable_shared_from_this<Goal> Goal(Worker & worker, DerivedPath path) : worker(worker) - , buildResult { .path = std::move(path) } { } virtual ~Goal() |