Add option to disable import-from-derivation completely, even if the drv is already realized

This commit is contained in:
Shea Levy 2017-03-08 08:46:12 -05:00
parent 121a407eec
commit 93f863be96
3 changed files with 7 additions and 0 deletions

View file

@ -59,6 +59,8 @@ void EvalState::realiseContext(const PathSet & context)
drvs.insert(decoded.first + "!" + decoded.second);
}
if (!drvs.empty()) {
if (!settings.enableImportFromDerivation)
throw EvalError(format("attempted to realize %1% during evaluation but 'allow-import-from-derivation' is false") % *(drvs.begin()));
/* For performance, prefetch all substitute info. */
PathSet willBuild, willSubstitute, unknown;
unsigned long long downloadSize, narSize;

View file

@ -70,6 +70,7 @@ Settings::Settings()
enableImportNative = false;
netrcFile = fmt("%s/%s", nixConfDir, "netrc");
caFile = getEnv("NIX_SSL_CERT_FILE", getEnv("SSL_CERT_FILE", "/etc/ssl/certs/ca-certificates.crt"));
enableImportFromDerivation = true;
}
@ -185,6 +186,7 @@ void Settings::update()
_get(keepGoing, "keep-going");
_get(keepFailed, "keep-failed");
_get(netrcFile, "netrc-file");
_get(enableImportFromDerivation, "allow-import-from-derivation");
}

View file

@ -198,6 +198,9 @@ struct Settings {
/* Path to the SSL CA file used */
Path caFile;
/* Whether we allow import-from-derivation */
bool enableImportFromDerivation;
private:
SettingsMap settings, overrides;