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:
|
# 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>
|
# Copyright (c) 2010 Marc Espie <espie@openbsd.org>
|
||||||
#
|
#
|
||||||
@ -249,27 +249,9 @@ sub run
|
|||||||
{
|
{
|
||||||
my ($self, $core) = @_;
|
my ($self, $core) = @_;
|
||||||
my $job = $core->job;
|
my $job = $core->job;
|
||||||
my $dep = {};
|
my $dep = $job->{depends};
|
||||||
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;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
$self->junk_lock($core);
|
$self->junk_lock($core);
|
||||||
|
|
||||||
exit(0) unless %$dep;
|
|
||||||
$self->handle_output($job);
|
$self->handle_output($job);
|
||||||
my @cmd = ('/usr/sbin/pkg_add', '-aI');
|
my @cmd = ('/usr/sbin/pkg_add', '-aI');
|
||||||
if ($job->{builder}->{update}) {
|
if ($job->{builder}->{update}) {
|
||||||
@ -602,6 +584,31 @@ sub new
|
|||||||
return $job;
|
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
|
sub add_normal_tasks
|
||||||
{
|
{
|
||||||
my ($self, $dontclean, $hostprop) = @_;
|
my ($self, $dontclean, $hostprop) = @_;
|
||||||
@ -611,7 +618,9 @@ sub add_normal_tasks
|
|||||||
if ($builder->{clean}) {
|
if ($builder->{clean}) {
|
||||||
$self->insert_tasks(DPB::Task::Port::BaseClean->new('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}) {
|
||||||
if ($hostprop->{junk_count}++ >= $hostprop->{junk}) {
|
if ($hostprop->{junk_count}++ >= $hostprop->{junk}) {
|
||||||
$hostprop->{junk_count} = 0;
|
$hostprop->{junk_count} = 0;
|
||||||
|
Loading…
Reference in New Issue
Block a user