Nix 2.93.3
Lix: A modern, delicious implementation of the Nix package manager; unstable internal interfaces
Loading...
Searching...
No Matches
substitution-goal.hh
Go to the documentation of this file.
1#pragma once
3
8
9namespace nix {
10
11class Worker;
12
13struct PathSubstitutionGoal : public Goal
14{
19
24 std::optional<StorePath> subPath;
25
29 std::list<ref<Store>> subs;
30
34 std::shared_ptr<Store> sub;
35
39 bool substituterFailed = false;
40
44 std::shared_ptr<const ValidPathInfo> info;
45
49 kj::Own<kj::CrossThreadPromiseFulfiller<void>> outPipe;
50
54 std::future<void> thr;
55
59 RepairFlag repair;
60
66
67 NotifyingCounter<uint64_t>::Bump maintainExpectedSubstitutions,
68 maintainRunningSubstitutions, maintainExpectedNar, maintainExpectedDownload;
69
73 std::optional<ContentAddress> ca;
74
75 WorkResult done(
76 ExitCode result,
78 std::optional<std::string> errorMsg = {});
79
80public:
82 const StorePath & storePath,
83 Worker & worker,
84 bool isDependency,
85 RepairFlag repair = NoRepair,
86 std::optional<ContentAddress> ca = std::nullopt
87 );
89
90 kj::Promise<Result<WorkResult>> workImpl() noexcept override;
91
95 kj::Promise<Result<WorkResult>> tryNext() noexcept;
96 kj::Promise<Result<WorkResult>> referencesValid() noexcept;
97 kj::Promise<Result<WorkResult>> tryToRun() noexcept;
98 kj::Promise<Result<WorkResult>> finished() noexcept;
99
100 /* Called by destructor, can't be overridden */
101 void cleanup() override final;
102
103 JobCategory jobCategory() const override {
105 };
106};
107
108}
Definition notifying-counter.hh:19
Definition path.hh:21
Definition worker.hh:89
JobCategory
Definition goal.hh:36
@ Substitution
Definition goal.hh:44
Status
Definition build-result.hh:24
Definition goal.hh:89
const bool isDependency
Definition goal.hh:61
Worker & worker
Definition goal.hh:54
Definition substitution-goal.hh:14
std::shared_ptr< Store > sub
Definition substitution-goal.hh:34
std::shared_ptr< const ValidPathInfo > info
Definition substitution-goal.hh:44
std::optional< StorePath > subPath
Definition substitution-goal.hh:24
std::list< ref< Store > > subs
Definition substitution-goal.hh:29
std::future< void > thr
Definition substitution-goal.hh:54
kj::Own< kj::CrossThreadPromiseFulfiller< void > > outPipe
Definition substitution-goal.hh:49
RepairFlag repair
Definition substitution-goal.hh:59
Path destPath
Definition substitution-goal.hh:65
std::optional< ContentAddress > ca
Definition substitution-goal.hh:73
bool substituterFailed
Definition substitution-goal.hh:39
JobCategory jobCategory() const override
Hint for the scheduler, which concurrency limit applies.
Definition substitution-goal.hh:103
kj::Promise< Result< WorkResult > > tryNext() noexcept
Definition substitution-goal.cc:75
StorePath storePath
Definition substitution-goal.hh:18
std::string Path
Definition types.hh:28