* Refactoring to support different installation sources in nix-env.
* Set the references for the user environment manifest properly. * Don't copy the manifest (this was accidental). * Don't store derivation paths in the manifest (maybe this should be made optional). This cleans up the semantics of nix-env, which were weird. * Hash on the output paths of activated components, not on derivation paths. This is because we don't know the derivation path of already installed components anymore, and it allows the installation of components by store path (skipping Nix expressions entirely). * Query options `--out-path' and `--drv-path' to show the output and derivation paths of components, respectively (the latter replaces the `--expr' query).
This commit is contained in:
		
							parent
							
								
									80870d9291
								
							
						
					
					
						commit
						20ce2642fc
					
				
					 5 changed files with 125 additions and 61 deletions
				
			
		|  | @ -94,6 +94,7 @@ static void processBinding(EvalState & state, Expr e, Derivation & drv, | |||
| 
 | ||||
|     else if (matchAttrs(e, es)) { | ||||
|         Expr a = queryAttr(e, "type"); | ||||
|          | ||||
|         if (a && evalString(state, a) == "derivation") { | ||||
|             a = queryAttr(e, "drvPath"); | ||||
|             if (!a) throw Error("derivation name missing"); | ||||
|  | @ -104,12 +105,22 @@ static void processBinding(EvalState & state, Expr e, Derivation & drv, | |||
|             /* !!! supports only single output path */ | ||||
|             Path outPath = evalPath(state, a); | ||||
| 
 | ||||
|             StringSet ids; | ||||
|             ids.insert("out"); | ||||
|             drv.inputDrvs[drvPath] = ids; | ||||
|             drv.inputDrvs[drvPath] = singleton<StringSet>("out"); | ||||
|             ss.push_back(outPath); | ||||
|         } else | ||||
|             throw Error("invalid derivation attribute"); | ||||
|         } | ||||
| 
 | ||||
|         else if (a && evalString(state, a) == "storePath") { | ||||
| 
 | ||||
|             a = queryAttr(e, "outPath"); | ||||
|             if (!a) throw Error("output path missing"); | ||||
|             /* !!! supports only single output path */ | ||||
|             Path outPath = evalPath(state, a); | ||||
| 
 | ||||
|             drv.inputSrcs.insert(outPath); | ||||
|             ss.push_back(outPath); | ||||
|         } | ||||
| 
 | ||||
|         else throw Error("invalid derivation attribute"); | ||||
|     } | ||||
| 
 | ||||
|     else if (matchPath(e, s)) { | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue