/[smeserver]/builds_bin/checkrpms
ViewVC logotype

Diff of /builds_bin/checkrpms

Parent Directory Parent Directory | Revision Log Revision Log | View Revision Graph Revision Graph | View Patch Patch

Revision 1.1 by gordonr, Thu Sep 15 23:55:09 2005 UTC Revision 1.19 by slords, Thu Jul 19 19:59:15 2007 UTC
# Line 4  use strict; Line 4  use strict;
4  use warnings;  use warnings;
5  use RPM2;  use RPM2;
6  use Data::Dumper;  use Data::Dumper;
7    use Getopt::Std;
8    
9  my $rpm_flags =  RPM2->vsf_nodsa;  my $centosrel = '4';
10  my $build_dir  = "/builds/RPMS";  my $fedorarel = '3';
11  my @repositories = qw(  my $builds = '/builds/rpms';
12          /mirrors/centos/4/updates/i386/RPMS/  my $arch = `uname -i`;
13          /mirrors/centos/4/os/i386/CentOS/RPMS/  chomp $arch;
         /mirrors/centos/4/dag/i386/RPMS.dag/  
         /mirrors/centos/4/atrpms/i386/RPMS.stable/  
         /mirrors/centos/4/dries/i386/RPMS.dries/  
         /mirrors/fedora/updates/3/i386/  
         /mirrors/fedora/3/i386/os/Fedora/RPMS/  
         /mirrors/mitel/devel/repo/RPMS/  
         /builds/rpms/RPMS/i686/  
         /builds/rpms/RPMS/i586/  
         /builds/rpms/RPMS/i386/  
         /builds/rpms/RPMS/noarch/  
         );  
14    
15  opendir RPMS, $build_dir or die "Couldn't opendir $build_dir";  my %opts;
16  my %rpms = map { my $x = RPM2->open_package("$build_dir/$_", $rpm_flags); $x->tag('NAME') => $x; } grep { /\.rpm$/ } readdir RPMS;  getopts( "als:", \%opts );
17    my $src = $opts{s} || "/builds/RPMS-$arch";
18    
19    my $rpm_flags = RPM2->vsf_nodsaheader | RPM2->vsf_nodsa;
20    my @repos = (
21                  "/mirrors/centos/$centosrel/fasttrack/$arch/RPMS",
22                  "/mirrors/centos/$centosrel/updates/$arch/RPMS",
23                  "/mirrors/centos/$centosrel/os/$arch/CentOS/RPMS",
24                  "/mirrors/centos/$centosrel/os/$arch/CentOS",
25                  "/mirrors/centos/$centosrel/extras/$arch/RPMS",
26                  "/mirrors/fedora/epel/$centosrel/$arch",
27                  "/mirrors/rpmforge/dag/redhat/el$centosrel/en/$arch/dag/RPMS",
28                  "/mirrors/atrpms/el$centosrel-$arch/atrpms/stable",
29                  "/mirrors/atrpms/el$centosrel-$arch/atrpms/testing",
30                  "/mirrors/fedora/core/updates/$fedorarel/$arch",
31                  "/mirrors/fedora/core/$fedorarel/$arch/os/Fedora/RPMS",
32                  "/mirrors/fedora/extras/$fedorarel/$arch",
33                  "$builds/RPMS/i686",
34                  "$builds/RPMS/i586",
35                  "$builds/RPMS/$arch",
36                  "$builds/RPMS/noarch",
37                );
38    
39    opendir RPMS, $src or die "Couldn't opendir $src";
40    my %rpms = map { my $x = RPM2->open_package("$src/$_", $rpm_flags); $x->tag('NAME') => $x; } grep { /\.rpm$/ } readdir RPMS;
41  closedir RPMS;  closedir RPMS;
42    
43  my %repos;  my %repos;
44  foreach my $repo (reverse @repositories)  foreach my $repo (reverse @repos)
45  {  {
46      my %temp_repo = map { $_ => $repo } grep { /\.rpm$/ } readdir RPMS if ( opendir RPMS, $repo );      my %temp_repo = map { $_ => $repo } grep { /\.rpm$/ } readdir RPMS if ( opendir RPMS, $repo );
47      closedir RPMS;      closedir RPMS;
# Line 44  foreach my $rpm ( sort keys %rpms ) Line 58  foreach my $rpm ( sort keys %rpms )
58      foreach my $file ( grep { /^$rpmfix-[0-9].*\.rpm$/ } keys %repos )      foreach my $file ( grep { /^$rpmfix-[0-9].*\.rpm$/ } keys %repos )
59      {      {
60          $header = RPM2->open_package("$repos{$file}/$file", $rpm_flags);          $header = RPM2->open_package("$repos{$file}/$file", $rpm_flags);
61          if ($header ge $rpms{$rpm} || $header->filename =~ m#/centos.*/(os|updates)/#)          if ($header ge $rpms{$rpm} || $header->filename =~ m#/centos/[\d.]+/(os|updates|fasttrack|extras)/#i || $opts{a})
62          {          {
63              push @headers, $header;              push @headers, $header;
64          }          }
65      }      }
66      @headers = reverse sort { $a cmp $b } @headers;      @headers = reverse sort { $a cmp $b } @headers;
67      if (grep { $_->filename =~ m#/centos.*/updates/# } @headers)      if (grep { $_->filename =~ m#/centos/[\d.]+/(os|updates|fasttrack|extras)/#i } @headers)
68      {      {
69          @headers = grep { $_->filename !~ m#/centos.*/os/# } @headers;          @headers = grep { $_->filename !~ m#/fedora/#i || $_->filename =~ m#/epel/#i || $_ eq $rpms{$rpm} } @headers;
70      }      }
71      if (grep { $_->filename =~ m#/centos.*/(updates|os|dag)/# } @headers)      unless ($opts{a}) {
72      {          if (grep { $_->filename =~ m#/centos/[\d.]+/(updates|fasttrack)/#i } @headers)
73          @headers = grep { $_->filename !~ m#/fedora.*/(updates|os)/# } @headers;          {
74          @headers = grep { $_->filename !~ m#/centos.*/atrpms/# } @headers;              @headers = grep { $_->filename !~ m#/centos/[\d.]+/os/#i || $_ eq $rpms{$rpm} } @headers;
75            }
76            if (grep { $_->filename =~ m#/centos/[\d.]+/(os|updates|fasttrack|extras)/#i || $_->filename =~ m#/(dag|epel)/[^d]#i } @headers)
77            {
78                @headers = grep { $_->filename !~ m#/atrpms/#i || $_ eq $rpms{$rpm} } @headers;
79            }
80      }      }
81      if ($#headers < 0)      if ($#headers < 0)
82      {      {
83          print "$rpm\n";          print "$rpm\n";
84          print "  ***** can't find $rpm in any repository *****\n";          print "  ***** can't find $rpm in any repository *****\n";
85      }      }
86      elsif ( $headers[0]->filename !~ m#/centos.*/(updates|os)/#  || $headers[0] ne $rpms{$rpm} )      elsif ( $headers[0]->filename !~ m#/centos/[\d.]+/(os|updates|fastrrack|extras)/#i  || $headers[0] ne $rpms{$rpm} )
87      {      {
88            next if $headers[0] eq $rpms{$rpm} && $opts{l};
89          if (grep { $_ ne $rpms{$rpm} } @headers)          if (grep { $_ ne $rpms{$rpm} } @headers)
90          {          {
91              print "$rpm\n";              print "$rpm\n";
# Line 73  foreach my $rpm ( sort keys %rpms ) Line 93  foreach my $rpm ( sort keys %rpms )
93              {              {
94                  my $path = $header->filename;                  my $path = $header->filename;
95                  $path =~ s@^(.*)/.*@$1@;                  $path =~ s@^(.*)/.*@$1@;
96                  print " " . ($header eq $rpms{$rpm} ? "** " : "-- ") . $header->as_nvre . " ($path)\n";                  my $filename = $rpms{$rpm}->filename;
97                    $filename =~ s@^.*/(.*)@$1@;
98                    print " " . ( $header eq $rpms{$rpm} ? "** " : ( $path =~ m#/centos/# ? "-- " : ".. " ) ) . $header->filename . "\n";
99                    last if $header eq $rpms{$rpm}  && $opts{l};
100              }              }
101          }          }
102      }      }


Legend:
Removed lines/characters  
Changed lines/characters
  Added lines/characters

admin@koozali.org
ViewVC Help
Powered by ViewVC 1.2.1 RSS 2.0 feed