Add use-ssh-substituter setting.

It defaults to false and can be overridden by RemoteStore.

Untested currently, just quickly put this together
This commit is contained in:
Shea Levy 2014-02-19 07:05:15 -05:00 committed by Eelco Dolstra
parent 36b90e72d7
commit df5de9dfd7
3 changed files with 17 additions and 0 deletions

View File

@ -111,6 +111,18 @@ void run(Strings args)
if (args.empty())
throw UsageError("download-via-ssh requires an argument");
Settings::SettingsMap overrides = settings.getOverrides();
Settings::SettingsMap::iterator use = overrides.find("untrusted-use-ssh-substituter");
if (use != overrides.end()) {
if (use->second == "true") settings.useSshSubstituter = true;
else if (use->second == "false") settings.useSshSubstituter = false;
else throw Error(format("configuration option `use-ssh-substituter' should be either `true' or `false', not `%1%'")
% use->second);
}
if (!settings.useSshSubstituter)
return;
if (settings.sshSubstituterHosts.empty())
return;

View File

@ -41,6 +41,7 @@ Settings::Settings()
syncBeforeRegistering = false;
useSubstitutes = true;
useChroot = false;
useSshSubstituter = false;
dirsInChroot.insert("/dev");
dirsInChroot.insert("/dev/pts");
impersonateLinux26 = false;
@ -153,6 +154,7 @@ void Settings::update()
get(autoOptimiseStore, "auto-optimise-store");
get(envKeepDerivations, "env-keep-derivations");
get(sshSubstituterHosts, "ssh-substituter-hosts");
get(useSshSubstituter, "use-ssh-substituter");
}

View File

@ -149,6 +149,9 @@ struct Settings {
/* Set of ssh connection strings for the ssh substituter */
Strings sshSubstituterHosts;
/* Whether to use the ssh substituter at all */
bool useSshSubstituter;
/* Whether to impersonate a Linux 2.6 machine on newer kernels. */
bool impersonateLinux26;