Add a "root" parameter to local stores
This makes it easier to create a diverted store, i.e. NIX_REMOTE="local?root=/tmp/root" instead of NIX_REMOTE="local?real=/tmp/root/nix/store&state=/tmp/root/nix/var/nix" NIX_LOG_DIR=/tmp/root/nix/var/log
This commit is contained in:
		
							parent
							
								
									2fad86f361
								
							
						
					
					
						commit
						3eb6217508
					
				
					 5 changed files with 13 additions and 5 deletions
				
			
		|  | @ -2910,7 +2910,7 @@ Path DerivationGoal::openLogFile() | |||
|     string baseName = baseNameOf(drvPath); | ||||
| 
 | ||||
|     /* Create a log file. */ | ||||
|     Path dir = (format("%1%/%2%/%3%/") % settings.nixLogDir % drvsLogDir % string(baseName, 0, 2)).str(); | ||||
|     Path dir = (format("%1%/%2%/%3%/") % worker.store.logDir % drvsLogDir % string(baseName, 0, 2)).str(); | ||||
|     createDirs(dir); | ||||
| 
 | ||||
|     Path logFileName = (format("%1%/%2%%3%") | ||||
|  |  | |||
|  | @ -7,7 +7,9 @@ namespace nix { | |||
| 
 | ||||
| LocalFSStore::LocalFSStore(const Params & params) | ||||
|     : Store(params) | ||||
|     , stateDir(get(params, "state", settings.nixStateDir)) | ||||
|     , rootDir(get(params, "root")) | ||||
|     , stateDir(canonPath(get(params, "state", rootDir != "" ? rootDir + "/nix/var/nix" : settings.nixStateDir))) | ||||
|     , logDir(canonPath(get(params, "log", rootDir != "" ? rootDir + "/nix/var/log/nix" : settings.nixLogDir))) | ||||
| { | ||||
| } | ||||
| 
 | ||||
|  |  | |||
|  | @ -38,7 +38,7 @@ namespace nix { | |||
| 
 | ||||
| LocalStore::LocalStore(const Params & params) | ||||
|     : LocalFSStore(params) | ||||
|     , realStoreDir(get(params, "real", storeDir)) | ||||
|     , realStoreDir(get(params, "real", rootDir != "" ? rootDir + "/nix/store" : storeDir)) | ||||
|     , dbDir(stateDir + "/db") | ||||
|     , linksDir(realStoreDir + "/.links") | ||||
|     , reservedPath(dbDir + "/reserved") | ||||
|  |  | |||
|  | @ -491,7 +491,9 @@ protected: | |||
| class LocalFSStore : public Store | ||||
| { | ||||
| public: | ||||
|     const Path rootDir; | ||||
|     const Path stateDir; | ||||
|     const Path logDir; | ||||
| 
 | ||||
|     LocalFSStore(const Params & params); | ||||
| 
 | ||||
|  |  | |||
|  | @ -483,6 +483,10 @@ static void opReadLog(Strings opFlags, Strings opArgs) | |||
| 
 | ||||
|     RunPager pager; | ||||
| 
 | ||||
|     // FIXME: move getting logs into Store.
 | ||||
|     auto store2 = std::dynamic_pointer_cast<LocalFSStore>(store); | ||||
|     if (!store2) throw Error(format("store ‘%s’ does not support reading logs") % store->getUri()); | ||||
| 
 | ||||
|     for (auto & i : opArgs) { | ||||
|         Path path = useDeriver(store->followLinksToStorePath(i)); | ||||
| 
 | ||||
|  | @ -493,8 +497,8 @@ static void opReadLog(Strings opFlags, Strings opArgs) | |||
| 
 | ||||
|             Path logPath = | ||||
|                 j == 0 | ||||
|                 ? (format("%1%/%2%/%3%/%4%") % settings.nixLogDir % drvsLogDir % string(baseName, 0, 2) % string(baseName, 2)).str() | ||||
|                 : (format("%1%/%2%/%3%") % settings.nixLogDir % drvsLogDir % baseName).str(); | ||||
|                 ? (format("%1%/%2%/%3%/%4%") % store2->logDir % drvsLogDir % string(baseName, 0, 2) % string(baseName, 2)).str() | ||||
|                 : (format("%1%/%2%/%3%") % store2->logDir % drvsLogDir % baseName).str(); | ||||
|             Path logBz2Path = logPath + ".bz2"; | ||||
| 
 | ||||
|             if (pathExists(logPath)) { | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue