/[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.9 - (hide annotations) (download)
Sat Apr 28 16:38:04 2007 UTC (17 years, 1 month ago) by slords
Branch: MAIN
Changes since 1.8: +21 -16 lines
Fixup for 8.0

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

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