-DALWAYS_CLEAN: clean ports even if they errored out (that's a prop, so
always_clean=1 in hosts file. refactor task code a bit. And fix a buglet related to the NFS check (wrong finalize order)
This commit is contained in:
parent
df9dd3e430
commit
0f91b47f42
@ -1,7 +1,7 @@
|
||||
#! /usr/bin/perl
|
||||
|
||||
# ex:ts=8 sw=4:
|
||||
# $OpenBSD: dpb,v 1.56 2012/10/11 07:40:30 espie Exp $
|
||||
# $OpenBSD: dpb,v 1.57 2012/10/12 20:24:56 espie Exp $
|
||||
#
|
||||
# Copyright (c) 2010 Marc Espie <espie@openbsd.org>
|
||||
#
|
||||
@ -255,6 +255,9 @@ sub start_cores
|
||||
if ($state->opt('J')) {
|
||||
$override_prop->{junk} = $state->opt('J');
|
||||
}
|
||||
if ($state->defines("ALWAYS_CLEAN")) {
|
||||
$override_prop->{always_clean} = 1;
|
||||
}
|
||||
|
||||
if ($state->{config}) {
|
||||
DPB::Core->parse_hosts_file($state->{config}, $state, $override_prop);
|
||||
|
@ -1,5 +1,5 @@
|
||||
# ex:ts=8 sw=4:
|
||||
# $OpenBSD: Job.pm,v 1.2 2011/06/04 12:58:24 espie Exp $
|
||||
# $OpenBSD: Job.pm,v 1.3 2012/10/12 20:24:56 espie Exp $
|
||||
#
|
||||
# Copyright (c) 2010 Marc Espie <espie@openbsd.org>
|
||||
#
|
||||
@ -115,6 +115,12 @@ sub add_tasks
|
||||
push(@{$self->{tasks}}, @tasks);
|
||||
}
|
||||
|
||||
sub insert_tasks
|
||||
{
|
||||
my ($self, @tasks) = @_;
|
||||
unshift(@{$self->{tasks}}, @tasks);
|
||||
}
|
||||
|
||||
sub really_watch
|
||||
{
|
||||
}
|
||||
|
@ -1,5 +1,5 @@
|
||||
# ex:ts=8 sw=4:
|
||||
# $OpenBSD: Port.pm,v 1.38 2012/10/11 09:03:34 espie Exp $
|
||||
# $OpenBSD: Port.pm,v 1.39 2012/10/12 20:24:56 espie Exp $
|
||||
#
|
||||
# Copyright (c) 2010 Marc Espie <espie@openbsd.org>
|
||||
#
|
||||
@ -19,10 +19,18 @@ use warnings;
|
||||
|
||||
use DPB::Job;
|
||||
use DPB::Clock;
|
||||
package DPB::Task::Port;
|
||||
package DPB::Task::BasePort;
|
||||
our @ISA = qw(DPB::Task::Clocked);
|
||||
use OpenBSD::Paths;
|
||||
|
||||
our @ISA = qw(DPB::Task::Clocked);
|
||||
sub finalize
|
||||
{
|
||||
my ($self, $core) = @_;
|
||||
$self->SUPER::finalize($core);
|
||||
$core->job->finished_task($self);
|
||||
return $core->{status} == 0;
|
||||
}
|
||||
|
||||
sub new
|
||||
{
|
||||
my ($class, $phase) = @_;
|
||||
@ -43,14 +51,6 @@ sub fork
|
||||
return $self->SUPER::fork($core);
|
||||
}
|
||||
|
||||
sub finalize
|
||||
{
|
||||
my ($self, $core) = @_;
|
||||
$self->SUPER::finalize($core);
|
||||
$core->job->finished_task($self);
|
||||
return $core->{status} == 0;
|
||||
}
|
||||
|
||||
sub handle_output
|
||||
{
|
||||
my ($self, $job) = @_;
|
||||
@ -124,11 +124,29 @@ sub make_sure_we_have_packages
|
||||
}
|
||||
if (!$check) {
|
||||
print $log ">>> waiting 10 seconds\n";
|
||||
$job->add_tasks(DPB::Task::Port::VerifyPackages->new(
|
||||
$job->insert_tasks(DPB::Task::Port::VerifyPackages->new(
|
||||
'waiting'.$job->{waiting}++));
|
||||
}
|
||||
}
|
||||
|
||||
package DPB::Task::Port;
|
||||
our @ISA = qw(DPB::Task::BasePort);
|
||||
|
||||
sub finalize
|
||||
{
|
||||
my ($self, $core) = @_;
|
||||
$self->SUPER::finalize($core);
|
||||
if ($core->{status} == 0) {
|
||||
return 1;
|
||||
}
|
||||
if ($core->prop->{always_clean}) {
|
||||
$core->job->insert_tasks(DPB::Task::Port::CleanOnError->new(
|
||||
'clean'));
|
||||
return 1;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
package DPB::Task::Port::Serialized;
|
||||
our @ISA = qw(DPB::Task::Port);
|
||||
|
||||
@ -446,11 +464,20 @@ sub finalize
|
||||
}
|
||||
|
||||
package DPB::Task::Port::Clean;
|
||||
our @ISA = qw(DPB::Task::Port);
|
||||
our @ISA = qw(DPB::Task::BasePort);
|
||||
|
||||
sub notime { 1 }
|
||||
|
||||
sub finalize
|
||||
{
|
||||
my ($self, $core) = @_;
|
||||
if (!$self->requeue($core)) {
|
||||
$self->make_sure_we_have_packages($core->job);
|
||||
}
|
||||
$self->SUPER::finalize($core);
|
||||
}
|
||||
|
||||
sub requeue
|
||||
{
|
||||
my ($self, $core) = @_;
|
||||
# didn't clean right, and no sudo yet:
|
||||
@ -458,15 +485,26 @@ sub finalize
|
||||
if ($core->{status} != 0 && !$self->{sudo}) {
|
||||
$self->{sudo} = 1;
|
||||
my $job = $core->job;
|
||||
unshift(@{$job->{tasks}}, $self);
|
||||
$job->insert_tasks($self);
|
||||
my $fh = $job->{builder}->logger->open("clean");
|
||||
print $fh $job->{v}->fullpkgpath, "\n";
|
||||
$core->{status} = 0;
|
||||
return 1;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
package DPB::Task::Port::CleanOnError;
|
||||
our @ISA = qw(DPB::Task::Port::Clean);
|
||||
|
||||
sub finalize
|
||||
{
|
||||
my ($self, $core) = @_;
|
||||
if ($self->requeue($core)) {
|
||||
return 1;
|
||||
}
|
||||
$self->SUPER::finalize($core);
|
||||
$self->make_sure_we_have_packages($core->job);
|
||||
# $core->job->add_tasks(DPB::Task::Port::VerifyPackages->new('waiting'));
|
||||
return 0;
|
||||
}
|
||||
|
||||
package DPB::Task::Port::VerifyPackages;
|
||||
|
Loading…
x
Reference in New Issue
Block a user