/[smeserver]/builds_bin/checkrpms
ViewVC logotype

Contents of /builds_bin/checkrpms

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


Revision 1.8 - (show annotations) (download)
Fri Apr 27 21:40:19 2007 UTC (17 years, 1 month ago) by slords
Branch: MAIN
Changes since 1.7: +1 -1 lines
Fixup for 8.0

1 #!/usr/bin/perl
2
3 use strict;
4 use warnings;
5 use RPM2;
6 use Data::Dumper;
7 use Getopt::Std;
8
9 my %opts;
10 getopts( "s:", \%opts );
11 my $src = $opts{s} || '/builds/RPMS';
12
13 my $rpm_flags = RPM2->vsf_nodsaheader | RPM2->vsf_nodsa;
14 my @repositories = qw(
15 /mirrors/centos/4/fasttrack/i386/RPMS/
16 /mirrors/centos/4/updates/i386/RPMS/
17 /mirrors/centos/4/os/i386/CentOS/RPMS/
18 /mirrors/centos/4/extras/i386/RPMS/
19 /mirrors/rpmforge/dag/redhat/el4/en/i386/dag/RPMS/
20 /mirrors/atrpms/el4-i386/atrpms/stable/
21 /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 /builds/rpms/RPMS/i686/
25 /builds/rpms/RPMS/i586/
26 /builds/rpms/RPMS/i386/
27 /builds/rpms/RPMS/noarch/
28 );
29
30 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 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 if ($header ge $rpms{$rpm} || $header->filename =~ m#/centos/[\d.]+/(os|updates|fasttrack|extras)/#i)
53 {
54 push @headers, $header;
55 }
56 }
57 @headers = reverse sort { $a cmp $b } @headers;
58 if (grep { $_->filename =~ m#/centos/[\d.]+/(updates|fasttrack)/#i } @headers)
59 {
60 @headers = grep { $_->filename !~ m#/centos/[\d.]+/os/#i || $_ eq $rpms{$rpm} } @headers;
61 }
62 if (grep { $_->filename =~ m#/centos/[\d.]+/(os|updates|fasttrack|extras)/#i || $_->filename =~ m#/dag/[^d]#i } @headers)
63 {
64 @headers = grep { $_->filename !~ m#/atrpms/#i || $_ eq $rpms{$rpm} } @headers;
65 @headers = grep { $_->filename !~ m#/fedora/#i || $_ eq $rpms{$rpm} } @headers;
66 }
67 if ($#headers < 0)
68 {
69 print "$rpm\n";
70 print " ***** can't find $rpm in any repository *****\n";
71 }
72 elsif ( $headers[0]->filename !~ m#/centos/[\d.]+/(os|updates|fastrrack|extras)/#i || $headers[0] ne $rpms{$rpm} )
73 {
74 if (grep { $_ ne $rpms{$rpm} } @headers)
75 {
76 print "$rpm\n";
77 foreach $header ( @headers)
78 {
79 my $path = $header->filename;
80 $path =~ s@^(.*)/.*@$1@;
81 my $filename = $rpms{$rpm}->filename;
82 $filename =~ s@^.*/(.*)@$1@;
83 print " " . ($header eq $rpms{$rpm} ? "** " : "-- ") . $header->as_nvre . " ($path)\n";
84 #print " - rm -f $src/$filename; cp ". $header->filename . " $src\n";
85 }
86 }
87 }
88 }

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