From 94c55bc7b44c94223f63de436139de73713f6c48 Mon Sep 17 00:00:00 2001 From: espie Date: Thu, 11 Oct 2012 07:38:38 +0000 Subject: [PATCH] move to using BUILD_PACKAGES, so we have the actual tidy list. Stupid NFS work-around: during/after cleanup, wait until the packages show up. Each wait period of ten seconds will show up as waiting#n. --- infrastructure/lib/DPB/Job/Port.pm | 34 ++++++++++++++++++++++++++---- infrastructure/lib/DPB/Logger.pm | 25 ++-------------------- infrastructure/lib/DPB/PkgPath.pm | 27 +++++++++++++++++++++--- infrastructure/lib/DPB/PortInfo.pm | 3 +-- 4 files changed, 57 insertions(+), 32 deletions(-) diff --git a/infrastructure/lib/DPB/Job/Port.pm b/infrastructure/lib/DPB/Job/Port.pm index 04eb52b87e9..a75947450cc 100644 --- a/infrastructure/lib/DPB/Job/Port.pm +++ b/infrastructure/lib/DPB/Job/Port.pm @@ -1,5 +1,5 @@ # ex:ts=8 sw=4: -# $OpenBSD: Port.pm,v 1.35 2012/10/08 12:41:03 espie Exp $ +# $OpenBSD: Port.pm,v 1.36 2012/10/11 07:38:39 espie Exp $ # # Copyright (c) 2010 Marc Espie # @@ -108,6 +108,20 @@ sub run sub notime { 0 } +sub make_sure_we_have_packages +{ + my ($self, $job) = @_; + my $check = -f $job->{builder}->pkgfile($job->{v}); + # check ALL BUILD_PACKAGES + for my $w ($job->{v}->build_path_list) { + $check &&= -f $job->{builder}->pkgfile($w); + } + if (!$check) { + $job->add_tasks(DPB::Task::Port::VerifyPackages->new( + 'waiting'.$job->{waiting}++)); + } +} + package DPB::Task::Port::Serialized; our @ISA = qw(DPB::Task::Port); @@ -444,9 +458,23 @@ sub finalize return 1; } $self->SUPER::finalize($core); + $self->make_sure_we_have_packages($core->job); +# $core->job->add_tasks(DPB::Task::Port::VerifyPackages->new('waiting')); } package DPB::Task::Port::VerifyPackages; +our @ISA = qw(DPB::Task::Port); +sub finalize +{ + my ($self, $core) = @_; + $self->make_sure_we_have_packages($core->job); +} + +sub run +{ + sleep 10; + exit(0); +} package DPB::Port::TaskFactory; my $repo = { @@ -460,7 +488,6 @@ my $repo = { 'show-size' => 'DPB::Task::Port::ShowSize', 'show-fake-size' => 'DPB::Task::Port::ShowFakeSize', 'junk' => 'DPB::Task::Port::Uninstall', - 'final-check' => "DPB::Task::Port::VerifyPackages", }; sub create @@ -549,7 +576,6 @@ sub add_normal_tasks if (!$dontclean) { push @todo, 'clean'; } -# push @todo, 'final-check'; $self->add_tasks(map {DPB::Port::TaskFactory->create($_)} @todo); } @@ -633,7 +659,7 @@ sub set_watch { my ($self, $logger, $v) = @_; my $expected; - for my $w ($logger->pathlist($v)) { + for my $w ($v->build_path_list) { if (defined $logsize->{$w}) { $expected = $logsize->{$w}; last; diff --git a/infrastructure/lib/DPB/Logger.pm b/infrastructure/lib/DPB/Logger.pm index 67aa44cef1f..f75de18dba6 100644 --- a/infrastructure/lib/DPB/Logger.pm +++ b/infrastructure/lib/DPB/Logger.pm @@ -1,5 +1,5 @@ # ex:ts=8 sw=4: -# $OpenBSD: Logger.pm,v 1.8 2012/07/10 09:38:37 espie Exp $ +# $OpenBSD: Logger.pm,v 1.9 2012/10/11 07:38:38 espie Exp $ # # Copyright (c) 2010 Marc Espie # @@ -84,27 +84,6 @@ sub link symlink($src, $b); } -sub pathlist -{ - my ($self, $v) = @_; - my @l = ($v); - my $stem = $v->pkgpath_and_flavors; - my $w = DPB::PkgPath->new($stem); - if ($w ne $v) { - push(@l, $w); - } - if (defined $v->{info}) { - for my $m (keys %{$v->{info}{MULTI_PACKAGES}}) { - next if $m eq '-'; - my $w = DPB::PkgPath->new("$stem,$m"); - if ($w ne $v) { - push(@l, $w); - } - } - } - return @l; -} - sub make_logs { my ($self, $v) = @_; @@ -112,7 +91,7 @@ sub make_logs if ($self->{clean}) { unlink($log); } - for my $w ($self->pathlist($v)) { + for my $w ($v->build_path_list) { $self->link($log, $self->log_pkgname($w)); } return $log; diff --git a/infrastructure/lib/DPB/PkgPath.pm b/infrastructure/lib/DPB/PkgPath.pm index 7b29900ef97..894238bf405 100644 --- a/infrastructure/lib/DPB/PkgPath.pm +++ b/infrastructure/lib/DPB/PkgPath.pm @@ -1,5 +1,5 @@ # ex:ts=8 sw=4: -# $OpenBSD: PkgPath.pm,v 1.33 2012/08/22 07:49:00 espie Exp $ +# $OpenBSD: PkgPath.pm,v 1.34 2012/10/11 07:38:39 espie Exp $ # # Copyright (c) 2010 Marc Espie # @@ -166,8 +166,8 @@ sub merge_depends } } # share ! - if (defined $info->{MULTI_PACKAGES}) { - $multi = $info->{MULTI_PACKAGES}; + if (defined $info->{BUILD_PACKAGES}) { + $multi = $info->{BUILD_PACKAGES}; } # XXX don't grab dependencies for IGNOREd stuff next if defined $info->{IGNORE}; @@ -225,6 +225,27 @@ sub merge_depends } } +sub build_path_list +{ + my ($v) = @_; + my @l = ($v); + my $stem = $v->pkgpath_and_flavors; + my $w = DPB::PkgPath->new($stem); + if ($w ne $v) { + push(@l, $w); + } + if (defined $v->{info}) { + for my $m (keys %{$v->{info}{BUILD_PACKAGES}}) { + next if $m eq '-'; + my $w = DPB::PkgPath->new("$stem,$m"); + if ($w ne $v) { + push(@l, $w); + } + } + } + return @l; +} + sub break { my ($self, $why) = @_; diff --git a/infrastructure/lib/DPB/PortInfo.pm b/infrastructure/lib/DPB/PortInfo.pm index e8168ae5441..b159d17898b 100644 --- a/infrastructure/lib/DPB/PortInfo.pm +++ b/infrastructure/lib/DPB/PortInfo.pm @@ -1,5 +1,5 @@ # ex:ts=8 sw=4: -# $OpenBSD: PortInfo.pm,v 1.19 2012/09/23 18:13:32 espie Exp $ +# $OpenBSD: PortInfo.pm,v 1.20 2012/10/11 07:38:39 espie Exp $ # # Copyright (c) 2010 Marc Espie # @@ -235,7 +235,6 @@ my %adder = ( NO_REGRESS => "AddYesNo", REGRESS_IS_INTERACTIVE => "AddYesNo", SUBPACKAGE => "AddInfo", - MULTI_PACKAGES => "AddList", BUILD_PACKAGES => "AddList", DPB_PROPERTIES => "AddList", EXTRA => "Extra",