Author: rob
Date: Fri Dec  3 08:40:34 2010
New Revision: 24960
URL: https://svn.nixos.org/websvn/nix/?rev=24960&sc=1

Log:
hydra: factored out build restart and

Modified:
   hydra/trunk/src/lib/Hydra/Controller/Build.pm
   hydra/trunk/src/lib/Hydra/Helper/AddBuilds.pm

Modified: hydra/trunk/src/lib/Hydra/Controller/Build.pm
==============================================================================
--- hydra/trunk/src/lib/Hydra/Controller/Build.pm       Thu Dec  2 22:23:15 
2010        (r24959)
+++ hydra/trunk/src/lib/Hydra/Controller/Build.pm       Fri Dec  3 08:40:34 
2010        (r24960)
@@ -357,26 +357,12 @@
     my $build = $c->stash->{build};
 
     requireProjectOwner($c, $build->project);
+    
+    my $drvpath = $build->drvpath ;
+    error($c, "This build cannot be restarted.")
+        unless $build->finished && -f $drvpath ;
 
-    txn_do($c->model('DB')->schema, sub {
-        my $drvpath = $build->drvpath ;
-        error($c, "This build cannot be restarted.")
-            unless $build->finished && -f $drvpath ;
-
-        my $cmd = "`nix-store -qR $drvpath`";
-        my $r = `nix-store --clear-failed-paths $cmd`;
-  
-        $build->update({finished => 0, timestamp => time});
-
-        $build->resultInfo->delete;
-
-        $c->model('DB::BuildSchedulingInfo')->create(
-            { id => $build->id
-            , priority => 0 # don't know the original priority anymore...
-            , busy => 0
-            , locker => ""
-            });
-    });
+    restartBuild($build);
 
     $c->flash->{buildMsg} = "Build has been restarted.";
     

Modified: hydra/trunk/src/lib/Hydra/Helper/AddBuilds.pm
==============================================================================
--- hydra/trunk/src/lib/Hydra/Helper/AddBuilds.pm       Thu Dec  2 22:23:15 
2010        (r24959)
+++ hydra/trunk/src/lib/Hydra/Helper/AddBuilds.pm       Fri Dec  3 08:40:34 
2010        (r24960)
@@ -12,7 +12,7 @@
 use File::Path;
 
 our @ISA = qw(Exporter);
-our @EXPORT = qw(fetchInput evalJobs checkBuild inputsToArgs 
captureStdoutStderr getReleaseName getBuildLog addBuildProducts);
+our @EXPORT = qw(fetchInput evalJobs checkBuild inputsToArgs 
captureStdoutStderr getReleaseName getBuildLog addBuildProducts restartBuild);
 
 sub scmPath {
     return getHydraPath . "/scm" ;
@@ -764,3 +764,30 @@
 
     return $build;
 };
+
+
+sub restartBuild {
+    my ($db, $build) = @_;
+
+    txn_do($db, sub {
+        my $drvpath = $build->drvpath ;
+        my $outpath = $build->outpath ;
+
+        my $paths = "";
+        foreach my $bs ($build->buildsteps) {
+          $paths = $paths . " " . $bs->outpath;
+        }
+
+        my $r = `nix-store --clear-failed-paths $paths $outpath`;
+        $build->update({finished => 0, timestamp => time});
+
+        $build->resultInfo->delete;
+
+        $db->resultset('BuildSchedulingInfo')->create(
+            { id => $build->id
+            , priority => 0 # don't know the original priority anymore...
+            , busy => 0
+            , locker => ""
+            });
+    });
+}
_______________________________________________
nix-commits mailing list
[email protected]
http://mail.cs.uu.nl/mailman/listinfo/nix-commits

Reply via email to