Replace $NIX_REMOTE_SYSTEMS with an option "builder-files"
Also, to unify with hydra-queue-runner, allow it to be a list of files.
This commit is contained in:
		
							parent
							
								
									cd4d2705ec
								
							
						
					
					
						commit
						7f6837a0f6
					
				
					 4 changed files with 34 additions and 14 deletions
				
			
		|  | @ -43,6 +43,10 @@ Settings::Settings() | ||||||
|     lockCPU = getEnv("NIX_AFFINITY_HACK", "1") == "1"; |     lockCPU = getEnv("NIX_AFFINITY_HACK", "1") == "1"; | ||||||
|     caFile = getEnv("NIX_SSL_CERT_FILE", getEnv("SSL_CERT_FILE", "/etc/ssl/certs/ca-certificates.crt")); |     caFile = getEnv("NIX_SSL_CERT_FILE", getEnv("SSL_CERT_FILE", "/etc/ssl/certs/ca-certificates.crt")); | ||||||
| 
 | 
 | ||||||
|  |     /* Backwards compatibility. */ | ||||||
|  |     auto s = getEnv("NIX_REMOTE_SYSTEMS"); | ||||||
|  |     if (s != "") builderFiles = tokenizeString<Strings>(s, ":"); | ||||||
|  | 
 | ||||||
| #if __linux__ | #if __linux__ | ||||||
|     sandboxPaths = tokenizeString<StringSet>("/bin/sh=" BASH_PATH); |     sandboxPaths = tokenizeString<StringSet>("/bin/sh=" BASH_PATH); | ||||||
| #endif | #endif | ||||||
|  |  | ||||||
|  | @ -133,6 +133,10 @@ public: | ||||||
|     Setting<std::string> builders{this, "", "builders", |     Setting<std::string> builders{this, "", "builders", | ||||||
|         "A semicolon-separated list of build machines, in the format of nix.machines."}; |         "A semicolon-separated list of build machines, in the format of nix.machines."}; | ||||||
| 
 | 
 | ||||||
|  |     Setting<Strings> builderFiles{this, | ||||||
|  |         {nixConfDir + "/machines"}, "builder-files", | ||||||
|  |         "A list of files specifying build machines."}; | ||||||
|  | 
 | ||||||
|     Setting<off_t> reservedSize{this, 8 * 1024 * 1024, "gc-reserved-space", |     Setting<off_t> reservedSize{this, 8 * 1024 * 1024, "gc-reserved-space", | ||||||
|         "Amount of reserved disk space for the garbage collector."}; |         "Amount of reserved disk space for the garbage collector."}; | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -12,7 +12,8 @@ Machine::Machine(decltype(storeUri) storeUri, | ||||||
|     decltype(maxJobs) maxJobs, |     decltype(maxJobs) maxJobs, | ||||||
|     decltype(speedFactor) speedFactor, |     decltype(speedFactor) speedFactor, | ||||||
|     decltype(supportedFeatures) supportedFeatures, |     decltype(supportedFeatures) supportedFeatures, | ||||||
|     decltype(mandatoryFeatures) mandatoryFeatures) : |     decltype(mandatoryFeatures) mandatoryFeatures, | ||||||
|  |     decltype(sshPublicHostKey) sshPublicHostKey) : | ||||||
|     storeUri( |     storeUri( | ||||||
|         // Backwards compatibility: if the URI is a hostname,
 |         // Backwards compatibility: if the URI is a hostname,
 | ||||||
|         // prepend ssh://.
 |         // prepend ssh://.
 | ||||||
|  | @ -24,7 +25,8 @@ Machine::Machine(decltype(storeUri) storeUri, | ||||||
|     maxJobs(maxJobs), |     maxJobs(maxJobs), | ||||||
|     speedFactor(std::max(1U, speedFactor)), |     speedFactor(std::max(1U, speedFactor)), | ||||||
|     supportedFeatures(supportedFeatures), |     supportedFeatures(supportedFeatures), | ||||||
|     mandatoryFeatures(mandatoryFeatures) |     mandatoryFeatures(mandatoryFeatures), | ||||||
|  |     sshPublicHostKey(sshPublicHostKey) | ||||||
| {} | {} | ||||||
| 
 | 
 | ||||||
| bool Machine::allSupported(const std::set<string> & features) const { | bool Machine::allSupported(const std::set<string> & features) const { | ||||||
|  | @ -52,13 +54,19 @@ void parseMachines(const std::string & s, Machines & machines) | ||||||
|         auto sz = tokens.size(); |         auto sz = tokens.size(); | ||||||
|         if (sz < 1) |         if (sz < 1) | ||||||
|             throw FormatError("bad machine specification ‘%s’", line); |             throw FormatError("bad machine specification ‘%s’", line); | ||||||
|  | 
 | ||||||
|  |         auto isSet = [&](int n) { | ||||||
|  |             return tokens.size() > n && tokens[n] != "" && tokens[n] != "-"; | ||||||
|  |         }; | ||||||
|  | 
 | ||||||
|         machines.emplace_back(tokens[0], |         machines.emplace_back(tokens[0], | ||||||
|             sz >= 2 ? tokenizeString<std::vector<string>>(tokens[1], ",") : std::vector<string>{settings.thisSystem}, |             isSet(1) ? tokenizeString<std::vector<string>>(tokens[1], ",") : std::vector<string>{settings.thisSystem}, | ||||||
|             sz >= 3 ? tokens[2] : "", |             isSet(2) ? tokens[2] : "", | ||||||
|             sz >= 4 ? std::stoull(tokens[3]) : 1LL, |             isSet(3) ? std::stoull(tokens[3]) : 1LL, | ||||||
|             sz >= 5 ? std::stoull(tokens[4]) : 1LL, |             isSet(4) ? std::stoull(tokens[4]) : 1LL, | ||||||
|             sz >= 6 ? tokenizeString<std::set<string>>(tokens[5], ",") : std::set<string>{}, |             isSet(5) ? tokenizeString<std::set<string>>(tokens[5], ",") : std::set<string>{}, | ||||||
|             sz >= 7 ? tokenizeString<std::set<string>>(tokens[6], ",") : std::set<string>{}); |             isSet(6) ? tokenizeString<std::set<string>>(tokens[6], ",") : std::set<string>{}, | ||||||
|  |             isSet(7) ? tokens[7] : ""); | ||||||
|     } |     } | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | @ -66,11 +74,13 @@ Machines getMachines() | ||||||
| { | { | ||||||
|     Machines machines; |     Machines machines; | ||||||
| 
 | 
 | ||||||
|     try { |     for (auto & file : settings.builderFiles.get()) { | ||||||
|         parseMachines(readFile(getEnv("NIX_REMOTE_SYSTEMS", settings.nixConfDir + "/machines")), machines); |         try { | ||||||
|     } catch (const SysError & e) { |             parseMachines(readFile(file), machines); | ||||||
|         if (e.errNo != ENOENT) |         } catch (const SysError & e) { | ||||||
|             throw; |             if (e.errNo != ENOENT) | ||||||
|  |                 throw; | ||||||
|  |         } | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     parseMachines(settings.builders, machines); |     parseMachines(settings.builders, machines); | ||||||
|  |  | ||||||
|  | @ -13,6 +13,7 @@ struct Machine { | ||||||
|     const unsigned int speedFactor; |     const unsigned int speedFactor; | ||||||
|     const std::set<string> supportedFeatures; |     const std::set<string> supportedFeatures; | ||||||
|     const std::set<string> mandatoryFeatures; |     const std::set<string> mandatoryFeatures; | ||||||
|  |     const std::string sshPublicHostKey; | ||||||
|     bool enabled = true; |     bool enabled = true; | ||||||
| 
 | 
 | ||||||
|     bool allSupported(const std::set<string> & features) const; |     bool allSupported(const std::set<string> & features) const; | ||||||
|  | @ -25,7 +26,8 @@ struct Machine { | ||||||
|         decltype(maxJobs) maxJobs, |         decltype(maxJobs) maxJobs, | ||||||
|         decltype(speedFactor) speedFactor, |         decltype(speedFactor) speedFactor, | ||||||
|         decltype(supportedFeatures) supportedFeatures, |         decltype(supportedFeatures) supportedFeatures, | ||||||
|         decltype(mandatoryFeatures) mandatoryFeatures); |         decltype(mandatoryFeatures) mandatoryFeatures, | ||||||
|  |         decltype(sshPublicHostKey) sshPublicHostKey); | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| typedef std::vector<Machine> Machines; | typedef std::vector<Machine> Machines; | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue