aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authoreldritch horrors <pennae@lix.systems>2024-10-05 00:38:35 +0200
committereldritch horrors <pennae@lix.systems>2024-10-05 21:19:51 +0000
commit03cbc0ecb9402fe7bbe1a2acd4643995003d7bb2 (patch)
tree47cfc9bcbe1444a93fb6563e350fb7ac8dd85ed7 /src
parent1caf2afb1d1fffe0ff54244d335c168f4c32cbdf (diff)
libstore: move Goal::ex to WorkResult
yet another duplicated field. it's the last one though. Change-Id: I352df8d306794d262d8c9066f3be78acd40e82cf
Diffstat (limited to 'src')
-rw-r--r--src/libstore/build/entry-points.cc12
-rw-r--r--src/libstore/build/goal.cc1
-rw-r--r--src/libstore/build/goal.hh6
3 files changed, 6 insertions, 13 deletions
diff --git a/src/libstore/build/entry-points.cc b/src/libstore/build/entry-points.cc
index edfad3cbb..808179a4d 100644
--- a/src/libstore/build/entry-points.cc
+++ b/src/libstore/build/entry-points.cc
@@ -26,11 +26,11 @@ void Store::buildPaths(const std::vector<DerivedPath> & reqs, BuildMode buildMod
StringSet failed;
std::shared_ptr<Error> ex;
for (auto & [i, result] : goals) {
- if (i->ex) {
+ if (result.ex) {
if (ex)
- logError(i->ex->info());
+ logError(result.ex->info());
else
- ex = i->ex;
+ ex = result.ex;
}
if (result.exitCode != Goal::ecSuccess) {
if (auto i2 = dynamic_cast<DerivationGoal *>(i.get()))
@@ -119,9 +119,9 @@ void Store::ensurePath(const StorePath & path)
auto [goal, result] = *goals.begin();
if (result.exitCode != Goal::ecSuccess) {
- if (goal->ex) {
- goal->ex->withExitStatus(worker.failingExitStatus());
- throw std::move(*goal->ex);
+ if (result.ex) {
+ result.ex->withExitStatus(worker.failingExitStatus());
+ throw std::move(*result.ex);
} else
throw Error(worker.failingExitStatus(), "path '%s' does not exist and cannot be created", printStorePath(path));
}
diff --git a/src/libstore/build/goal.cc b/src/libstore/build/goal.cc
index c7dee08b7..3f30c922b 100644
--- a/src/libstore/build/goal.cc
+++ b/src/libstore/build/goal.cc
@@ -25,7 +25,6 @@ try {
BOOST_OUTCOME_CO_TRY(auto result, co_await workImpl());
trace("done");
- ex = result.ex;
notify->fulfill(result);
cleanup();
diff --git a/src/libstore/build/goal.hh b/src/libstore/build/goal.hh
index bceea3c54..b524d3118 100644
--- a/src/libstore/build/goal.hh
+++ b/src/libstore/build/goal.hh
@@ -118,12 +118,6 @@ protected:
virtual kj::Promise<Result<WorkResult>> workImpl() noexcept = 0;
public:
-
- /**
- * Exception containing an error message, if any.
- */
- std::shared_ptr<Error> ex;
-
explicit Goal(Worker & worker, bool isDependency)
: worker(worker)
, isDependency(isDependency)