about summary refs log tree commit diff
path: root/src/libstore/normalise.cc
diff options
context:
space:
mode:
authorEelco Dolstra <e.dolstra@tudelft.nl>2004-05-12T14·20+0000
committerEelco Dolstra <e.dolstra@tudelft.nl>2004-05-12T14·20+0000
commitefa5fa1a91d5c4b29094d99b65e18b583d86dbc7 (patch)
tree4e8bc72214e48c9acd1bd342fe2e315217ce18f6 /src/libstore/normalise.cc
parent1f48aa0be7f1fe120cee44a208480b879583c5f8 (diff)
* A switch `-j NUMBER' to set the maximum number of parallel jobs (0 =
  no limit).
* Add missing file to distribution.

Diffstat (limited to 'src/libstore/normalise.cc')
-rw-r--r--src/libstore/normalise.cc13
1 files changed, 8 insertions, 5 deletions
diff --git a/src/libstore/normalise.cc b/src/libstore/normalise.cc
index b6746689e3..02089c929f 100644
--- a/src/libstore/normalise.cc
+++ b/src/libstore/normalise.cc
@@ -284,6 +284,9 @@ bool Normaliser::startBuild(Path nePath)
 {
     checkInterrupt();
 
+    if (maxBuildJobs > 0 && building.size() >= maxBuildJobs)
+        return false;
+
     Goals::iterator goalIt = goals.find(nePath);
     assert(goalIt != goals.end());
     Goal & goal(goalIt->second);
@@ -414,11 +417,6 @@ bool Normaliser::startBuild(Path nePath)
             format("build hook died with status %1%") % status);
     }
 
-    /* Right platform? */
-    if (goal.expr.derivation.platform != thisSystem)
-        throw Error(format("a `%1%' is required, but I am a `%2%'")
-		    % goal.expr.derivation.platform % thisSystem);
-
     /* Otherwise, start the build in a child process. */
     startBuildChild(goal);
 
@@ -428,6 +426,11 @@ bool Normaliser::startBuild(Path nePath)
 
 void Normaliser::startBuildChild(Goal & goal)
 {
+    /* Right platform? */
+    if (goal.expr.derivation.platform != thisSystem)
+        throw Error(format("a `%1%' is required, but I am a `%2%'")
+		    % goal.expr.derivation.platform % thisSystem);
+
     /* If any of the outputs already exist but are not registered,
        delete them. */
     for (PathSet::iterator i = goal.expr.derivation.outputs.begin();