about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--src/libstore/normalise.cc17
-rw-r--r--src/libutil/util.cc36
-rw-r--r--src/libutil/util.hh1
3 files changed, 40 insertions, 14 deletions
diff --git a/src/libstore/normalise.cc b/src/libstore/normalise.cc
index e287914a100c..5d3771b23343 100644
--- a/src/libstore/normalise.cc
+++ b/src/libstore/normalise.cc
@@ -164,14 +164,18 @@ Path normaliseStoreExpr(const Path & _nePath, PathSet pending)
         }
 
         /* Run the builder. */
-        printMsg(lvlChatty, format("building..."));
+        startNest(nest2, lvlChatty,
+            format("executing builder `%1%'") % ne.derivation.builder);
         runProgram(ne.derivation.builder, ne.derivation.args, env,
             nixLogDir + "/" + baseNameOf(nePath));
-        printMsg(lvlChatty, format("build completed"));
+        printMsg(lvlChatty, format("builder completed"));
+        nest2.close();
         
     } else
         printMsg(lvlChatty, format("fast build succesful"));
 
+    startNest(nest3, lvlChatty, format("determining closure value"));
+    
     /* Check whether the output paths were created, and grep each
        output path to determine what other paths it references.  Also make all
        output paths read-only. */
@@ -188,8 +192,11 @@ Path normaliseStoreExpr(const Path & _nePath, PathSet pending)
 
 	/* For this output path, find the references to other paths contained
 	   in it. */
+        startNest(nest2, lvlChatty,
+            format("scanning for store references in `%1%'") % ne.derivation.builder);
         Strings refPaths = filterReferences(path, 
             Strings(allPaths.begin(), allPaths.end()));
+        nest2.close();
 
 	/* Construct a closure element for this output path. */
         ClosureElem elem;
@@ -241,11 +248,13 @@ Path normaliseStoreExpr(const Path & _nePath, PathSet pending)
     {
         PathSet::iterator j = donePaths.find(i->first);
         if (j == donePaths.end())
-            debug(format("NOT referenced: `%1%'") % i->first);
+            debug(format("unreferenced input: `%1%'") % i->first);
         else
-            debug(format("referenced: `%1%'") % i->first);
+            debug(format("referenced input: `%1%'") % i->first);
     }
 
+    nest3.close();
+
     /* Write the normal form.  This does not have to occur in the
        transaction below because writing terms is idem-potent. */
     ATerm nfTerm = unparseStoreExpr(nf);
diff --git a/src/libutil/util.cc b/src/libutil/util.cc
index 768acf811c09..bf14e8aadfaa 100644
--- a/src/libutil/util.cc
+++ b/src/libutil/util.cc
@@ -144,11 +144,11 @@ Strings readDirectory(const Path & path)
 }
 
 
-void deletePath(const Path & path)
+static void _deletePath(const Path & path)
 {
     checkInterrupt();
 
-    printMsg(lvlVomit, format("deleting path `%1%'") % path);
+    printMsg(lvlVomit, format("%1%") % path);
 
     struct stat st;
     if (lstat(path.c_str(), &st))
@@ -164,7 +164,7 @@ void deletePath(const Path & path)
 	}
 
 	for (Strings::iterator i = names.begin(); i != names.end(); ++i)
-            deletePath(path + "/" + *i);
+            _deletePath(path + "/" + *i);
     }
 
     if (remove(path.c_str()) == -1)
@@ -172,6 +172,14 @@ void deletePath(const Path & path)
 }
 
 
+void deletePath(const Path & path)
+{
+    startNest(nest, lvlDebug,
+        format("recursively deleting path `%1%'") % path);
+    _deletePath(path);
+}
+
+
 void makePathReadOnly(const Path & path)
 {
     checkInterrupt();
@@ -238,11 +246,7 @@ Nest::Nest()
 
 Nest::~Nest()
 {
-    if (nest) {
-        nestingLevel--;
-        if (logType == ltEscapes)
-            cerr << "\033[q";
-    }
+    close();
 }
 
 
@@ -259,14 +263,26 @@ void Nest::open(Verbosity level, const format & f)
 {
     if (level <= verbosity) {
         if (logType == ltEscapes)
-            cerr << "\033[" << escVerbosity(level) << "p";
-        printMsg_(level, f);
+            cerr << "\033[" << escVerbosity(level) << "p"
+                 << f.str() << "\n";
+        else
+            printMsg_(level, f);
         nest = true;
         nestingLevel++;
     }
 }
 
 
+void Nest::close()
+{
+    if (nest) {
+        nestingLevel--;
+        if (logType == ltEscapes)
+            cerr << "\033[q";
+    }
+}
+
+
 void printMsg_(Verbosity level, const format & f)
 {
     checkInterrupt();
diff --git a/src/libutil/util.hh b/src/libutil/util.hh
index ac96d7fc1a86..54673c28c6af 100644
--- a/src/libutil/util.hh
+++ b/src/libutil/util.hh
@@ -127,6 +127,7 @@ public:
     Nest();
     ~Nest();
     void open(Verbosity level, const format & f);
+    void close();
 };
 
 void printMsg_(Verbosity level, const format & f);