Author: joeyh Date: 2005-03-25 02:44:18 +0000 (Fri, 25 Mar 2005) New Revision: 644 Modified: sarge-checks/checklist Log: merge in kernel binary build checking support (with some mods) Modified: sarge-checks/checklist ==================================================================--- sarge-checks/checklist 2005-03-25 02:29:35 UTC (rev 643) +++ sarge-checks/checklist 2005-03-25 02:44:18 UTC (rev 644) @@ -1,5 +1,10 @@ #!/usr/bin/perl # Must run on a machine with madison. +# +# To check for un-updated binary kernel packages, also needs grep-dctrl +# and a Sources file for the distribution. Set the location of the Sources +# file in SOURCES_FILE in the environment. +# use URI::Escape; my $html=0; @@ -14,6 +19,11 @@ my %data; +my %needkernel=qw/2.4.27 0 2.6.8 0/; +my $list_unknown=0; #set to 1 to display kernel images with unknown source version +my $sources=$ENV{SOURCES_FILE}; +my $need_rebuild=0; + my $unprop = my $unfixed = my $todos = 0; sub record { @@ -46,10 +56,18 @@ my $package=$1; my $version=$2; + if ($package=~/kernel-source-([0-9.]+)/) { + my $kernversion=$1; + if (exists $needkernel{$kernversion} && + $version!~/\(/ ) { + $needkernel{$kernversion}=$version if !system("dpkg --compare-versions $needkernel{$kernversion} lt $version"); + } + } + my $maddy=`madison -s testing ''$package''`; if ($? & 128) { # good old newraff.. - record($package, "<em>madison segfaulted</em>", $id); + record($package, "madison segfaulted", $id); } elsif ($? >> 8 != 0 && $? >> 8 != 1) { record($package, "<em>madison exited with ".($? >> 8)."</em>", $id); @@ -101,11 +119,62 @@ } } +foreach my $version (sort keys %needkernel) { + my %images; + + if ($needkern{$version} eq "0") { + next; + } + + my @dctrl; + if (defined $sources && length $sources) { + @dctrl=`grep-dctrl -F Binary kernel-image-$version -s Package,Build-Depends $sources`; + } + + my $package=""; + my $haveversion; + + foreach my $line (@dctrl) { + chomp; + if ($line=~/Package:\s*(\S+)/) { + $package=$1; + $haveversion="0"; + } elsif ($line=~/Build-Depends/) { + if ($line=~/kernel-tree-$version-([^,\s]+)/) { + $haveversion="$version-$1"; + } elsif ($line=~/kernel-source-$version\s+\(>=\s*([^\s\)])\)/) { + $haveversion="$1"; + } + } else { + if ($package=~/linux-kernel-di/ || $package eq "") { + next; + } + $images{$package}=$haveversion; + $package=""; + } + } + + foreach $package (sort keys %images) { + if ($images{$package} eq "0") { + print "<li>" if ($html && $list_unknown); + print "$package built from kernel-source-$version $needkernel{$version} needed, current version unknown\n" if $list_unknown; + } elsif (!system("dpkg --compare-versions $needkernel{$version} gt $images{$package}")) { + print "<li>" if $html; + print "$package built from kernel-source-$version $needkernel{$version} needed, have $images{$package}\n"; + $need_rebuild++; + } + } + + +} + + if ($html) { print "</ul>\n"; print "<hr>\n"; print "Total holes unfixed: $unfixed<br>\n"; print "Total holes fixed in unstable but not testing: $unprop<br>\n"; + print "Total number of kernel image source packages not up to date: $need_rebuild<br>\n"; print "Number of TODO lines in <a href=\"http://svn.debian.org/wsvn/secure-testing/sarge-checks/?rev=0&sc=0\">records</a>: $todos<br>\n"; print "Maintained by the <a href=\"http://secure-testing.alioth.debian.org/\">testing security team</a><br>\n"; print "Last update: ".`date`."<br>\n";