better control logic.

prepare to du port dir.
This commit is contained in:
espie 2010-03-02 02:33:15 +00:00
parent d9dc61d57d
commit d2abbd61aa

View File

@ -1,5 +1,5 @@
# ex:ts=8 sw=4:
# $OpenBSD: Port.pm,v 1.5 2010/03/01 17:57:25 espie Exp $
# $OpenBSD: Port.pm,v 1.6 2010/03/02 02:33:15 espie Exp $
#
# Copyright (c) 2010 Marc Espie <espie@openbsd.org>
#
@ -52,7 +52,7 @@ sub finalize
$self->{ended} = time();
DPB::Clock->unregister($self);
$core->job->finished_task($self);
return 1;
return $core->{status} == 0;
}
sub elapsed
@ -67,6 +67,15 @@ sub stopped_clock
$self->{started} += $gap;
}
sub redirect
{
my ($self, $log) = @_;
close STDOUT;
close STDERR;
open STDOUT, '>>', $log or die "Can't write to $log";
open STDERR, '>&STDOUT' or die "bad redirect";
}
sub run
{
my ($self, $core) = @_;
@ -74,14 +83,10 @@ sub run
my $t = $self->{phase};
my $ports = $job->{builder}->{ports};
my $fullpkgpath = $job->{v}->fullpkgpath;
my $log = $job->{log};
my $make = $job->{builder}->{make};
my $sudo = OpenBSD::Paths->sudo;
my $shell = $core->{shell};
close STDOUT;
close STDERR;
open STDOUT, '>>', $log or die "Can't write to $log";
open STDERR, '>&STDOUT' or die "bad redirect";
$self->redirect($job->{log});
my @args = ($t, "TRUST_PACKAGES=Yes",
"REPORT_PROBLEM='exit 1'");
if ($job->{special}) {
@ -113,13 +118,45 @@ package DPB::Task::Port::NoTime;
our @ISA = qw(DPB::Task::Port);
sub notime { 1 }
package DPB::Task::Port::ShowSize;
our @ISA = qw(DPB::Task::Port);
sub fork
{
my ($self, $core) = @_;
open($self->{fh}, "-|");
}
sub redirect
{
my ($self, $log) = @_;
}
sub finalize
{
my ($self, $core) = @_;
my $fh = $self->{fh};
if ($core->{status} == 0) {
my $line = <$fh>;
$line = <$fh>;
if ($line =~ m/^\s*(\d+)\s+/) {
my $sz = $1;
my $job = $core->job;
my $f2 = $job->{builder}->{logger}->open("size");
print $f2 $job->{v}->fullpkgpath, " $sz\n";
}
}
close($fh);
return 1;
}
package DPB::Task::Port::Fetch;
our @ISA = qw(DPB::Task::Port::NoTime);
sub finalize
{
my ($self, $core) = @_;
$self->SUPER::finalize($core);
# if there's a watch file, then we remove the current size,
# so that we DON'T take prepare into account.
@ -130,7 +167,7 @@ sub finalize
$job->{offset} = $sz;
}
}
return 1;
$self->SUPER::finalize($core);
}
package DPB::Task::Port::Clean;
@ -159,6 +196,7 @@ my $repo = {
clean => 'DPB::Task::Port::Clean',
prepare => 'DPB::Task::Port::NoTime',
fetch => 'DPB::Task::Port::Fetch',
'show-size' => 'DPB::Task::Port::ShowSize',
};
sub create