From 538a43e06cb262af0bb52edd1f41ee2d9bf2f600 Mon Sep 17 00:00:00 2001 From: Zhang Qiang Date: Fri, 9 Nov 2012 00:37:40 +0800 Subject: [PATCH] use pkgddeps to resolve build order. pkgdeps include indirect dependency and some pre-install packges defined in build config, so use pkgdeps will make dependency of packages with more unexpectted circle, pkgddeps should be used to calculate build order Change-Id: I952d53c6bd88542b2b6d45c1c37643c431cd806e --- depanneur | 26 +++++++++++++++++--------- 1 file changed, 17 insertions(+), 9 deletions(-) diff --git a/depanneur b/depanneur index 8662847..67df95c 100755 --- a/depanneur +++ b/depanneur @@ -722,13 +722,21 @@ sub expand_deps { # get direct dependencies of specified package sub get_deps { - my $spec = shift; - my @bdeps; - my @packdeps; - my $d = Build::parse($config, $spec); - - @packdeps = @{$d->{'deps'} || []}; - foreach my $pack (@packdeps) { + my $spec = shift; + my @bdeps = (); + my @ndeps = (); + my @deps = (); + my $d = Build::parse($config, $spec); + + @deps = @{$d->{'deps'} || []}; + @ndeps = grep {/^-/} @deps; + my %ndeps = map {$_ => 1} @ndeps; + @deps = grep {!$ndeps{$_}} @deps; + # TBD: Do we need enable this + # push @deps, @{$config->{'required'}}; + @deps = Build::do_subst($config, @deps); + foreach my $pack (@deps) { + next if !defined($pack); my $pkg; my $found = 0; foreach my $pkg (keys %repo) { @@ -1390,8 +1398,8 @@ while (! $TERM) { ! (grep $_ eq $name, @skipped) && ! (grep $_ eq $name, @running)) { - next if (! exists $pkgdeps{$name}); - my @bdeps = @{$pkgdeps{$name}}; + next if (! exists $pkgddeps{$name}); + my @bdeps = @{$pkgddeps{$name}}; my $add = 1; foreach my $depp (@bdeps) { if ((! grep($_ eq $depp, @skipped)) && -- 2.7.4