| 18 |
# Debug |
# Debug |
| 19 |
my $debug = $opt_d || 0; |
my $debug = $opt_d || 0; |
| 20 |
# Releases and path location |
# Releases and path location |
| 21 |
my $prevrelease = $opt_p || "woody"; |
my $prevrelease = $opt_p || "sarge"; |
| 22 |
my $currelease = $opt_r || "sarge"; |
my $currelease = $opt_r || "etch"; |
| 23 |
my $mirrordir = $opt_m || "/home/mirrors/debian/debian.org"; |
my $mirrordir = $opt_m || "/home/mirrors/debian/debian.org"; |
| 24 |
my $arch = $opt_a || "i386"; |
my $arch = $opt_a || "i386"; |
| 25 |
my @releases = ( $currelease, $prevrelease ) ; |
my @releases = ( $currelease, $prevrelease ) ; |
| 35 |
foreach $componenti (0 .. $#components ) { |
foreach $componenti (0 .. $#components ) { |
| 36 |
my $component = $components[$componenti]; |
my $component = $components[$componenti]; |
| 37 |
$release{$release}{$component}=$mirrordir."/dists/".$release."/".$component."/binary-".$arch."/Packages"; |
$release{$release}{$component}=$mirrordir."/dists/".$release."/".$component."/binary-".$arch."/Packages"; |
| 38 |
|
$release{$release}{$component}=$mirrordir."/dists/".$release."/".$component."/binary-".$arch."/Packages.gz" if ! -r $release{$release}{$component}; |
| 39 |
|
$release{$release}{$component}=$mirrordir."/dists/".$release."/".$component."/binary-".$arch."/Packages.bz2" if ! -r $release{$release}{$component}; |
| 40 |
die "Cannot read $release{$release}{$component}" if ! -r $release{$release}{$component}; |
die "Cannot read $release{$release}{$component}" if ! -r $release{$release}{$component}; |
| 41 |
print "Found component '$component' for release '$release' at $release{$release}{$component}\n" if $debug; |
print "Found component '$component' for release '$release' at $release{$release}{$component}\n" if $debug; |
| 42 |
} |
} |
| 49 |
|
|
| 50 |
# For each release read all the files and make a *Big* hash |
# For each release read all the files and make a *Big* hash |
| 51 |
|
|
| 52 |
foreach $file ( keys(%{$release{$prevrelease}}) ) { |
foreach $component ( keys(%{$release{$prevrelease}}) ) { |
| 53 |
read_file($prevrelease,$release{$prevrelease}{$file}); |
read_file($prevrelease,$component,$release{$prevrelease}{$component}); |
| 54 |
} |
} |
| 55 |
foreach $file ( keys(%{$release{$currelease}}) ) { |
foreach $component ( keys(%{$release{$currelease}}) ) { |
| 56 |
read_file($currelease,$release{$currelease}{$file}); |
read_file($currelease,$component,$release{$currelease}{$component}); |
| 57 |
} |
} |
| 58 |
|
|
| 59 |
# Once this is done compare all the packages found and their description |
# Once this is done compare all the packages found and their description |
| 92 |
# Final numbers: |
# Final numbers: |
| 93 |
foreach $release ( keys(%totalnumbers) ) { |
foreach $release ( keys(%totalnumbers) ) { |
| 94 |
print "Total packages for ".$release.": ".$totalnumbers{$release}."\n"; |
print "Total packages for ".$release.": ".$totalnumbers{$release}."\n"; |
| 95 |
|
foreach $componenti (0 .. $#components ) { |
| 96 |
|
my $component = $components[$componenti]; |
| 97 |
|
print "\tPackages in ".$component.": ".$totalcomponent{$release}{$component}."\n"; |
| 98 |
|
} |
| 99 |
} # of the foreach |
} # of the foreach |
| 100 |
print "Added packages: $#added\n"; |
print "Added packages: $#added\n"; |
| 101 |
print "Removed packages: $#removed\n"; |
print "Removed packages: $#removed\n"; |
| 182 |
|
|
| 183 |
sub read_file { |
sub read_file { |
| 184 |
# Read in a Package file and retrieves packages for a given release |
# Read in a Package file and retrieves packages for a given release |
| 185 |
my ($release,$file)=@_; |
my ($release,$component,$file)=@_; |
| 186 |
|
|
| 187 |
open (FILE,"$file") || die ("Cannot open $file: $!"); |
print "Package file is $file\n"; |
| 188 |
|
if ( $file =~ /.gz$/ ) { |
| 189 |
|
open (FILE,"gzip -d -c $file|") || die ("Cannot uncompress gzipped $file: $!"); |
| 190 |
|
} elsif ( $file =~ /.bz2$/ ) { |
| 191 |
|
open (FILE,"bzip2 -d -c $file|") || die ("Cannot uncompress bzipped $file: $!"); |
| 192 |
|
} else { |
| 193 |
|
# Standard, uncompressed file |
| 194 |
|
open (FILE,"$file") || die ("Cannot open $file: $!"); |
| 195 |
|
} |
| 196 |
print "Reading $file\n" if $debug; |
print "Reading $file\n" if $debug; |
| 197 |
# Finite-state machine |
# Finite-state machine |
| 198 |
# 0 - no package |
# 0 - no package |
| 208 |
$packages{$release}{$packagename}=$description."{".$version."}"; |
$packages{$release}{$packagename}=$description."{".$version."}"; |
| 209 |
print "Found $packagename: $description ($version)\n" if $debug; |
print "Found $packagename: $description ($version)\n" if $debug; |
| 210 |
$totalnumbers{$release}++; |
$totalnumbers{$release}++; |
| 211 |
|
$totalcomponent{$release}{$component}++; |
| 212 |
$state=0; |
$state=0; |
| 213 |
} |
} |
| 214 |
if ( /^$/ && $state > 0 ){ |
if ( /^$/ && $state > 0 ){ |