Details
[git-tools-moved-to-github.git] / aptcheck / aptcheck.pl
index 317341d..ad72adb 100755 (executable)
@@ -67,21 +67,19 @@ for $hline ( split("\n",$hostlist) ) {
         $pkgs++;
         my $key = $pkg;
         if ( $src =~ /Security/ ) {
-            $det .= "<b>$pkg (s) </b>";
-            $key = "<b>$pkg</b>";
+            $det .= "<b>$pkg (s)</b> ";
             $sechosts{$H}=1;
             $secpkgs{$pkg}=1;
             $secs++;
             $sectot++;
         } elsif ( $src =~ /Indexdata/ ) {
             $det .= "<i><b>$pkg</b> (id) </i>";
-            $key = "<i>$pkg</i>";
             $ownhosts{$H}=1;
             $ownpkgs{$pkg}=1;
             $own++;
             $owntot++;
         } else {
-            $det .= "$pkg";
+            $det .= "$pkg ";
             $normhosts{$H}=1;
             $normpkgs{$pkg}=1;
             $normtot++;
@@ -89,9 +87,9 @@ for $hline ( split("\n",$hostlist) ) {
         if ( !$summary{$key} ) {
             $summary{$key} = "";
         }
+        $summary{$key} .= "$H ";
         $new = strdiff($cur,$new);
         $cur = strdiff($new,$cur);
-        $summary{$key} .= "$H ";
         $det .= "</td> ";
         $det .= "<td>$cur</td> ";
         $det .= "<td>$new</td> ";
@@ -108,6 +106,10 @@ for $hline ( split("\n",$hostlist) ) {
         $okhosts{$H} = 1;
     }
     my $updlink = $wikilink . ucfirst($H) . "Updates" . $year;
+    # Fix some pages that do not follow the convention.
+    # Mostly because the host names would not make proper WikiWords
+    $updlink =~ s/Bugzilla3Updates/BugzillaUpdates/; 
+    $updlink =~ s/Opencontent-solrUpdates/OpenContentSolrUpdates/; 
     $table .= "&nbsp;<a href='$updlink' >Upd</a>";
     $table .= "</td></tr>\n";
     $table .= $det if $pkgs;
@@ -126,7 +128,7 @@ print F "<body>\n";
 print F "<H1>Apt package status</H1>\n";
 
 
-# Summary table - NEW: one row for per host group
+# Summary table: one row for per host group
 print F "<p/>\n";
 print F "<table border='1' >\n";
 print F "<tr><td>&nbsp;</td>" ;
@@ -135,36 +137,51 @@ print F "<td><b>Packages</b></td></tr>\n";
 
 if ( $sectot ) {
     print F "<tr><td><b>Security</b><br/>" . scalar(keys(%sechosts)) . 
-        " / " .  scalar(keys(%secpkgs)) . " / $sectot </td>\n" ;
+        "&nbsp;/&nbsp;" .  scalar(keys(%secpkgs)) . "&nbsp;/&nbsp;$sectot </td>\n" ;
     print F "<td>";
     for $HH ( sort(keys(%sechosts)) ) {
         print F "<a href='#$HH'><b>$HH</b></a> ";
     }
-    print F "<td>" . join(" ",sort(keys(%secpkgs))) . "&nbsp;</td>";
+    print F "</td>";
+    print F "<td>";
+    for $PP ( sort(keys(%secpkgs)) ) {
+        print F "<a href='#$PP'>$PP</a> ";
+    }
+    print F "</td>";
     print F "</tr>\n";
 }
 if ( $owntot ) {
     print F "<tr><td><b>Indexdata</b><br/>" . scalar(keys(%ownhosts)) . 
-        " / " .  scalar(keys(%ownpkgs)) . " / $owntot </td>\n" ;
+        "&nbsp;/&nbsp;" .  scalar(keys(%ownpkgs)) . "&nbsp;/&nbsp;$owntot </td>\n" ;
     print F "<td>";
     for $HH ( sort(keys(%ownhosts)) ) {
         print F "<a href='#$HH'><b>$HH</b></a> ";
     }
-    print F "<td>" . join(" ",sort(keys(%ownpkgs))) . "&nbsp;</td>";
+    print F "</td>";
+    print F "<td>";
+    for $PP ( sort(keys(%ownpkgs)) ) {
+        print F "<a href='#$PP'>$PP</a> ";
+    }
+    print F "</td>";
     print F "</tr>\n";
 }
 if ( $normtot ) {
-    print F "<tr><td>Indexdata<br/>" . scalar(keys(%normhosts)) . 
-        " / " .  scalar(keys(%normpkgs)) . " / $normtot </td>\n" ;
+    print F "<tr><td>Normal<br/>" . scalar(keys(%normhosts)) . 
+        "&nbsp;/&nbsp;" .  scalar(keys(%normpkgs)) . "&nbsp;/&nbsp;$normtot </td>\n" ;
     print F "<td>";
     for $HH ( sort(keys(%normhosts)) ) {
         print F "<a href='#$HH'><b>$HH</b></a> ";
     }
-    print F "<td>" . join(" ",sort(keys(%normpkgs))) . "&nbsp;</td>";
+    print F "</td>";
+    print F "<td>";
+    for $PP ( sort(keys(%normpkgs)) ) {
+        print F "<a href='#$PP'>$PP</a> ";
+    }
+    print F "</td>";
     print F "</tr>\n";
 }
 if ( %skiphosts ) {
-    print F "<tr><td>Skipped: " . scalar(keys(%skiphosts)) . "</td>\n";
+    print F "<tr><td>Skipped " . scalar(keys(%skiphosts)) . "</td>\n";
     print F "<td colspan='2'>";
     for $HH ( sort(keys(%skiphosts)) ) {
         print F "<a href='#$HH'><b>$HH</b></a> ";
@@ -172,7 +189,7 @@ if ( %skiphosts ) {
     print F "</td></tr>\n";
 }
 if ( %okhosts ) {
-    print F "<tr><td>Ok: " . scalar(keys(%okhosts)) . "</td>\n";
+    print F "<tr><td>Ok " . scalar(keys(%okhosts)) . "</td>\n";
     print F "<td colspan='2'>";
     for $HH ( sort(keys(%okhosts)) ) {
         print F "<a href='#$HH'><b>$HH</b></a> ";
@@ -185,6 +202,23 @@ print F "</table>\n";
 # The host table
 print F $table;
 
+# Package table
+print F "<p/><b><u>Packages</u></b>\n";
+print F "<table>\n";
+for $P ( sort(keys(%summary)) ) {
+    my $PN = $P;
+    $PN = "<b>$P (s)</b>" if ($secpkgs{$P});
+    $PN = "$P (id)" if ($ownpkgs{$P});
+    print F "<tr><td><a name='$P'/>$PN</td>\n";
+    print F "<td>";
+    for $HH ( split(' ',$summary{$P} )) {
+        print F "<a href=#$HH>$HH</a> ";
+    }
+    print F "</td>\n";
+
+}
+print F "</table>\n";
+
 print F "<p/>Produced " . `date`.
         " on " . `hostname` . " by " . `whoami` .
         "<br/>\n";
@@ -203,13 +237,16 @@ sub strdiff {
     my $x = shift;
     my $y = shift;
     print "strdiff: '$x' '$y' \n" if $debug>1;
+    if ( $x eq $y ) {
+        return "$x <b>??</b>";
+    }
     my $a = 0;
     while ( $a < length($y) &&
         substr($x,$a,1) eq substr($y,$a,1) ) {
         $a++;
     }
     if ( $a == length($y) ) {
-        return "$y ???";
+        return "$y ??";
     }
     my $b = 1;
     while ( $b < length($y)-$a &&