* Some more nesting.

This commit is contained in:
Eelco Dolstra 2004-03-22 21:42:28 +00:00
parent 777e13b94b
commit 7823db2137
3 changed files with 40 additions and 14 deletions

View File

@ -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);

View File

@ -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();

View File

@ -127,6 +127,7 @@ public:
Nest();
~Nest();
void open(Verbosity level, const format & f);
void close();
};
void printMsg_(Verbosity level, const format & f);