* An awful backwards compatibility hack.
This commit is contained in:
		
							parent
							
								
									3059df0f1e
								
							
						
					
					
						commit
						58ff6939f4
					
				
					 1 changed files with 24 additions and 0 deletions
				
			
		|  | @ -557,6 +557,30 @@ Expr evalExpr2(EvalState & state, Expr e) | |||
|     if (matchOpPlus(e, e1, e2) || matchConcatStrings(e, es)) { | ||||
|         ATermVector args; | ||||
|         if (matchOpPlus(e, e1, e2)) { | ||||
| 
 | ||||
|             /* !!! Awful compatibility hack for `drv + /path'.
 | ||||
|                According to regular concatenation, /path should be | ||||
|                copied to the store and its store path should be | ||||
|                appended to the string.  However, in Nix <= 0.10, /path | ||||
|                was concatenated.  So handle that case separately, but | ||||
|                do print out a warning.  This code can go in Nix 0.12, | ||||
|                maybe. */ | ||||
|             e1 = evalExpr(state, e1); | ||||
|             e2 = evalExpr(state, e2); | ||||
| 
 | ||||
|             ATermList as; | ||||
|             ATerm p; | ||||
|             if (matchAttrs(e1, as) && matchPath(e2, p)) { | ||||
|                 static bool haveWarned = false; | ||||
|                 warnOnce(haveWarned, | ||||
|                     "concatenation of a derivation and a path is deprecated, " | ||||
|                     "you should write `drv + \"/path\"' instead of `drv + /path'"); | ||||
|                 PathSet context; | ||||
|                 return makeStr( | ||||
|                     coerceToString(state, makeSelect(e1, toATerm("outPath")), context) | ||||
|                     + aterm2String(p), context); | ||||
|             } | ||||
| 
 | ||||
|             args.push_back(e1); | ||||
|             args.push_back(e2); | ||||
|         } else | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue