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…
	
	Add table
		Add a link
		
	
		Reference in a new issue