mirror of
https://github.com/NixOS/nix
synced 2025-06-27 00:11:17 +02:00
Pass all settings to build-remote
This ensures that command line flags such as --builders get passed correctly.
This commit is contained in:
parent
f32cdc4fab
commit
37fbfffd8e
7 changed files with 75 additions and 82 deletions
|
@ -46,16 +46,23 @@ int main (int argc, char * * argv)
|
|||
unsetenv("DISPLAY");
|
||||
unsetenv("SSH_ASKPASS");
|
||||
|
||||
if (argc != 6)
|
||||
if (argc != 2)
|
||||
throw UsageError("called without required arguments");
|
||||
|
||||
auto store = openStore().cast<LocalStore>();
|
||||
verbosity = (Verbosity) std::stoll(argv[1]);
|
||||
|
||||
auto localSystem = argv[1];
|
||||
settings.maxSilentTime = std::stoll(argv[2]);
|
||||
settings.buildTimeout = std::stoll(argv[3]);
|
||||
verbosity = (Verbosity) std::stoll(argv[4]);
|
||||
settings.builders = argv[5];
|
||||
FdSource source(STDIN_FILENO);
|
||||
|
||||
/* Read the parent's settings. */
|
||||
while (readInt(source)) {
|
||||
auto name = readString(source);
|
||||
auto value = readString(source);
|
||||
settings.set(name, value);
|
||||
}
|
||||
|
||||
settings.maxBuildJobs.set("1"); // hack to make tests with local?root= work
|
||||
|
||||
auto store = openStore().cast<LocalStore>();
|
||||
|
||||
/* It would be more appropriate to use $XDG_RUNTIME_DIR, since
|
||||
that gets cleared on reboot, but it wouldn't work on macOS. */
|
||||
|
@ -74,18 +81,20 @@ int main (int argc, char * * argv)
|
|||
|
||||
string drvPath;
|
||||
string storeUri;
|
||||
for (string line; getline(cin, line);) {
|
||||
auto tokens = tokenizeString<std::vector<string>>(line);
|
||||
auto sz = tokens.size();
|
||||
if (sz != 3 && sz != 4)
|
||||
throw Error("invalid build hook line '%1%'", line);
|
||||
auto amWilling = tokens[0] == "1";
|
||||
auto neededSystem = tokens[1];
|
||||
drvPath = tokens[2];
|
||||
auto requiredFeatures = sz == 3 ?
|
||||
std::set<string>{} :
|
||||
tokenizeString<std::set<string>>(tokens[3], ",");
|
||||
auto canBuildLocally = amWilling && (neededSystem == localSystem);
|
||||
|
||||
while (true) {
|
||||
|
||||
try {
|
||||
auto s = readString(source);
|
||||
if (s != "try") return;
|
||||
} catch (EndOfFile &) { return; }
|
||||
|
||||
auto amWilling = readInt(source);
|
||||
auto neededSystem = readString(source);
|
||||
source >> drvPath;
|
||||
auto requiredFeatures = readStrings<std::set<std::string>>(source);
|
||||
|
||||
auto canBuildLocally = amWilling && (neededSystem == settings.thisSystem);
|
||||
|
||||
/* Error ignored here, will be caught later */
|
||||
mkdir(currentLoad.c_str(), 0777);
|
||||
|
@ -100,7 +109,7 @@ int main (int argc, char * * argv)
|
|||
Machine * bestMachine = nullptr;
|
||||
unsigned long long bestLoad = 0;
|
||||
for (auto & m : machines) {
|
||||
debug("considering building on '%s'", m.storeUri);
|
||||
debug("considering building on remote machine '%s'", m.storeUri);
|
||||
|
||||
if (m.enabled && std::find(m.systemTypes.begin(),
|
||||
m.systemTypes.end(),
|
||||
|
@ -184,15 +193,9 @@ int main (int argc, char * * argv)
|
|||
|
||||
connected:
|
||||
std::cerr << "# accept\n";
|
||||
string line;
|
||||
if (!getline(cin, line))
|
||||
throw Error("hook caller didn't send inputs");
|
||||
|
||||
auto inputs = tokenizeString<PathSet>(line);
|
||||
if (!getline(cin, line))
|
||||
throw Error("hook caller didn't send outputs");
|
||||
|
||||
auto outputs = tokenizeString<PathSet>(line);
|
||||
auto inputs = readStrings<PathSet>(source);
|
||||
auto outputs = readStrings<PathSet>(source);
|
||||
|
||||
AutoCloseFD uploadLock = openLockFile(currentLoad + "/" + escapeUri(storeUri) + ".upload-lock", true);
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue