* Implemented Eelco V.'s `nix-env -I' command to specify the default
path of the Nix expression to be used with the import, upgrade, and query commands. For instance, $ nix-env -I ~/nixpkgs/pkgs/system/i686-linux.nix $ nix-env --query --available [aka -qa] sylpheed-0.9.7 bison-1.875 pango-1.2.5 subversion-0.35.1 ... $ nix-env -i sylpheed $ nix-env -u subversion There can be only one default at a time. * If the path to a Nix expression is a symlink, follow the symlink prior to resolving relative path references in the expression.
This commit is contained in:
		
							parent
							
								
									f83c5e3e5f
								
							
						
					
					
						commit
						4a373a3e9a
					
				
					 7 changed files with 87 additions and 43 deletions
				
			
		|  | @ -29,16 +29,12 @@ struct Cleanup : TermFun | |||
|         ATMatcher m; | ||||
|         string s; | ||||
| 
 | ||||
|         if (atMatch(m, e) >> "Str" >> s) { | ||||
|         if (atMatch(m, e) >> "Str" >> s) | ||||
|             return ATmake("Str(<str>)", | ||||
|                 string(s, 1, s.size() - 2).c_str()); | ||||
|         } | ||||
| 
 | ||||
|         if (atMatch(m, e) >> "Path" >> s) { | ||||
|             if (s[0] != '/') | ||||
|                 s = basePath + "/" + s; | ||||
|             return ATmake("Path(<str>)", canonPath(s).c_str()); | ||||
|         } | ||||
|         if (atMatch(m, e) >> "Path" >> s) | ||||
|             return ATmake("Path(<str>)", absPath(s, basePath).c_str()); | ||||
| 
 | ||||
|         if (atMatch(m, e) >> "Int" >> s) { | ||||
|             istringstream s2(s); | ||||
|  | @ -147,8 +143,14 @@ Expr parseExprFromFile(Path path) | |||
|     if (e) return e; | ||||
| #endif | ||||
| 
 | ||||
|     /* If `path' refers to a directory, append `/default.nix'. */ | ||||
|     /* If `path' is a symlink, follow it.  This is so that relative
 | ||||
|        path references work. */ | ||||
|     struct stat st; | ||||
|     if (lstat(path.c_str(), &st)) | ||||
|         throw SysError(format("getting status of `%1%'") % path); | ||||
|     if (S_ISLNK(st.st_mode)) path = absPath(readLink(path), dirOf(path)); | ||||
| 
 | ||||
|     /* If `path' refers to a directory, append `/default.nix'. */ | ||||
|     if (stat(path.c_str(), &st)) | ||||
|         throw SysError(format("getting status of `%1%'") % path); | ||||
|     if (S_ISDIR(st.st_mode)) | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue