compute dependencies right away in the job: we don't actually have to
fork depends/prepare/prepare-results for ports which don't have any depends. This also prevents some lock contention, obviously.
This commit is contained in:
parent
1af810c8d6
commit
66b2639394
@ -1,5 +1,5 @@
|
||||
# ex:ts=8 sw=4:
|
||||
# $OpenBSD: Port.pm,v 1.44 2012/12/24 17:19:01 espie Exp $
|
||||
# $OpenBSD: Port.pm,v 1.45 2012/12/25 10:25:04 espie Exp $
|
||||
#
|
||||
# Copyright (c) 2010 Marc Espie <espie@openbsd.org>
|
||||
#
|
||||
@ -249,27 +249,9 @@ sub run
|
||||
{
|
||||
my ($self, $core) = @_;
|
||||
my $job = $core->job;
|
||||
my $dep = {};
|
||||
my $v = $job->{v};
|
||||
if (exists $v->{info}{BDEPENDS}) {
|
||||
for my $d (values %{$v->{info}{BDEPENDS}}) {
|
||||
$dep->{$d->fullpkgname} = 1;
|
||||
}
|
||||
}
|
||||
# recurse for extra stuff
|
||||
if (exists $v->{info}{BEXTRA}) {
|
||||
for my $two (values %{$v->{info}{BEXTRA}}) {
|
||||
if (exists $two->{info}{BDEPENDS}) {
|
||||
for my $d (values %{$two->{info}{BDEPENDS}}) {
|
||||
$dep->{$d->fullpkgname} = 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
my $dep = $job->{depends};
|
||||
$self->junk_lock($core);
|
||||
|
||||
exit(0) unless %$dep;
|
||||
$self->handle_output($job);
|
||||
my @cmd = ('/usr/sbin/pkg_add', '-aI');
|
||||
if ($job->{builder}->{update}) {
|
||||
@ -602,6 +584,31 @@ sub new
|
||||
return $job;
|
||||
}
|
||||
|
||||
sub has_depends
|
||||
{
|
||||
my $self = shift;
|
||||
my $dep = {};
|
||||
my $v = $self->{v};
|
||||
if (exists $v->{info}{BDEPENDS}) {
|
||||
for my $d (values %{$v->{info}{BDEPENDS}}) {
|
||||
$dep->{$d->fullpkgname} = 1;
|
||||
}
|
||||
}
|
||||
# recurse for extra stuff
|
||||
if (exists $v->{info}{BEXTRA}) {
|
||||
for my $two (values %{$v->{info}{BEXTRA}}) {
|
||||
if (exists $two->{info}{BDEPENDS}) {
|
||||
for my $d (values %{$two->{info}{BDEPENDS}}) {
|
||||
$dep->{$d->fullpkgname} = 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return 0 unless %$dep;
|
||||
$self->{depends} = $dep;
|
||||
return 1;
|
||||
}
|
||||
|
||||
sub add_normal_tasks
|
||||
{
|
||||
my ($self, $dontclean, $hostprop) = @_;
|
||||
@ -611,7 +618,9 @@ sub add_normal_tasks
|
||||
if ($builder->{clean}) {
|
||||
$self->insert_tasks(DPB::Task::Port::BaseClean->new('clean'));
|
||||
}
|
||||
push(@todo, qw(depends prepare show-prepare-results));
|
||||
if ($self->has_depends) {
|
||||
push(@todo, qw(depends prepare show-prepare-results));
|
||||
}
|
||||
if ($hostprop->{junk}) {
|
||||
if ($hostprop->{junk_count}++ >= $hostprop->{junk}) {
|
||||
$hostprop->{junk_count} = 0;
|
||||
|
Loading…
Reference in New Issue
Block a user