* Global configuration option `env-keep-derivations' to store pointer
to derivations in user environments. Nice for developers (since it prevents build-time-only dependencies from being GC'ed, in conjunction with `gc-keep-outputs'). Turned off by default.
This commit is contained in:
parent
b0aba6ec2a
commit
6a8ef36fe6
5 changed files with 72 additions and 35 deletions
|
|
@ -306,7 +306,7 @@ void collectGarbage(GCAction action, PathSet & result)
|
|||
{
|
||||
result.clear();
|
||||
|
||||
string gcKeepOutputs = querySetting("gc-keep-outputs", "false");
|
||||
bool gcKeepOutputs = queryBoolSetting("gc-keep-outputs", false);
|
||||
|
||||
/* Acquire the global GC root. This prevents
|
||||
a) New roots from being added.
|
||||
|
|
@ -330,7 +330,7 @@ void collectGarbage(GCAction action, PathSet & result)
|
|||
for (PathSet::const_iterator i = roots.begin(); i != roots.end(); ++i)
|
||||
computeFSClosure(canonPath(*i), livePaths);
|
||||
|
||||
if (gcKeepOutputs == "true") {
|
||||
if (gcKeepOutputs) {
|
||||
/* Hmz, identical to storePathRequisites in nix-store. */
|
||||
for (PathSet::iterator i = livePaths.begin();
|
||||
i != livePaths.end(); ++i)
|
||||
|
|
|
|||
|
|
@ -52,7 +52,7 @@ static void readSettings()
|
|||
string name, sep, value;
|
||||
is >> name >> sep >> value;
|
||||
if (sep != "=" || !is)
|
||||
throw Error(format("illegal configuration line `%1%'") % line);
|
||||
throw Error(format("illegal configuration line `%1%' in `%2%'") % line % settingsFile);
|
||||
|
||||
settings[name] = value;
|
||||
};
|
||||
|
|
@ -67,3 +67,13 @@ string querySetting(const string & name, const string & def)
|
|||
map<string, string>::iterator i = settings.find(name);
|
||||
return i == settings.end() ? def : i->second;
|
||||
}
|
||||
|
||||
|
||||
bool queryBoolSetting(const string & name, bool def)
|
||||
{
|
||||
string value = querySetting(name, def ? "true" : "false");
|
||||
if (value == "true") return true;
|
||||
else if (value == "false") return false;
|
||||
else throw Error(format("configuration option `%1%' should be either `true' or `false', not `%2%'")
|
||||
% name % value);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -55,5 +55,7 @@ extern bool readOnlyMode;
|
|||
|
||||
string querySetting(const string & name, const string & def);
|
||||
|
||||
bool queryBoolSetting(const string & name, bool def);
|
||||
|
||||
|
||||
#endif /* !__GLOBALS_H */
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue