* Implement the `gc-keep-derivations' global configuretion flag.
This commit is contained in:
parent
6a8ef36fe6
commit
a04a5de8f7
1 changed files with 14 additions and 1 deletions
|
@ -306,7 +306,10 @@ void collectGarbage(GCAction action, PathSet & result)
|
||||||
{
|
{
|
||||||
result.clear();
|
result.clear();
|
||||||
|
|
||||||
bool gcKeepOutputs = queryBoolSetting("gc-keep-outputs", false);
|
bool gcKeepOutputs =
|
||||||
|
queryBoolSetting("gc-keep-outputs", false);
|
||||||
|
bool gcKeepDerivations =
|
||||||
|
queryBoolSetting("gc-keep-derivations", true);
|
||||||
|
|
||||||
/* Acquire the global GC root. This prevents
|
/* Acquire the global GC root. This prevents
|
||||||
a) New roots from being added.
|
a) New roots from being added.
|
||||||
|
@ -330,6 +333,16 @@ void collectGarbage(GCAction action, PathSet & result)
|
||||||
for (PathSet::const_iterator i = roots.begin(); i != roots.end(); ++i)
|
for (PathSet::const_iterator i = roots.begin(); i != roots.end(); ++i)
|
||||||
computeFSClosure(canonPath(*i), livePaths);
|
computeFSClosure(canonPath(*i), livePaths);
|
||||||
|
|
||||||
|
if (gcKeepDerivations) {
|
||||||
|
for (PathSet::iterator i = livePaths.begin();
|
||||||
|
i != livePaths.end(); ++i)
|
||||||
|
{
|
||||||
|
Path deriver = queryDeriver(noTxn, *i);
|
||||||
|
if (deriver != "")
|
||||||
|
computeFSClosure(deriver, livePaths);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (gcKeepOutputs) {
|
if (gcKeepOutputs) {
|
||||||
/* Hmz, identical to storePathRequisites in nix-store. */
|
/* Hmz, identical to storePathRequisites in nix-store. */
|
||||||
for (PathSet::iterator i = livePaths.begin();
|
for (PathSet::iterator i = livePaths.begin();
|
||||||
|
|
Loading…
Reference in a new issue