From 7de1b2a6980f71cfbf36f7250e247f6eafd763d9 Mon Sep 17 00:00:00 2001
From: Eelco Dolstra <e.dolstra@tudelft.nl>
Date: Sat, 1 Nov 2003 21:11:52 +0000
Subject: [PATCH] * Print the exit code of the builder.

---
 src/libnix/db.cc   |  1 -
 src/libnix/exec.cc | 12 ++++++++++--
 2 files changed, 10 insertions(+), 3 deletions(-)

diff --git a/src/libnix/db.cc b/src/libnix/db.cc
index 2f53ca3b5..c498fab74 100644
--- a/src/libnix/db.cc
+++ b/src/libnix/db.cc
@@ -251,7 +251,6 @@ void Database::close()
         for (map<TableId, Db *>::iterator i = tables.begin();
              i != tables.end(); i++)
         {
-            debug(format("closing table %1%") % i->first);
             Db * db = i->second;
             db->close(DB_NOSYNC);
             delete db;
diff --git a/src/libnix/exec.cc b/src/libnix/exec.cc
index 4934712f9..00d9e6a0a 100644
--- a/src/libnix/exec.cc
+++ b/src/libnix/exec.cc
@@ -111,9 +111,17 @@ void runProgram(const string & program,
     if (!WIFEXITED(status) || WEXITSTATUS(status) != 0) {
 	if (keepFailed) {
 	    msg(lvlTalkative, 
-		format("build failed; keeping build directory `%1%'") % tmpDir);
+		format("program `%1%' failed; keeping build directory `%2%'")
+                % program % tmpDir);
 	    delTmpDir.cancel();
 	}
-        throw Error("unable to build package");
+        if (WIFEXITED(status))
+            throw Error(format("program `%1%' failed with exit code %2%")
+                % program % WEXITSTATUS(status));
+        else if (WIFSIGNALED(status))
+            throw Error(format("program `%1%' failed due to signal %2%")
+                % program % WTERMSIG(status));
+        else
+            throw Error(format("program `%1%' died abnormally") % program);
     }
 }
-- 
GitLab