mirror of
https://github.com/NixOS/nix.git
synced 2025-11-22 02:09:36 +01:00
Simplify handling of statuses for build errors
Instead of passing them around separately, or doing finicky logic in a try-catch block to recover them, just make `BuildError` always contain a status, and make it the thrower's responsibility to set it. This is much more simple and explicit. Once that change is done, split the `done` functions of `DerivationGoal` and `DerivationBuildingGoal` into separate success and failure functions, which ends up being easier to understand and hardly any duplication. Also, change the handling of failures in resolved cases to use `BuildResult::DependencyFailed` and a new message. This is because the underlying derivation will also get its message printed --- which is good, because in general the resolved derivation is not unique. One dyn drv test had to be updated, but CA (and dyn drv) is experimental, so I do not mind. Finally, delete `SubstError` because it is unused.
This commit is contained in:
parent
0590b13156
commit
169033001d
16 changed files with 153 additions and 92 deletions
|
|
@ -770,6 +770,7 @@ StorePathSet Store::exportReferences(const StorePathSet & storePaths, const Stor
|
|||
for (auto & storePath : storePaths) {
|
||||
if (!inputPaths.count(storePath))
|
||||
throw BuildError(
|
||||
BuildResult::InputRejected,
|
||||
"cannot export references of path '%s' because it is not in the input closure of the derivation",
|
||||
printStorePath(storePath));
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue