6# include "user-lock.hh"
8#include "outputs-spec.hh"
21typedef enum {rpAccept, rpDecline, rpPostpone} HookReply;
40 return status == PathStatus::Valid;
46 return status == PathStatus::Corrupt
47 || status == PathStatus::Valid;
54 std::optional<InitialOutputStatus> known;
60struct DerivationGoal :
public Goal
143 std::unique_ptr<Derivation>
drv;
145 std::unique_ptr<ParsedDerivation> parsedDrv;
162 std::map<std::string, InitialOutput> initialOutputs;
168 std::shared_ptr<BufferedSink> logFileSink, logSink;
180 std::string currentLogLine;
181 size_t currentLogLinePos = 0;
183 std::string currentHookLine;
189 std::unique_ptr<HookInstance>
hook;
199 std::unique_ptr<MaintainCount<uint64_t>> mcExpectedBuilds, mcRunningBuilds;
201 std::unique_ptr<Activity> act;
208 std::map<ActivityId, Activity> builderActivities;
217 BuildMode buildMode = bmNormal);
220 BuildMode buildMode = bmNormal);
221 virtual ~DerivationGoal();
225 std::string key()
override;
239 Co outputsSubstitutionTried();
240 Co gaveUpOnSubstitution();
241 Co closureRepaired();
244 virtual Co tryLocalBuild();
247 Co resolvedFinished();
254 virtual int getChildStatus();
286 virtual void cleanupPreChildKill();
287 virtual void cleanupPostChildKill();
288 virtual bool cleanupDecideWhetherDiskFull();
289 virtual void cleanupPostOutputsRegisteredModeCheck();
290 virtual void cleanupPostOutputsRegisteredModeNonCheck();
307 OutputPathMap queryDerivationOutputMap();
335 std::optional<Error>
ex = {});
337 void waiteeDone(GoalPtr waitee, ExitCode result)
override;
339 StorePathSet exportReferences(
const StorePathSet & storePaths);
346MakeError(NotDeterministic, BuildError);
Definition file-descriptor.hh:152
Definition pathlocks.hh:25
PathStatus
Definition derivation-goal.hh:27
int Descriptor
Definition file-descriptor.hh:20
JobCategory
Definition goal.hh:44
@ Build
Definition goal.hh:48
std::variant< std::string, std::string_view > data
Definition lexer.l:177
unsigned int status
Definition lexer.l:663
return fd
Definition lexer.l:2948
std::map< OutputName, Realisation > SingleDrvOutputs
Definition realisation.hh:87
Definition derivations.hh:285
Status
Definition build-result.hh:21
std::unique_ptr< HookInstance > hook
Definition derivation-goal.hh:189
JobCategory jobCategory() const override
Hint for the scheduler, which concurrency limit applies.
Definition derivation-goal.hh:341
std::unique_ptr< Derivation > drv
Definition derivation-goal.hh:143
unsigned long logSize
Definition derivation-goal.hh:173
HookReply tryBuildHook()
Definition derivation-goal.cc:1127
void closeLogFile()
Definition derivation-goal.cc:1290
SingleDrvOutputs assertPathValidity()
Definition derivation-goal.cc:1517
void handleChildOutput(Descriptor fd, std::string_view data) override
Definition derivation-goal.cc:1309
Path openLogFile()
Definition derivation-goal.cc:1252
Co init() override
Definition derivation-goal.cc:39
NeedRestartForMoreOutputs needRestart
Definition derivation-goal.hh:112
std::optional< DerivationType > derivationType
Definition derivation-goal.hh:195
NeedRestartForMoreOutputs
Definition derivation-goal.hh:90
@ OutputsUnmodifedDontNeed
Definition derivation-goal.hh:95
@ BuildInProgressWillNotNeed
Definition derivation-goal.hh:106
@ OutputsAddedDoNeed
Definition derivation-goal.hh:100
virtual void cleanupHookFinally()
Definition derivation-goal.cc:841
RetrySubstitution retrySubstitution
Definition derivation-goal.hh:138
std::map< std::pair< StorePath, std::string >, StorePath > inputDrvOutputs
Definition derivation-goal.hh:85
OutputsSpec wantedOutputs
Definition derivation-goal.hh:78
void timedOut(Error &&ex) override
Definition derivation-goal.cc:115
virtual SingleDrvOutputs registerOutputs()
Definition derivation-goal.cc:1240
PathLocks outputLocks
Definition derivation-goal.hh:154
std::pair< bool, SingleDrvOutputs > checkPathValidity()
Definition derivation-goal.cc:1437
void addWantedOutputs(const OutputsSpec &outputs)
Definition derivation-goal.cc:123
AutoCloseFD fdLogFile
Definition derivation-goal.hh:167
std::shared_ptr< DerivationGoal > resolvedDrvGoal
Definition derivation-goal.hh:73
RetrySubstitution
Definition derivation-goal.hh:117
@ YesNeed
Definition derivation-goal.hh:126
@ NoNeed
Definition derivation-goal.hh:121
@ AlreadyRetried
Definition derivation-goal.hh:131
StorePathSet inputPaths
Definition derivation-goal.hh:160
virtual void closeReadPipes()
Definition derivation-goal.cc:832
std::unique_ptr< Activity > actLock
Definition derivation-goal.hh:206
virtual void killChild()
Definition derivation-goal.cc:107
bool useDerivation
Definition derivation-goal.hh:65
std::list< std::string > logTail
Definition derivation-goal.hh:178
std::map< std::string, std::optional< StorePath > > queryPartialDerivationOutputMap()
Definition derivation-goal.cc:1404
std::string machineName
Definition derivation-goal.hh:213
virtual void signRealisation(Realisation &)
Definition derivation-goal.hh:270
StorePath drvPath
Definition derivation-goal.hh:68
std::optional< Error > ex
Definition goal.hh:379
Worker & worker
Definition goal.hh:62
Definition derivation-goal.hh:33
bool isPresent() const
Definition derivation-goal.hh:45
bool isValid() const
Definition derivation-goal.hh:39
Definition derivation-goal.hh:51
Definition outputs-spec.hh:26
Definition realisation.hh:49
std::string Path
Definition types.hh:22