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); |     string baseName = baseNameOf(drvPath); | ||||||
| 
 | 
 | ||||||
|     /* Create a log file. */ |     /* 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); |     createDirs(dir); | ||||||
| 
 | 
 | ||||||
|     Path logFileName = (format("%1%/%2%%3%") |     Path logFileName = (format("%1%/%2%%3%") | ||||||
|  |  | ||||||
|  | @ -7,7 +7,9 @@ namespace nix { | ||||||
| 
 | 
 | ||||||
| LocalFSStore::LocalFSStore(const Params & params) | LocalFSStore::LocalFSStore(const Params & params) | ||||||
|     : Store(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) | LocalStore::LocalStore(const Params & params) | ||||||
|     : LocalFSStore(params) |     : LocalFSStore(params) | ||||||
|     , realStoreDir(get(params, "real", storeDir)) |     , realStoreDir(get(params, "real", rootDir != "" ? rootDir + "/nix/store" : storeDir)) | ||||||
|     , dbDir(stateDir + "/db") |     , dbDir(stateDir + "/db") | ||||||
|     , linksDir(realStoreDir + "/.links") |     , linksDir(realStoreDir + "/.links") | ||||||
|     , reservedPath(dbDir + "/reserved") |     , reservedPath(dbDir + "/reserved") | ||||||
|  |  | ||||||
|  | @ -491,7 +491,9 @@ protected: | ||||||
| class LocalFSStore : public Store | class LocalFSStore : public Store | ||||||
| { | { | ||||||
| public: | public: | ||||||
|  |     const Path rootDir; | ||||||
|     const Path stateDir; |     const Path stateDir; | ||||||
|  |     const Path logDir; | ||||||
| 
 | 
 | ||||||
|     LocalFSStore(const Params & params); |     LocalFSStore(const Params & params); | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -483,6 +483,10 @@ static void opReadLog(Strings opFlags, Strings opArgs) | ||||||
| 
 | 
 | ||||||
|     RunPager pager; |     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) { |     for (auto & i : opArgs) { | ||||||
|         Path path = useDeriver(store->followLinksToStorePath(i)); |         Path path = useDeriver(store->followLinksToStorePath(i)); | ||||||
| 
 | 
 | ||||||
|  | @ -493,8 +497,8 @@ static void opReadLog(Strings opFlags, Strings opArgs) | ||||||
| 
 | 
 | ||||||
|             Path logPath = |             Path logPath = | ||||||
|                 j == 0 |                 j == 0 | ||||||
|                 ? (format("%1%/%2%/%3%/%4%") % settings.nixLogDir % drvsLogDir % string(baseName, 0, 2) % string(baseName, 2)).str() |                 ? (format("%1%/%2%/%3%/%4%") % store2->logDir % drvsLogDir % string(baseName, 0, 2) % string(baseName, 2)).str() | ||||||
|                 : (format("%1%/%2%/%3%") % settings.nixLogDir % drvsLogDir % baseName).str(); |                 : (format("%1%/%2%/%3%") % store2->logDir % drvsLogDir % baseName).str(); | ||||||
|             Path logBz2Path = logPath + ".bz2"; |             Path logBz2Path = logPath + ".bz2"; | ||||||
| 
 | 
 | ||||||
|             if (pathExists(logPath)) { |             if (pathExists(logPath)) { | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue