forked from lix-project/hydra
* Don't discard old build steps when restarting a build.
This commit is contained in:
parent
a6e84d8431
commit
5853a26b13
|
@ -76,7 +76,10 @@ sub doBuild {
|
||||||
"--log-type flat --print-build-trace --realise $drvPath " .
|
"--log-type flat --print-build-trace --realise $drvPath " .
|
||||||
"--add-root " . gcRootFor $outPath . " 2>&1";
|
"--add-root " . gcRootFor $outPath . " 2>&1";
|
||||||
|
|
||||||
my $buildStepNr = 1;
|
my $buildStepNr = $build->buildsteps->find({},
|
||||||
|
{select => {max => 'stepnr + 1'}, as => ['max']})->get_column('max') || 1;
|
||||||
|
|
||||||
|
my %buildSteps;
|
||||||
|
|
||||||
open OUT, "$cmd |" or die;
|
open OUT, "$cmd |" or die;
|
||||||
|
|
||||||
|
@ -91,7 +94,7 @@ sub doBuild {
|
||||||
if (/^@\s+build-started\s+(\S+)\s+(\S+)\s+(\S+)\s+(\S+)$/) {
|
if (/^@\s+build-started\s+(\S+)\s+(\S+)\s+(\S+)\s+(\S+)$/) {
|
||||||
$db->txn_do(sub {
|
$db->txn_do(sub {
|
||||||
$build->buildsteps->create(
|
$build->buildsteps->create(
|
||||||
{ stepnr => $buildStepNr++
|
{ stepnr => ($buildSteps{$drvPath} = $buildStepNr++)
|
||||||
, type => 0 # = build
|
, type => 0 # = build
|
||||||
, drvpath => $1
|
, drvpath => $1
|
||||||
, outpath => $2
|
, outpath => $2
|
||||||
|
@ -105,9 +108,7 @@ sub doBuild {
|
||||||
elsif (/^@\s+build-succeeded\s+(\S+)\s+(\S+)$/) {
|
elsif (/^@\s+build-succeeded\s+(\S+)\s+(\S+)$/) {
|
||||||
my $drvPath = $1;
|
my $drvPath = $1;
|
||||||
$db->txn_do(sub {
|
$db->txn_do(sub {
|
||||||
(my $step) = $build->buildsteps->search(
|
my $step = $build->buildsteps->find({stepnr => $buildSteps{$drvPath}}) or die;
|
||||||
{type => 0, drvpath => $drvPath}, {});
|
|
||||||
die unless $step;
|
|
||||||
$step->update({busy => 0, status => 0, stoptime => time});
|
$step->update({busy => 0, status => 0, stoptime => time});
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
@ -117,9 +118,8 @@ sub doBuild {
|
||||||
$someBuildFailed = 1;
|
$someBuildFailed = 1;
|
||||||
$thisBuildFailed = 1 if $drvPath eq $drvPathStep;
|
$thisBuildFailed = 1 if $drvPath eq $drvPathStep;
|
||||||
$db->txn_do(sub {
|
$db->txn_do(sub {
|
||||||
(my $step) = $build->buildsteps->search(
|
if ($buildSteps{$drvPathStep}) {
|
||||||
{type => 0, drvpath => $drvPathStep}, {});
|
my $step = $build->buildsteps->find({stepnr => $buildSteps{$drvPathStep}}) or die;
|
||||||
if ($step) {
|
|
||||||
$step->update({busy => 0, status => 1, errormsg => $4, stoptime => time});
|
$step->update({busy => 0, status => 1, errormsg => $4, stoptime => time});
|
||||||
} else {
|
} else {
|
||||||
$build->buildsteps->create(
|
$build->buildsteps->create(
|
||||||
|
@ -142,7 +142,7 @@ sub doBuild {
|
||||||
my $outPath = $1;
|
my $outPath = $1;
|
||||||
$db->txn_do(sub {
|
$db->txn_do(sub {
|
||||||
$build->buildsteps->create(
|
$build->buildsteps->create(
|
||||||
{ stepnr => $buildStepNr++
|
{ stepnr => ($buildSteps{$outPath} = $buildStepNr++)
|
||||||
, type => 1 # = substitution
|
, type => 1 # = substitution
|
||||||
, outpath => $1
|
, outpath => $1
|
||||||
, busy => 1
|
, busy => 1
|
||||||
|
@ -154,9 +154,7 @@ sub doBuild {
|
||||||
elsif (/^@\s+substituter-succeeded\s+(\S+)$/) {
|
elsif (/^@\s+substituter-succeeded\s+(\S+)$/) {
|
||||||
my $outPath = $1;
|
my $outPath = $1;
|
||||||
$db->txn_do(sub {
|
$db->txn_do(sub {
|
||||||
(my $step) = $build->buildsteps->search(
|
my $step = $build->buildsteps->find({stepnr => $buildSteps{$outPath}}) or die;
|
||||||
{type => 1, outpath => $outPath}, {});
|
|
||||||
die unless $step;
|
|
||||||
$step->update({busy => 0, status => 0, stoptime => time});
|
$step->update({busy => 0, status => 0, stoptime => time});
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
@ -164,9 +162,7 @@ sub doBuild {
|
||||||
elsif (/^@\s+substituter-failed\s+(\S+)\s+(\S+)\s+(\S+)$/) {
|
elsif (/^@\s+substituter-failed\s+(\S+)\s+(\S+)\s+(\S+)$/) {
|
||||||
my $outPath = $1;
|
my $outPath = $1;
|
||||||
$db->txn_do(sub {
|
$db->txn_do(sub {
|
||||||
(my $step) = $build->buildsteps->search(
|
my $step = $build->buildsteps->find({stepnr => $buildSteps{$outPath}}) or die;
|
||||||
{type => 1, outpath => $outPath}, {});
|
|
||||||
die unless $step;
|
|
||||||
$step->update({busy => 0, status => 1, errormsg => $3, stoptime => time});
|
$step->update({busy => 0, status => 1, errormsg => $3, stoptime => time});
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
@ -303,7 +299,7 @@ $db->txn_do(sub {
|
||||||
die "build $buildId is already being built";
|
die "build $buildId is already being built";
|
||||||
}
|
}
|
||||||
$build->schedulingInfo->update({busy => 1, locker => $$});
|
$build->schedulingInfo->update({busy => 1, locker => $$});
|
||||||
$build->buildsteps->delete_all;
|
$build->buildsteps->search({busy => 1})->delete_all;
|
||||||
$build->buildproducts->delete_all;
|
$build->buildproducts->delete_all;
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue