From 9d95aafe8ccf9d037dc97bb875bc62b919d8b123 Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Wed, 22 Oct 2003 11:04:57 +0000 Subject: [PATCH] * Ad hoc per-package logging. When Nix performs a derivation, it now writes stdout/stderr of the builder to ${prefix}/var/log/nix/x, where x is the file name of the derivation expression, e.g., /nix/var/log/nix/54256391624be04fcb426048ae3ea0a4-d-pan-0.14.2.nix Note that consecutive builds of the same expression overwrite, rather than append to, existing log files. --- src/libnix/exec.cc | 8 ++++---- src/libnix/exec.hh | 3 ++- src/libnix/normalise.cc | 3 ++- 3 files changed, 8 insertions(+), 6 deletions(-) diff --git a/src/libnix/exec.cc b/src/libnix/exec.cc index a51b605d8..4934712f9 100644 --- a/src/libnix/exec.cc +++ b/src/libnix/exec.cc @@ -16,14 +16,14 @@ static string pathNullDevice = "/dev/null"; /* Run a program. */ void runProgram(const string & program, - const Strings & args, const Environment & env) + const Strings & args, const Environment & env, + const string & logFileName) { /* Create a log file. */ - string logFileName = nixLogDir + "/run.log"; string logCommand = verbosity >= lvlDebug - ? "tee -a " + logFileName + " >&2" - : "cat >> " + logFileName; + ? "tee " + logFileName + " >&2" + : "cat > " + logFileName; /* !!! auto-pclose on exit */ FILE * logFile = popen(logCommand.c_str(), "w"); /* !!! escaping */ if (!logFile) diff --git a/src/libnix/exec.hh b/src/libnix/exec.hh index 8d410e404..fc5bd6ac8 100644 --- a/src/libnix/exec.hh +++ b/src/libnix/exec.hh @@ -15,7 +15,8 @@ typedef map Environment; /* Run a program. */ void runProgram(const string & program, - const Strings & args, const Environment & env); + const Strings & args, const Environment & env, + const string & logFileName); #endif /* !__EXEC_H */ diff --git a/src/libnix/normalise.cc b/src/libnix/normalise.cc index 196fcad2e..0ce38d68a 100644 --- a/src/libnix/normalise.cc +++ b/src/libnix/normalise.cc @@ -164,7 +164,8 @@ Path normaliseNixExpr(const Path & _nePath, PathSet pending) /* Run the builder. */ msg(lvlChatty, format("building...")); - runProgram(ne.derivation.builder, ne.derivation.args, env); + runProgram(ne.derivation.builder, ne.derivation.args, env, + nixLogDir + "/" + baseNameOf(nePath)); msg(lvlChatty, format("build completed")); } else