/[smeserver]/builds_bin/checkrpms
ViewVC logotype

Annotation of /builds_bin/checkrpms

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


Revision 1.20 - (hide annotations) (download)
Tue Oct 16 21:36:23 2007 UTC (17 years, 1 month ago) by slords
Branch: MAIN
Changes since 1.19: +1 -0 lines
updates

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

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