/[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.18 - (show annotations) (download)
Mon Jun 4 16:39:15 2007 UTC (17 years, 5 months ago) by slords
Branch: MAIN
Changes since 1.17: +1 -0 lines
Tools update

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

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