| 1 |
#!/usr/bin/perl |
#!/usr/bin/perl |
| 2 |
# Must run on a machine with madison. |
# Must run on a machine with madison. |
| 3 |
|
|
| 4 |
my $list=shift; |
if (! @ARGV) { |
|
if (! $list) { |
|
| 5 |
die "usage: $0 list\n"; |
die "usage: $0 list\n"; |
| 6 |
} |
} |
| 7 |
|
|
| 8 |
open (IN, $list) || die "open $list: $!"; |
foreach my $list (@ARGV) { |
| 9 |
while (<IN>) { |
if (-d $list) { |
| 10 |
chomp; |
$list="$list/list"; |
|
if (/^\[/) { |
|
|
($id)=m/(DSA-.*?) /; |
|
| 11 |
} |
} |
| 12 |
elsif (/^CAN-/) { |
|
| 13 |
$id=$_; |
open (IN, $list) || die "open $list: $!"; |
| 14 |
} |
while (<IN>) { |
| 15 |
elsif (/^\s+[!-]\s+(.*?)\s+(.*)$/) { |
chomp; |
| 16 |
my $package=$1; |
if (/^\[/) { |
| 17 |
my $version=$2; |
($id)=m/(DSA-.*?) /; |
| 18 |
if ($version=~/unfixed/) { |
} |
| 19 |
print "$package $version for $id\n"; |
elsif (/^(CAN|CVE)-/) { |
| 20 |
next; |
$id=$_; |
| 21 |
} |
} |
| 22 |
my $maddy=`madison -s testing '$package'`; |
elsif (/^\s+[!-]\s+(.*?)\s+(.*)$/) { |
| 23 |
if (length $maddy) { |
my $package=$1; |
| 24 |
my @fields = split(/\s*\|\s*/, $maddy); |
my $version=$2; |
| 25 |
my $cmp=system("dpkg --compare-versions '$fields[1]' '>=' '$version'"); |
if ($version=~/unfixed/) { |
| 26 |
if ($cmp != 0) { |
print "$package $version for $id\n"; |
| 27 |
print "$package $version needed, have $fields[1] for $id\n"; |
next; |
| 28 |
|
} |
| 29 |
|
my $maddy=`madison -s testing '$package'`; |
| 30 |
|
if (length $maddy) { |
| 31 |
|
my @fields = split(/\s*\|\s*/, $maddy); |
| 32 |
|
my $cmp=system("dpkg --compare-versions '$fields[1]' '>=' '$version'"); |
| 33 |
|
if ($cmp != 0) { |
| 34 |
|
print "$package $version needed, have $fields[1] for $id\n"; |
| 35 |
|
} |
| 36 |
} |
} |
| 37 |
} |
} |
| 38 |
} |
elsif (/HELP/) { |
| 39 |
elsif (/HELP/) { |
print $_." ($id)\n"; |
| 40 |
print $_." ($id)\n"; |
} |
| 41 |
} |
} |
| 42 |
} |
} |