mirror of
https://github.com/NixOS/nix
synced 2025-06-24 22:11:15 +02:00
commit
371fcf91c3
5 changed files with 15 additions and 14 deletions
|
@ -613,9 +613,6 @@ Goal::Co DerivationBuildingGoal::tryToBuild()
|
||||||
void closeLogFile() override {
|
void closeLogFile() override {
|
||||||
goal.closeLogFile();
|
goal.closeLogFile();
|
||||||
}
|
}
|
||||||
SingleDrvOutputs assertPathValidity() override {
|
|
||||||
return goal.assertPathValidity();
|
|
||||||
}
|
|
||||||
void appendLogTailErrorMsg(std::string & msg) override {
|
void appendLogTailErrorMsg(std::string & msg) override {
|
||||||
goal.appendLogTailErrorMsg(msg);
|
goal.appendLogTailErrorMsg(msg);
|
||||||
}
|
}
|
||||||
|
|
|
@ -210,6 +210,13 @@ Goal::Co DerivationGoal::haveDerivation(StorePath drvPath)
|
||||||
.outputs = wantedOutputs,
|
.outputs = wantedOutputs,
|
||||||
});
|
});
|
||||||
|
|
||||||
|
if (buildMode == bmCheck) {
|
||||||
|
/* In checking mode, the builder will not register any outputs.
|
||||||
|
So we want to make sure the ones that we wanted to check are
|
||||||
|
properly there. */
|
||||||
|
buildResult.builtOutputs = assertPathValidity(drvPath);
|
||||||
|
}
|
||||||
|
|
||||||
co_return amDone(g->exitCode, g->ex);
|
co_return amDone(g->exitCode, g->ex);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -589,10 +589,10 @@ static void replaceValidPath(const Path & storePath, const Path & tmpPath)
|
||||||
way first. We'd better not be interrupted here, because if
|
way first. We'd better not be interrupted here, because if
|
||||||
we're repairing (say) Glibc, we end up with a broken system. */
|
we're repairing (say) Glibc, we end up with a broken system. */
|
||||||
Path oldPath;
|
Path oldPath;
|
||||||
|
|
||||||
if (pathExists(storePath)) {
|
if (pathExists(storePath)) {
|
||||||
// why do we loop here?
|
// why do we loop here?
|
||||||
// although makeTempPath should be unique, we can't
|
// although makeTempPath should be unique, we can't
|
||||||
// guarantee that.
|
// guarantee that.
|
||||||
do {
|
do {
|
||||||
oldPath = makeTempPath(storePath, ".old");
|
oldPath = makeTempPath(storePath, ".old");
|
||||||
|
@ -1871,7 +1871,7 @@ SingleDrvOutputs DerivationBuilderImpl::registerOutputs()
|
||||||
also a source for non-determinism. */
|
also a source for non-determinism. */
|
||||||
if (delayedException)
|
if (delayedException)
|
||||||
std::rethrow_exception(delayedException);
|
std::rethrow_exception(delayedException);
|
||||||
return miscMethods->assertPathValidity();
|
return {};
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Apply output checks. */
|
/* Apply output checks. */
|
||||||
|
|
|
@ -97,14 +97,6 @@ struct DerivationBuilderCallbacks
|
||||||
*/
|
*/
|
||||||
virtual void closeLogFile() = 0;
|
virtual void closeLogFile() = 0;
|
||||||
|
|
||||||
/**
|
|
||||||
* Aborts if any output is not valid or corrupt, and otherwise
|
|
||||||
* returns a 'SingleDrvOutputs' structure containing all outputs.
|
|
||||||
*
|
|
||||||
* @todo Probably should just be in `DerivationGoal`.
|
|
||||||
*/
|
|
||||||
virtual SingleDrvOutputs assertPathValidity() = 0;
|
|
||||||
|
|
||||||
virtual void appendLogTailErrorMsg(std::string & msg) = 0;
|
virtual void appendLogTailErrorMsg(std::string & msg) = 0;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -22,6 +22,11 @@ clearStore
|
||||||
nix-build dependencies.nix --no-out-link
|
nix-build dependencies.nix --no-out-link
|
||||||
nix-build dependencies.nix --no-out-link --check
|
nix-build dependencies.nix --no-out-link --check
|
||||||
|
|
||||||
|
# Make sure checking just one output works (#13293)
|
||||||
|
nix-build multiple-outputs.nix -A a --no-out-link
|
||||||
|
nix-store --delete "$(nix-build multiple-outputs.nix -A a.second --no-out-link)"
|
||||||
|
nix-build multiple-outputs.nix -A a.first --no-out-link --check
|
||||||
|
|
||||||
# Build failure exit codes (100, 104, etc.) are from
|
# Build failure exit codes (100, 104, etc.) are from
|
||||||
# doc/manual/source/command-ref/status-build-failure.md
|
# doc/manual/source/command-ref/status-build-failure.md
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue