Don't rely on __noChroot for corepkgs
This doesn't work anymore if the "strict" chroot mode is enabled. Instead, add Nix's store path as a dependency. This ensures that its closure is present in the chroot.
This commit is contained in:
		
							parent
							
								
									b005e63ccf
								
							
						
					
					
						commit
						6f0c6e20e0
					
				
					 6 changed files with 24 additions and 15 deletions
				
			
		|  | @ -23,6 +23,5 @@ derivation { | |||
|   # network traffic, so don't do that. | ||||
|   preferLocalBuild = true; | ||||
| 
 | ||||
|   # Don't build in a chroot because Nix's dependencies may not be there. | ||||
|   __noChroot = true; | ||||
|   inherit chrootDeps; | ||||
| } | ||||
|  |  | |||
|  | @ -2,7 +2,7 @@ let | |||
|   fromEnv = var: def: | ||||
|     let val = builtins.getEnv var; in | ||||
|     if val != "" then val else def; | ||||
| in { | ||||
| in rec { | ||||
|   perl = "@perl@"; | ||||
|   shell = "@bash@"; | ||||
|   coreutils = "@coreutils@"; | ||||
|  | @ -14,4 +14,14 @@ in { | |||
|   tr = "@tr@"; | ||||
|   curl = "@curl@"; | ||||
|   nixBinDir = fromEnv "NIX_BIN_DIR" "@bindir@"; | ||||
|   nixPrefix = "@prefix@"; | ||||
| 
 | ||||
|   # If Nix is installed in the Nix store, then automatically add it as | ||||
|   # a dependency to the core packages. This ensures that they work | ||||
|   # properly in a chroot. | ||||
|   chrootDeps = | ||||
|     if dirOf nixPrefix == builtins.storeDir then | ||||
|       [ (builtins.storePath nixPrefix) ] | ||||
|     else | ||||
|       [ ]; | ||||
| } | ||||
|  |  | |||
|  | @ -32,9 +32,6 @@ derivation { | |||
|   # No need to double the amount of network traffic | ||||
|   preferLocalBuild = true; | ||||
| 
 | ||||
|   # Don't build in a chroot because Nix's dependencies may not be there. | ||||
|   __noChroot = true; | ||||
| 
 | ||||
|   impureEnvVars = [ | ||||
|     # We borrow these environment variables from the caller to allow | ||||
|     # easy proxy configuration.  This is impure, but a fixed-output | ||||
|  | @ -42,4 +39,6 @@ derivation { | |||
|     # by definition pure. | ||||
|     "http_proxy" "https_proxy" "ftp_proxy" "all_proxy" "no_proxy" | ||||
|   ]; | ||||
| 
 | ||||
|   inherit chrootDeps; | ||||
| } | ||||
|  |  | |||
|  | @ -41,9 +41,8 @@ derivation { | |||
|   args = [ "-e" builder ]; | ||||
|   inherit storePath hashAlgo compressionType; | ||||
| 
 | ||||
|   # Don't build in a chroot because Nix's dependencies may not be there. | ||||
|   __noChroot = true; | ||||
| 
 | ||||
|   # Remote machines may not have ${nixBinDir} or ${coreutils} in the same prefixes | ||||
|   preferLocalBuild = true; | ||||
| 
 | ||||
|   inherit chrootDeps; | ||||
| } | ||||
|  |  | |||
|  | @ -37,6 +37,5 @@ derivation { | |||
|   # No point in doing this remotely. | ||||
|   preferLocalBuild = true; | ||||
| 
 | ||||
|   # Don't build in a chroot because Nix's dependencies may not be there. | ||||
|   __noChroot = true; | ||||
|   inherit chrootDeps; | ||||
| } | ||||
|  |  | |||
|  | @ -1507,12 +1507,15 @@ void EvalState::createBaseEnv() | |||
|     mkInt(v, time(0)); | ||||
|     addConstant("__currentTime", v); | ||||
| 
 | ||||
|     mkString(v, settings.thisSystem.c_str()); | ||||
|     mkString(v, settings.thisSystem); | ||||
|     addConstant("__currentSystem", v); | ||||
| 
 | ||||
|     mkString(v, nixVersion.c_str()); | ||||
|     mkString(v, nixVersion); | ||||
|     addConstant("__nixVersion", v); | ||||
| 
 | ||||
|     mkString(v, settings.nixStore); | ||||
|     addConstant("__storeDir", v); | ||||
| 
 | ||||
|     /* Language version.  This should be increased every time a new
 | ||||
|        language feature gets added.  It's not necessary to increase it | ||||
|        when primops get added, because you can just use `builtins ? | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue