diff options
author | Dan Peebles <pumpkin@me.com> | 2016-04-16T23·58-0400 |
---|---|---|
committer | Dan Peebles <pumpkin@me.com> | 2016-04-16T23·58-0400 |
commit | 608b0265e104b4a97f51e5745b1a32078770f3cf (patch) | |
tree | 49954dfd00ad973e646fddab37b4ee6d67333be8 | |
parent | 04237870866faaf7dce7c21332b47fef5d79ce65 (diff) |
Print out all bad references/requisites at once
Also updates tests to check for new information. Fixes #799
-rw-r--r-- | src/libstore/build.cc | 15 | ||||
-rw-r--r-- | tests/check-reqs.sh | 3 |
2 files changed, 15 insertions, 3 deletions
diff --git a/src/libstore/build.cc b/src/libstore/build.cc index ba3f3a371d8c..4b1c177fe27b 100644 --- a/src/libstore/build.cc +++ b/src/libstore/build.cc @@ -2775,14 +2775,25 @@ void DerivationGoal::registerOutputs() } else used = references; + PathSet badPaths; + for (auto & i : used) if (allowed) { if (spec.find(i) == spec.end()) - throw BuildError(format("output ‘%1%’ is not allowed to refer to path ‘%2%’") % actualPath % i); + badPaths.insert(i); } else { if (spec.find(i) != spec.end()) - throw BuildError(format("output ‘%1%’ is not allowed to refer to path ‘%2%’") % actualPath % i); + badPaths.insert(i); + } + + if (!badPaths.empty()) { + string badPathsStr; + for (auto & i : badPaths) { + badPathsStr += "\n\t"; + badPathsStr += i; } + throw BuildError(format("output ‘%1%’ is not allowed to refer to the following paths:%2%") % actualPath % badPathsStr); + } }; checkRefs("allowedReferences", true, false); diff --git a/tests/check-reqs.sh b/tests/check-reqs.sh index 8b2454915a52..77689215def1 100644 --- a/tests/check-reqs.sh +++ b/tests/check-reqs.sh @@ -6,7 +6,8 @@ nix-build -o $RESULT check-reqs.nix -A test1 (! nix-build -o $RESULT check-reqs.nix -A test2) (! nix-build -o $RESULT check-reqs.nix -A test3) -(! nix-build -o $RESULT check-reqs.nix -A test4) +(! nix-build -o $RESULT check-reqs.nix -A test4) 2>&1 | grep -q 'check-reqs-dep1' +(! nix-build -o $RESULT check-reqs.nix -A test4) 2>&1 | grep -q 'check-reqs-dep2' (! nix-build -o $RESULT check-reqs.nix -A test5) (! nix-build -o $RESULT check-reqs.nix -A test6) |