about summary refs log tree commit diff
path: root/src/libutil
diff options
context:
space:
mode:
authorEelco Dolstra <eelco.dolstra@logicblox.com>2014-05-21T15·19+0200
committerEelco Dolstra <eelco.dolstra@logicblox.com>2014-05-21T15·19+0200
commit9f9080e2c019f188ba679a7a89284d7eaf629710 (patch)
treedac5d9672e2b4c139c2e97d7766911b62f8b069b /src/libutil
parenteac5841970737b799c55ec78f6ace6d80762ff04 (diff)
nix-store -l: Fetch build logs from the Internet
If a build log is not available locally, then ‘nix-store -l’ will now
try to download it from the servers listed in the ‘log-servers’ option
in nix.conf. For instance, if you have:

  log-servers = http://hydra.nixos.org/log

then it will try to get logs from http://hydra.nixos.org/log/<base
name of the store path>. So you can do things like:

  $ nix-store -l $(which xterm)

and get a log even if xterm wasn't built locally.
Diffstat (limited to 'src/libutil')
-rw-r--r--src/libutil/util.cc2
-rw-r--r--src/libutil/util.hh2
2 files changed, 3 insertions, 1 deletions
diff --git a/src/libutil/util.cc b/src/libutil/util.cc
index 846674a29d..8fc78b1463 100644
--- a/src/libutil/util.cc
+++ b/src/libutil/util.cc
@@ -901,7 +901,7 @@ string runProgram(Path program, bool searchPath, const Strings & args)
     /* Wait for the child to finish. */
     int status = pid.wait(true);
     if (!statusOk(status))
-        throw Error(format("program `%1%' %2%")
+        throw ExecError(format("program `%1%' %2%")
             % program % statusToString(status));
 
     return result;
diff --git a/src/libutil/util.hh b/src/libutil/util.hh
index ce2d77c19a..1e9ffcf51b 100644
--- a/src/libutil/util.hh
+++ b/src/libutil/util.hh
@@ -257,6 +257,8 @@ void killUser(uid_t uid);
 string runProgram(Path program, bool searchPath = false,
     const Strings & args = Strings());
 
+MakeError(ExecError, Error)
+
 /* Close all file descriptors except stdin, stdout, stderr, and those
    listed in the given set.  Good practice in child processes. */
 void closeMostFDs(const set<int> & exceptions);