build-remote: Don't require signatures
This restores the old behaviour.
This commit is contained in:
		
							parent
							
								
									031d70e500
								
							
						
					
					
						commit
						3a5f04f48c
					
				
					 6 changed files with 20 additions and 16 deletions
				
			
		|  | @ -279,7 +279,7 @@ connected: | ||||||
|             printError("somebody is hogging the upload lock for ‘%s’, continuing..."); |             printError("somebody is hogging the upload lock for ‘%s’, continuing..."); | ||||||
|         alarm(0); |         alarm(0); | ||||||
|         signal(SIGALRM, old); |         signal(SIGALRM, old); | ||||||
|         copyPaths(store, ref<Store>(sshStore), inputs); |         copyPaths(store, ref<Store>(sshStore), inputs, false, true); | ||||||
|         uploadLock = -1; |         uploadLock = -1; | ||||||
| 
 | 
 | ||||||
|         BasicDerivation drv(readDerivation(drvPath)); |         BasicDerivation drv(readDerivation(drvPath)); | ||||||
|  | @ -294,7 +294,7 @@ connected: | ||||||
| 
 | 
 | ||||||
|         if (!missing.empty()) { |         if (!missing.empty()) { | ||||||
|             setenv("NIX_HELD_LOCKS", concatStringsSep(" ", missing).c_str(), 1); /* FIXME: ugly */ |             setenv("NIX_HELD_LOCKS", concatStringsSep(" ", missing).c_str(), 1); /* FIXME: ugly */ | ||||||
|             copyPaths(ref<Store>(sshStore), store, missing); |             copyPaths(ref<Store>(sshStore), store, missing, false, true); | ||||||
|         } |         } | ||||||
| 
 | 
 | ||||||
|         return; |         return; | ||||||
|  |  | ||||||
|  | @ -223,9 +223,6 @@ struct LegacySSHStore : public Store | ||||||
|     void addSignatures(const Path & storePath, const StringSet & sigs) override |     void addSignatures(const Path & storePath, const StringSet & sigs) override | ||||||
|     { unsupported(); } |     { unsupported(); } | ||||||
| 
 | 
 | ||||||
|     bool isTrusted() override |  | ||||||
|     { return true; } |  | ||||||
| 
 |  | ||||||
|     void computeFSClosure(const PathSet & paths, |     void computeFSClosure(const PathSet & paths, | ||||||
|         PathSet & out, bool flipDirection = false, |         PathSet & out, bool flipDirection = false, | ||||||
|         bool includeOutputs = false, bool includeDerivers = false) override |         bool includeOutputs = false, bool includeDerivers = false) override | ||||||
|  |  | ||||||
|  | @ -915,6 +915,8 @@ void LocalStore::invalidatePath(State & state, const Path & path) | ||||||
| void LocalStore::addToStore(const ValidPathInfo & info, const ref<std::string> & nar, | void LocalStore::addToStore(const ValidPathInfo & info, const ref<std::string> & nar, | ||||||
|     bool repair, bool dontCheckSigs, std::shared_ptr<FSAccessor> accessor) |     bool repair, bool dontCheckSigs, std::shared_ptr<FSAccessor> accessor) | ||||||
| { | { | ||||||
|  |     assert(info.narHash); | ||||||
|  | 
 | ||||||
|     Hash h = hashString(htSHA256, *nar); |     Hash h = hashString(htSHA256, *nar); | ||||||
|     if (h != info.narHash) |     if (h != info.narHash) | ||||||
|         throw Error(format("hash mismatch importing path ‘%s’; expected hash ‘%s’, got ‘%s’") % |         throw Error(format("hash mismatch importing path ‘%s’; expected hash ‘%s’, got ‘%s’") % | ||||||
|  |  | ||||||
|  | @ -542,15 +542,22 @@ void copyStorePath(ref<Store> srcStore, ref<Store> dstStore, | ||||||
|     StringSink sink; |     StringSink sink; | ||||||
|     srcStore->narFromPath({storePath}, sink); |     srcStore->narFromPath({storePath}, sink); | ||||||
| 
 | 
 | ||||||
|     if (srcStore->isTrusted()) |  | ||||||
|         dontCheckSigs = true; |  | ||||||
| 
 |  | ||||||
|     if (!info->narHash && dontCheckSigs) { |     if (!info->narHash && dontCheckSigs) { | ||||||
|         auto info2 = make_ref<ValidPathInfo>(*info); |         auto info2 = make_ref<ValidPathInfo>(*info); | ||||||
|         info2->narHash = hashString(htSHA256, *sink.s); |         info2->narHash = hashString(htSHA256, *sink.s); | ||||||
|         info = info2; |         info = info2; | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|  |     assert(info->narHash); | ||||||
|  | 
 | ||||||
|  |     if (info->ultimate) { | ||||||
|  |         auto info2 = make_ref<ValidPathInfo>(*info); | ||||||
|  |         info2->ultimate = false; | ||||||
|  |         info = info2; | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     assert(info->narHash); | ||||||
|  | 
 | ||||||
|     dstStore->addToStore(*info, sink.s, repair, dontCheckSigs); |     dstStore->addToStore(*info, sink.s, repair, dontCheckSigs); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | @ -802,7 +809,8 @@ std::list<ref<Store>> getDefaultSubstituters() | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| void copyPaths(ref<Store> from, ref<Store> to, const PathSet & storePaths, bool substitute) | void copyPaths(ref<Store> from, ref<Store> to, const PathSet & storePaths, | ||||||
|  |     bool substitute, bool dontCheckSigs) | ||||||
| { | { | ||||||
|     PathSet valid = to->queryValidPaths(storePaths, substitute); |     PathSet valid = to->queryValidPaths(storePaths, substitute); | ||||||
| 
 | 
 | ||||||
|  | @ -830,7 +838,7 @@ void copyPaths(ref<Store> from, ref<Store> to, const PathSet & storePaths, bool | ||||||
|             if (!to->isValidPath(storePath)) { |             if (!to->isValidPath(storePath)) { | ||||||
|                 Activity act(*logger, lvlInfo, format("copying ‘%s’...") % storePath); |                 Activity act(*logger, lvlInfo, format("copying ‘%s’...") % storePath); | ||||||
| 
 | 
 | ||||||
|                 copyStorePath(from, to, storePath); |                 copyStorePath(from, to, storePath, false, dontCheckSigs); | ||||||
| 
 | 
 | ||||||
|                 logger->incProgress(copiedLabel); |                 logger->incProgress(copiedLabel); | ||||||
|             } else |             } else | ||||||
|  |  | ||||||
|  | @ -570,10 +570,6 @@ public: | ||||||
| 
 | 
 | ||||||
|     const Stats & getStats(); |     const Stats & getStats(); | ||||||
| 
 | 
 | ||||||
|     /* Whether this store paths from this store can be imported even
 |  | ||||||
|        if they lack a signature. */ |  | ||||||
|     virtual bool isTrusted() { return false; } |  | ||||||
| 
 |  | ||||||
|     /* Return the build log of the specified store path, if available,
 |     /* Return the build log of the specified store path, if available,
 | ||||||
|        or null otherwise. */ |        or null otherwise. */ | ||||||
|     virtual std::shared_ptr<std::string> getBuildLog(const Path & path) |     virtual std::shared_ptr<std::string> getBuildLog(const Path & path) | ||||||
|  | @ -695,7 +691,8 @@ ref<Store> openStore(const std::string & uri = getEnv("NIX_REMOTE"), | ||||||
|     const Store::Params & extraParams = Store::Params()); |     const Store::Params & extraParams = Store::Params()); | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| void copyPaths(ref<Store> from, ref<Store> to, const PathSet & storePaths, bool substitute = false); | void copyPaths(ref<Store> from, ref<Store> to, const PathSet & storePaths, | ||||||
|  |     bool substitute = false, bool dontCheckSigs = false); | ||||||
| 
 | 
 | ||||||
| enum StoreType { | enum StoreType { | ||||||
|     tDaemon, |     tDaemon, | ||||||
|  |  | ||||||
|  | @ -58,6 +58,6 @@ int main(int argc, char ** argv) | ||||||
|         PathSet closure; |         PathSet closure; | ||||||
|         from->computeFSClosure(storePaths2, closure, false, includeOutputs); |         from->computeFSClosure(storePaths2, closure, false, includeOutputs); | ||||||
| 
 | 
 | ||||||
|         copyPaths(from, to, closure, useSubstitutes); |         copyPaths(from, to, closure, useSubstitutes, true); | ||||||
|     }); |     }); | ||||||
| } | } | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue