#! /usr/bin/perl # This script's job is to clean up the version file and remove old # versions when there are multiple versions older than the archive # date. use warnings; use strict; use Debbugs::Config qw(:config); use MLDBM qw(DB_File Storable); use Fcntl; $MLDBM::DumpMeth=q(portable); my %db; tie %db, "MLDBM", "versions_time.idx.new",O_CREAT|O_RDWR, 0664 or die "tie versions_time.idx.new failed: $!"; my $time = time; for my $package (keys %db) { my $temp = $db{$package}; for my $dist (keys %{$temp}) { for my $arch (keys %{$temp->{$dist}}) { my @versions = (sort {$temp->{$dist}{$arch}{$a} <=> $temp->{$dist}{$arch}{$b} } keys %{$temp->{$dist}{$arch}}); next unless @versions > 1; for my $i (0 .. ($#versions-1)) { last if $temp->{$dist}{$arch}{$versions[$i+1]} > ($time - $config{remove_age}*60*60*24); last if keys %{$temp->{$dist}{$arch}} <= 1; delete $temp->{$dist}{$arch}{$versions[$i]}; } } } $db{$package} = $temp; }