From 30c9f909b24d64d8fabc2bb450e03744cc69c9a0 Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Fri, 13 Jun 2008 17:21:20 +0000 Subject: [PATCH] * Print some progress info during the early GC stages. --- src/libstore/build.cc | 2 +- src/libstore/gc.cc | 8 ++++++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/src/libstore/build.cc b/src/libstore/build.cc index 23cda12c0..0664a118a 100644 --- a/src/libstore/build.cc +++ b/src/libstore/build.cc @@ -912,7 +912,7 @@ void DerivationGoal::haveDerivation() /* If they are all valid, then we're done. */ if (invalidOutputs.size() == 0) { - if(! forceInputs) { + if(!forceInputs) { amDone(ecSuccess); return; } diff --git a/src/libstore/gc.cc b/src/libstore/gc.cc index 1d654cd67..9ed87d112 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);