Pass all --option flags to the daemon

This commit is contained in:
Eelco Dolstra 2012-07-31 18:19:44 -04:00
parent 89a8207029
commit 90d9c58d4d
4 changed files with 30 additions and 3 deletions

View File

@ -113,6 +113,7 @@ void Settings::loadConfFile()
void Settings::set(const string & name, const string & value) void Settings::set(const string & name, const string & value)
{ {
settings[name] = value; settings[name] = value;
overrides[name] = value;
} }
@ -193,4 +194,10 @@ string Settings::pack()
} }
Settings::SettingsMap Settings::getOverrides()
{
return overrides;
}
} }

View File

@ -10,6 +10,8 @@ namespace nix {
struct Settings { struct Settings {
typedef std::map<string, string> SettingsMap;
Settings(); Settings();
void processEnvironment(); void processEnvironment();
@ -22,6 +24,8 @@ struct Settings {
string pack(); string pack();
SettingsMap getOverrides();
/* The directory where we store sources and derived files. */ /* The directory where we store sources and derived files. */
Path nixStore; Path nixStore;
@ -172,9 +176,7 @@ struct Settings {
bool envKeepDerivations; bool envKeepDerivations;
private: private:
typedef std::map<string, string> SettingsMap; SettingsMap settings, overrides;
SettingsMap settings;
void get(string & res, const string & name); void get(string & res, const string & name);
void get(bool & res, const string & name); void get(bool & res, const string & name);

View File

@ -184,6 +184,7 @@ RemoteStore::~RemoteStore()
void RemoteStore::setOptions() void RemoteStore::setOptions()
{ {
writeInt(wopSetOptions, to); writeInt(wopSetOptions, to);
writeInt(settings.keepFailed, to); writeInt(settings.keepFailed, to);
writeInt(settings.keepGoing, to); writeInt(settings.keepGoing, to);
writeInt(settings.tryFallback, to); writeInt(settings.tryFallback, to);
@ -202,6 +203,15 @@ void RemoteStore::setOptions()
if (GET_PROTOCOL_MINOR(daemonVersion) >= 10) if (GET_PROTOCOL_MINOR(daemonVersion) >= 10)
writeInt(settings.useSubstitutes, to); writeInt(settings.useSubstitutes, to);
if (GET_PROTOCOL_MINOR(daemonVersion) >= 12) {
Settings::SettingsMap overrides = settings.getOverrides();
writeInt(overrides.size(), to);
foreach (Settings::SettingsMap::iterator, i, overrides) {
writeString(i->first, to);
writeString(i->second, to);
}
}
processStderr(); processStderr();
} }

View File

@ -544,6 +544,14 @@ static void performOp(unsigned int clientVersion,
settings.buildCores = readInt(from); settings.buildCores = readInt(from);
if (GET_PROTOCOL_MINOR(clientVersion) >= 10) if (GET_PROTOCOL_MINOR(clientVersion) >= 10)
settings.useSubstitutes = readInt(from) != 0; settings.useSubstitutes = readInt(from) != 0;
if (GET_PROTOCOL_MINOR(clientVersion) >= 12) {
unsigned int n = readInt(from);
for (unsigned int i = 0; i < n; i++) {
string name = readString(from);
string value = readString(from);
settings.set("untrusted-" + name, value);
}
}
startWork(); startWork();
stopWork(); stopWork();
break; break;