Nix 2.26.3
Nix, the purely functional package manager; unstable internal interfaces
 
Loading...
Searching...
No Matches
substitution-goal.hh
Go to the documentation of this file.
1#pragma once
3
4#include "worker.hh"
5#include "store-api.hh"
6#include "goal.hh"
7#include "muxable-pipe.hh"
8#include <coroutine>
9#include <future>
10#include <source_location>
11
12namespace nix {
13
14struct PathSubstitutionGoal : public Goal
15{
20
24 RepairFlag repair;
25
30
34 std::thread thr;
35
36 std::unique_ptr<MaintainCount<uint64_t>> maintainExpectedSubstitutions,
37 maintainRunningSubstitutions, maintainExpectedNar, maintainExpectedDownload;
38
42 std::optional<ContentAddress> ca;
43
44 Done done(
45 ExitCode result,
47 std::optional<std::string> errorMsg = {});
48
49public:
50 PathSubstitutionGoal(const StorePath & storePath, Worker & worker, RepairFlag repair = NoRepair, std::optional<ContentAddress> ca = std::nullopt);
52
53 void timedOut(Error && ex) override { unreachable(); };
54
59 std::string key() override
60 {
61 return "a$" + std::string(storePath.name()) + "$" + worker.store.printStorePath(storePath);
62 }
63
67 Co init() override;
68 Co gotInfo();
69 Co tryToRun(StorePath subPath, nix::ref<Store> sub, std::shared_ptr<const ValidPathInfo> info, bool & substituterFailed);
70 Co finished();
71
75 void handleChildOutput(Descriptor fd, std::string_view data) override {};
76 void handleEOF(Descriptor fd) override;
77
78 /* Called by destructor, can't be overridden */
79 void cleanup() override final;
80
81 JobCategory jobCategory() const override {
83 };
84};
85
86}
Definition path.hh:27
Definition worker.hh:65
Definition ref.hh:15
int Descriptor
Definition file-descriptor.hh:20
JobCategory
Definition goal.hh:44
@ Substitution
Definition goal.hh:52
std::variant< std::string, std::string_view > data
Definition lexer.l:177
RepairFlag repair
Definition lexer.l:7173
unsigned int status
Definition lexer.l:663
return fd
Definition lexer.l:2948
Pipe MuxablePipe
Definition muxable-pipe.hh:26
Status
Definition build-result.hh:21
Definition goal.hh:126
std::optional< Error > ex
Definition goal.hh:379
Worker & worker
Definition goal.hh:62
Definition substitution-goal.hh:15
std::string key() override
Definition substitution-goal.hh:59
Co init() override
Definition substitution-goal.cc:42
MuxablePipe outPipe
Definition substitution-goal.hh:29
std::thread thr
Definition substitution-goal.hh:34
RepairFlag repair
Definition substitution-goal.hh:24
void timedOut(Error &&ex) override
Definition substitution-goal.hh:53
std::optional< ContentAddress > ca
Definition substitution-goal.hh:42
void handleChildOutput(Descriptor fd, std::string_view data) override
Definition substitution-goal.hh:75
JobCategory jobCategory() const override
Hint for the scheduler, which concurrency limit applies.
Definition substitution-goal.hh:81
StorePath storePath
Definition substitution-goal.hh:19