more dependency improvements
authorAnas Nashif <anas.nashif@intel.com>
Fri, 20 Jul 2012 14:28:06 +0000 (15:28 +0100)
committerAnas Nashif <anas.nashif@intel.com>
Fri, 20 Jul 2012 14:28:06 +0000 (15:28 +0100)
Change-Id: I0179db9ff52281c79fc822b3727f8d2dbcf867b7

depanneur

index 24d0060f486611241e9cb3d0b470f3d9de5b13d5..ab476b278080ceaddab03555319ace527d174d1c 100755 (executable)
--- a/depanneur
+++ b/depanneur
@@ -701,6 +701,7 @@ sub build_package {
 }
 
 my @done = ();
+my @skipped = ();
 my %caught;
 if ( ! -e "$localrepo/$dist/$arch/RPMS" ) {
     createrepo ($arch, $dist);
@@ -746,11 +747,30 @@ while (! $TERM) {
                     $dd = "--debug";
                 }
                 if ( system("$virtualenv/usr/bin/check_unresolved $dd --depfile $order_dir/.repo.cache --configdir $dist_configs --dist $dist --archpath i586:i686:noarch $fn") == 0 ) {
-                    push(@order, $name);
+                    my $stop =  0;
+                    my @deps = @{$to_build{$name}->{deps}};
+                    foreach my $dep (@deps) {
+                        foreach my $n2 (keys %to_build) {
+                            my @subs = @{$to_build{$n2}->{subpacks}};
+                            for my $sub (@subs) {
+                                my $so = source_of($sub, %to_build);
+                                $dep =~ m/([^\s]+).*/;
+                                if ( $sub eq $1 && ! grep($_ eq $so, @skipped) ) {
+                                    $stop = 1;
+                                }
+                            }
+                        }
+
+                    }
+
+                    if ($stop == 0 ) {
+                        push(@order, $name);
+                    }
                 }
 
             } else {
                 info("skipping $name-$version-$release $arch $dist");
+                push(@skipped, $name);
             }
         }
     }