Add the nix-store --serve command
This is essentially the substituter API operating on the local store, which will be used by the ssh substituter. It runs in a loop rather than just taking one command so that in the future nix will be able to keep one connection open for multiple instances of the substituter. Signed-off-by: Shea Levy <shea@shealevy.com>
This commit is contained in:
		
							parent
							
								
									84a8b5e9af
								
							
						
					
					
						commit
						3a38d0f356
					
				
					 3 changed files with 55 additions and 0 deletions
				
			
		|  | @ -834,6 +834,24 @@ static void opClearFailedPaths(Strings opFlags, Strings opArgs) | |||
| } | ||||
| 
 | ||||
| 
 | ||||
| // Serve the nix store in a way usable by a restricted ssh user
 | ||||
| static void opServe(Strings opFlags, Strings opArgs) | ||||
| { | ||||
|     if (!opArgs.empty()) | ||||
|         throw UsageError("no arguments expected"); | ||||
|     // Could eventually take a username argument?
 | ||||
|     bool sign; | ||||
|     foreach (Strings::iterator, i, opFlags) | ||||
|         if (*i == "--sign") sign = true; | ||||
|         else throw UsageError(format("unknown flag `%1%'") % *i); | ||||
| 
 | ||||
|     FdSource in(STDIN_FILENO); | ||||
|     FdSink out(STDOUT_FILENO); | ||||
| 
 | ||||
|     store->serve(in, out, sign); | ||||
| } | ||||
| 
 | ||||
| 
 | ||||
| /* Scan the arguments; find the operation, set global flags, put all
 | ||||
|    other flags in a list, and put all other arguments in another | ||||
|    list. */ | ||||
|  | @ -904,6 +922,8 @@ void run(Strings args) | |||
|             indirectRoot = true; | ||||
|         else if (arg == "--no-output") | ||||
|             noOutput = true; | ||||
|         else if (arg == "--serve") | ||||
|             op = opServe; | ||||
|         else if (arg[0] == '-') { | ||||
|             opFlags.push_back(arg); | ||||
|             if (arg == "--max-freed" || arg == "--max-links" || arg == "--max-atime") { /* !!! hack */ | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue