/[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.6 - (hide annotations) (download)
Wed Jan 17 14:50:10 2007 UTC (17 years, 10 months ago) by slords
Branch: MAIN
Changes since 1.5: +8 -4 lines
Update tools

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     my %opts;
10     getopts( "s:", \%opts );
11     my $src = $opts{s} || '/builds/RPMS';
12 gordonr 1.1
13     my $rpm_flags = RPM2->vsf_nodsa;
14     my @repositories = qw(
15 slords 1.4 /mirrors/centos/4/fasttrack/i386/RPMS/
16 gordonr 1.2 /mirrors/centos/4/updates/i386/RPMS/
17     /mirrors/centos/4/os/i386/CentOS/RPMS/
18 slords 1.4 /mirrors/centos/4/extras/i386/RPMS/
19     /mirrors/rpmforge/dag/redhat/el4/en/i386/dag/RPMS/
20 gordonr 1.2 /mirrors/atrpms/el4-i386/atrpms/stable/
21 slords 1.4 /mirrors/rpmforge/dag/dries/redhat/el4/en/i386/RPMS.dries/
22     /mirrors/fedora-legacy/fedora/3/updates/i386/
23     /mirrors/fedora-legacy/fedora/3/os/i386/
24 gordonr 1.2 /builds/rpms/RPMS/i686/
25     /builds/rpms/RPMS/i586/
26     /builds/rpms/RPMS/i386/
27     /builds/rpms/RPMS/noarch/
28     );
29 gordonr 1.1
30 slords 1.6 opendir RPMS, $src or die "Couldn't opendir $src";
31     my %rpms = map { my $x = RPM2->open_package("$src/$_", $rpm_flags); $x->tag('NAME') => $x; } grep { /\.rpm$/ } readdir RPMS;
32 gordonr 1.1 closedir RPMS;
33    
34     my %repos;
35     foreach my $repo (reverse @repositories)
36     {
37     my %temp_repo = map { $_ => $repo } grep { /\.rpm$/ } readdir RPMS if ( opendir RPMS, $repo );
38     closedir RPMS;
39     %repos = (%repos, %temp_repo);
40     }
41    
42     foreach my $rpm ( sort keys %rpms )
43     {
44     my (@headers, $header);
45    
46     my $rpmfix = $rpm;
47     $rpmfix =~ s@\+@\\+@g;
48     @headers = ();
49     foreach my $file ( grep { /^$rpmfix-[0-9].*\.rpm$/ } keys %repos )
50     {
51     $header = RPM2->open_package("$repos{$file}/$file", $rpm_flags);
52 slords 1.4 if ($header ge $rpms{$rpm} || $header->filename =~ m#/centos/[\d.]+/(os|updates|fasttrack|extras)/#)
53 gordonr 1.1 {
54     push @headers, $header;
55     }
56     }
57     @headers = reverse sort { $a cmp $b } @headers;
58 slords 1.4 if (grep { $_->filename =~ m#/centos/[\d.]+/(updates|fasttrack)/# } @headers)
59 gordonr 1.1 {
60 slords 1.5 @headers = grep { $_->filename !~ m#/centos/[\d.]+/os/# || $_ eq $rpms{$rpm} } @headers;
61 gordonr 1.1 }
62 slords 1.4 if (grep { $_->filename =~ m#/centos/[\d.]+/(os|updates|fasttrack|extras)/# || $_->filename =~ m#/dag/[^d]# } @headers)
63 gordonr 1.1 {
64 slords 1.5 @headers = grep { $_->filename !~ m#/atrpms/# || $_ eq $rpms{$rpm} } @headers;
65     @headers = grep { $_->filename !~ m#/fedora/# || $_ eq $rpms{$rpm} } @headers;
66     @headers = grep { $_->filename !~ m#/fedora-legacy/# || $_ eq $rpms{$rpm} } @headers;
67 gordonr 1.1 }
68     if ($#headers < 0)
69     {
70     print "$rpm\n";
71     print " ***** can't find $rpm in any repository *****\n";
72     }
73 slords 1.4 elsif ( $headers[0]->filename !~ m#/centos/[\d.]+/(os|updates|fastrrack|extras)/# || $headers[0] ne $rpms{$rpm} )
74 gordonr 1.1 {
75     if (grep { $_ ne $rpms{$rpm} } @headers)
76     {
77     print "$rpm\n";
78     foreach $header ( @headers)
79     {
80     my $path = $header->filename;
81     $path =~ s@^(.*)/.*@$1@;
82 slords 1.4 my $filename = $rpms{$rpm}->filename;
83     $filename =~ s@^.*/(.*)@$1@;
84 gordonr 1.1 print " " . ($header eq $rpms{$rpm} ? "** " : "-- ") . $header->as_nvre . " ($path)\n";
85 slords 1.6 #print " - rm $src/$filename; cp ". $header->filename . " $src\n";
86 gordonr 1.1 }
87     }
88     }
89     }

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