diff options
author | Eelco Dolstra <e.dolstra@tudelft.nl> | 2008-06-13T17·21+0000 |
---|---|---|
committer | Eelco Dolstra <e.dolstra@tudelft.nl> | 2008-06-13T17·21+0000 |
commit | 30c9f909b24d64d8fabc2bb450e03744cc69c9a0 (patch) | |
tree | a62f98931b8766fe65e802cf47b3b06ed877663e /src/libstore/gc.cc | |
parent | 194c66eeebdd6920716c82eeb259083d7bbd84c5 (diff) |
* Print some progress info during the early GC stages.
Diffstat (limited to 'src/libstore/gc.cc')
-rw-r--r-- | src/libstore/gc.cc | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/src/libstore/gc.cc b/src/libstore/gc.cc index 1d654cd67408..9ed87d1125b3 100644 --- a/src/libstore/gc.cc +++ b/src/libstore/gc.cc @@ -455,6 +455,7 @@ void LocalStore::collectGarbage(GCAction action, const PathSet & pathsToDelete, /* Find the roots. Since we've grabbed the GC lock, the set of permanent roots cannot increase now. */ + printMsg(lvlError, format("finding garbage collector roots...")); Roots rootMap = ignoreLiveness ? Roots() : nix::findRoots(true); PathSet roots; @@ -475,6 +476,7 @@ void LocalStore::collectGarbage(GCAction action, const PathSet & pathsToDelete, /* Determine the live paths which is just the closure of the roots under the `references' relation. */ + printMsg(lvlError, format("computing live paths...")); PathSet livePaths; for (PathSet::const_iterator i = roots.begin(); i != roots.end(); ++i) computeFSClosure(canonPath(*i), livePaths); @@ -548,6 +550,7 @@ void LocalStore::collectGarbage(GCAction action, const PathSet & pathsToDelete, /* Read the Nix store directory to find all currently existing paths. */ + printMsg(lvlError, format("reading the Nix store...")); PathSet storePathSet; if (action != gcDeleteSpecific) { Paths entries = readDirectory(nixStore); @@ -567,9 +570,14 @@ void LocalStore::collectGarbage(GCAction action, const PathSet & pathsToDelete, which things can be deleted safely. */ /* !!! when we have multiple output paths per derivation, this will not work anymore because we get cycles. */ + printMsg(lvlError, format("toposorting...")); Paths storePaths = topoSortPaths(storePathSet); /* Try to delete store paths in the topologically sorted order. */ + printMsg(lvlError, action == gcReturnDead + ? format("looking for garbage...") + : format("deleting garbage...")); + for (Paths::iterator i = storePaths.begin(); i != storePaths.end(); ++i) { debug(format("considering deletion of `%1%'") % *i); |