OpenPKG CVS Repository
  http://cvs.openpkg.org/
  ____________________________________________________________________________

  Server: cvs.openpkg.org                  Name:   Michael van Elst
  Root:   /e/openpkg/cvs                   Email:  [EMAIL PROTECTED]
  Module: openpkg-re                       Date:   13-Nov-2002 15:35:28
  Branch: HEAD                             Handle: 2002111314352800

  Modified files:
    openpkg-re              openpkg-build

  Log:
    use repository to compute reverse dependencies

  Summary:
    Revision    Changes     Path
    1.16        +15 -24     openpkg-re/openpkg-build
  ____________________________________________________________________________

  Index: openpkg-re/openpkg-build
  ============================================================
  $ cvs diff -u -r1.15 -r1.16 openpkg-build
  --- openpkg-re/openpkg-build  13 Nov 2002 14:17:34 -0000      1.15
  +++ openpkg-re/openpkg-build  13 Nov 2002 14:35:28 -0000      1.16
  @@ -227,8 +227,7 @@
       my($i) = $env->{'installed'};
       my($r) = $env->{'repository'};
       my($pkg, %rev);
  -    my(@vers,$t);
  -    my($busy);
  +    my(@vers,$t,@names);
   
       print "# computing reverse dependencies\n";
   
  @@ -239,35 +238,27 @@
               next;
           }
   
  -        my(@l) = `$RPM -qR $pkg`;
  -        my(@names);
  -
  -        @names = grep { $_ ne '' && $_ !~ /^(rpmlib\(|OpenPKG|openpkg$)/ }
  -                 map { /^(\S+)/ } @l;
  -
           @vers = get_versions($r->{$pkg}, sub { 1; });
           foreach (@vers) {
  -            $t = $r->{$pkg}->{$_}->[0];
  +            $t = $r->{$pkg}->{$_}->[-1];
  +            next unless $t && exists $t->{depends};
  +
  +            @names = grep { $_ ne '' }
  +                     map { /^(\S+)/ }
  +                     @{$t->{depends}};
  +            next unless @names;
  +
               push @{$rev{$_}}, $t foreach @names;
           }
       }
   
  -    do {
  -        foreach $pkg (keys %rev) {
  -            my(@oldlist) = @{$rev{$pkg}};
  -            my(@newlist) = sort {
  +    foreach $pkg (keys %rev) {
  +        $rev{$pkg} = [
  +            sort {
                   revdep(\%rev, $b, $a->{name});
  -            } @oldlist;
  -
  -            if ((scalar(@oldlist) != scalar(@newlist)) ||
  -                grep($oldlist[$_] ne $newlist[$_], 0..$#oldlist)) {
  -                $busy = 1;
  -            }
  -
  -            $rev{$pkg} = \@newlist;
  -        }
  -        print "# resorting dependencies\n" if $busy;
  -    } while (!$busy);
  +            } @{$rev{$pkg}}
  +        ];
  +    }
   
       return \%rev;
   }
______________________________________________________________________
The OpenPKG Project                                    www.openpkg.org
CVS Repository Commit List                     [EMAIL PROTECTED]

Reply via email to