Skip to content

Commit 5a7d176

Browse files
committed
Use the BuildOptions more eagerly
1 parent 6303d8b commit 5a7d176

File tree

3 files changed

+20
-25
lines changed

3 files changed

+20
-25
lines changed

src/hydra-queue-runner/build-remote.cc

Lines changed: 4 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -269,12 +269,6 @@ StorePathSet sendInputs(
269269
return inputs;
270270
}
271271

272-
struct BuildOptions {
273-
unsigned int maxSilentTime, buildTimeout, repeats;
274-
size_t maxLogSize;
275-
bool enforceDeterminism;
276-
};
277-
278272
void RemoteResult::updateWithBuildResult(const nix::BuildResult & buildResult)
279273
{
280274
RemoteResult thisArrow;
@@ -337,7 +331,7 @@ BuildResult performBuild(
337331
Store & localStore,
338332
StorePath drvPath,
339333
const BasicDerivation & drv,
340-
const BuildOptions & options,
334+
const State::BuildOptions & options,
341335
counter & nrStepsBuilding
342336
)
343337
{
@@ -472,7 +466,7 @@ void copyPathsFromRemote(
472466

473467
void State::buildRemote(ref<Store> destStore,
474468
Machine::ptr machine, Step::ptr step,
475-
unsigned int maxSilentTime, unsigned int buildTimeout, unsigned int repeats,
469+
const BuildOptions & buildOptions,
476470
RemoteResult & result, std::shared_ptr<ActiveStep> activeStep,
477471
std::function<void(StepState)> updateStep,
478472
NarMemberDatas & narMembers)
@@ -523,7 +517,7 @@ void State::buildRemote(ref<Store> destStore,
523517
});
524518

525519
try {
526-
handshake(conn, repeats);
520+
handshake(conn, buildOptions.repeats);
527521
} catch (EndOfFile & e) {
528522
child.pid.wait();
529523
string s = chomp(readFile(result.logFile));
@@ -567,13 +561,7 @@ void State::buildRemote(ref<Store> destStore,
567561
*localStore,
568562
step->drvPath,
569563
BasicDerivation(*step->drv),
570-
{
571-
.maxSilentTime = maxSilentTime,
572-
.buildTimeout = buildTimeout,
573-
.repeats = repeats,
574-
.maxLogSize = maxLogSize,
575-
.enforceDeterminism = step->isDeterministic,
576-
},
564+
buildOptions,
577565
nrStepsBuilding
578566
);
579567

src/hydra-queue-runner/builder.cc

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -98,8 +98,10 @@ State::StepResult State::doBuildStep(nix::ref<Store> destStore,
9898
it). */
9999
BuildID buildId;
100100
std::optional<StorePath> buildDrvPath;
101-
unsigned int maxSilentTime, buildTimeout;
102-
unsigned int repeats = step->isDeterministic ? 1 : 0;
101+
BuildOptions buildOptions;
102+
buildOptions.repeats = step->isDeterministic ? 1 : 0;
103+
buildOptions.maxLogSize = maxLogSize;
104+
buildOptions.enforceDeterminism = step->isDeterministic;
103105

104106
auto conn(dbPool.get());
105107

@@ -134,18 +136,18 @@ State::StepResult State::doBuildStep(nix::ref<Store> destStore,
134136
{
135137
auto i = jobsetRepeats.find(std::make_pair(build2->projectName, build2->jobsetName));
136138
if (i != jobsetRepeats.end())
137-
repeats = std::max(repeats, i->second);
139+
buildOptions.repeats = std::max(buildOptions.repeats, i->second);
138140
}
139141
}
140142
if (!build) build = *dependents.begin();
141143

142144
buildId = build->id;
143145
buildDrvPath = build->drvPath;
144-
maxSilentTime = build->maxSilentTime;
145-
buildTimeout = build->buildTimeout;
146+
buildOptions.maxSilentTime = build->maxSilentTime;
147+
buildOptions.buildTimeout = build->buildTimeout;
146148

147149
printInfo("performing step ‘%s’ %d times on ‘%s’ (needed by build %d and %d others)",
148-
localStore->printStorePath(step->drvPath), repeats + 1, machine->sshName, buildId, (dependents.size() - 1));
150+
localStore->printStorePath(step->drvPath), buildOptions.repeats + 1, machine->sshName, buildId, (dependents.size() - 1));
149151
}
150152

151153
if (!buildOneDone)
@@ -206,7 +208,7 @@ State::StepResult State::doBuildStep(nix::ref<Store> destStore,
206208

207209
try {
208210
/* FIXME: referring builds may have conflicting timeouts. */
209-
buildRemote(destStore, machine, step, maxSilentTime, buildTimeout, repeats, result, activeStep, updateStep, narMembers);
211+
buildRemote(destStore, machine, step, buildOptions, result, activeStep, updateStep, narMembers);
210212
} catch (Error & e) {
211213
if (activeStep->state_.lock()->cancelled) {
212214
printInfo("marking step %d of build %d as cancelled", stepNr, buildId);

src/hydra-queue-runner/state.hh

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -447,6 +447,12 @@ private:
447447
public:
448448
State();
449449

450+
struct BuildOptions {
451+
unsigned int maxSilentTime, buildTimeout, repeats;
452+
size_t maxLogSize;
453+
bool enforceDeterminism;
454+
};
455+
450456
private:
451457

452458
nix::MaintainCount<counter> startDbUpdate();
@@ -531,8 +537,7 @@ private:
531537

532538
void buildRemote(nix::ref<nix::Store> destStore,
533539
Machine::ptr machine, Step::ptr step,
534-
unsigned int maxSilentTime, unsigned int buildTimeout,
535-
unsigned int repeats,
540+
const BuildOptions & buildOptions,
536541
RemoteResult & result, std::shared_ptr<ActiveStep> activeStep,
537542
std::function<void(StepState)> updateStep,
538543
NarMemberDatas & narMembers);

0 commit comments

Comments
 (0)