Rewrite builtin derivation environment
Also add a test. Fixes #1803. Closes #1805.
This commit is contained in:
parent
2896bb6826
commit
3c4c30eadd
3 changed files with 25 additions and 1 deletions
|
@ -2933,8 +2933,13 @@ void DerivationGoal::runChild()
|
|||
if (drv->isBuiltin()) {
|
||||
try {
|
||||
logger = makeJSONLogger(*logger);
|
||||
|
||||
BasicDerivation drv2(*drv);
|
||||
for (auto & e : drv2.env)
|
||||
e.second = rewriteStrings(e.second, inputRewrites);
|
||||
|
||||
if (drv->builder == "builtin:fetchurl")
|
||||
builtinFetchurl(*drv, netrcData);
|
||||
builtinFetchurl(drv2, netrcData);
|
||||
else
|
||||
throw Error(format("unsupported builtin function '%1%'") % string(drv->builder, 8));
|
||||
_exit(0);
|
||||
|
|
|
@ -9,4 +9,9 @@ with import ./config.nix;
|
|||
date +%s.%N > $out/date
|
||||
'';
|
||||
};
|
||||
|
||||
fetchurl = import <nix/fetchurl.nix> {
|
||||
url = "file://" + toString ./lang/eval-okay-xml.out;
|
||||
sha256 = "426fefcd2430e986551db13fcc2b1e45eeec17e68ffeb6ff155be2f8aaf5407e";
|
||||
};
|
||||
}
|
||||
|
|
|
@ -16,3 +16,17 @@ nix-build dependencies.nix --no-out-link --repeat 3
|
|||
(! nix-build check.nix -A nondeterministic --no-out-link --repeat 1 2> $TEST_ROOT/log)
|
||||
grep 'differs from previous round' $TEST_ROOT/log
|
||||
|
||||
path=$(nix-build check.nix -A fetchurl --no-out-link)
|
||||
|
||||
chmod +w $path
|
||||
echo foo > $path
|
||||
chmod -w $path
|
||||
|
||||
nix-build check.nix -A fetchurl --no-out-link --check
|
||||
|
||||
# Note: "check" doesn't repair anything, it just compares to the hash stored in the database.
|
||||
[[ $(cat $path) = foo ]]
|
||||
|
||||
nix-build check.nix -A fetchurl --no-out-link --repair
|
||||
|
||||
[[ $(cat $path) != foo ]]
|
||||
|
|
Loading…
Reference in a new issue