--- builds_bin/update_rpms_dir 2005/09/15 23:55:09 1.1 +++ builds_bin/update_rpms_dir 2006/03/06 04:02:12 1.11 @@ -4,7 +4,7 @@ # is free software; you can redistribute it and/or modify it under the # same terms as Perl itself. # -# $Id: update_rpms_dir,v 1.5 2005/09/13 06:32:13 gordonr Exp $ +# $Id: update_rpms_dir,v 1.10 2006/02/14 04:08:46 gordonr Exp $ # # Update RPMS directory with the latest from a given list of directories @@ -13,18 +13,21 @@ use Getopt::Long; my $rpm_flags = RPM2->vsf_nodsa; # Deal with missing DSA keys -GetOptions(\%opt, "verbose"); +GetOptions(\%opt, "verbose", "debug", "rpms_dir=s", "target_dir=s"); # XXX - FIXME - These will be command line options -my $rpms_dir = "/builds/RPMS"; +my $rpms_dir = $opt{rpms_dir} || "/builds/RPMS"; + +my $target_dir = $opt{target_dir} || $rpms_dir; + +warn "Using $rpms_dir\n" if $opt{verbose}; my @repositories = qw( /builds/rpms/RPMS/i386/ /builds/rpms/RPMS/noarch/ - /mirrors/mitel/devel/repo/RPMS/ - /mirrors/centos/4.1/updates/i386/RPMS/ - /mirrors/centos/4.1/os/i386/CentOS/RPMS/ + /mirrors/centos/4.2/updates/i386/RPMS/ + /mirrors/centos/4.2/os/i386/CentOS/RPMS/ ); chdir $rpms_dir or die "Couldn't chdir $rpms_dir"; @@ -44,7 +47,7 @@ for my $file ( sort grep { /.rpm$/ } rea if ($newest) { # XXX - FIXME - Should we try other repos, or stop here? - warn "=====> cd $rpms_dir; rm $file; cp $dir/$newest .\n" + print "rm $target_dir/$file; cp -p $dir/$newest $target_dir\n" } } } @@ -59,7 +62,7 @@ sub find_newest $name =~ s/\+/\\+/g; # libstdc++ and friends opendir DIR, $dir or die "Couldn't opendir $dir"; - my @rpms = grep { /^${name}-.*.rpm$/ } readdir DIR; + my @rpms = sort grep { /^${name}-.*.rpm$/ } readdir DIR; closedir DIR; my $newest_file = undef; @@ -67,23 +70,25 @@ sub find_newest for my $file (@rpms) { + warn "\tExamining $dir/$file\n" if $opt{debug}; + my $candidate = RPM2->open_package("$dir/$file", $rpm_flags); if ($candidate->name ne $name) { - warn "Ignoring $file - name doesn't match\n" if $opt{verbose}; + warn "\tIgnoring $file - name doesn't match\n" if $opt{debug}; next; } if ( ($candidate cmp $rpm) <= 0) { - warn "Ignoring $file - older or same version\n" if $opt{verbose}; + warn "\tIgnoring $file - older or same version\n" if $opt{debug}; next; } - if (not defined $newest_hdr or ($candidate cmp $newest_hdr) < 0) + if (not defined $newest_hdr or ($candidate cmp $newest_hdr) > 0) { - warn "Newest is $file\n" if $opt{verbose}; + warn "\tNewest is $file\n" if $opt{debug}; $newest_file = $file; $newest_hdr = $candidate; }