Pick up on EPERM errors, seeing quite a few
[buildd-scripts.git] / bin / analyze_results
index f3727d4..40cfa2b 100755 (executable)
@@ -9,6 +9,7 @@ use warnings;
 my $logs = "/home/build/logs";
 my $logs_fail = "$logs/FAIL";
 my $num_fail = 0;
 my $logs = "/home/build/logs";
 my $logs_fail = "$logs/FAIL";
 my $num_fail = 0;
+my $existing_bugs = 0;
 
 # Known failure modes to look for
 my @logcheck = (
 
 # Known failure modes to look for
 my @logcheck = (
@@ -175,6 +176,15 @@ my @logcheck = (
        stop     => 1,
        timeout  => 0, # This is a real error, not a build timeout
     },
        stop     => 1,
        timeout  => 0, # This is a real error, not a build timeout
     },
+    {
+       # Build failed
+       string   => 'BUILD FAILED',
+       pstring  => '.*',
+       message  => 'build failure (java/javadoc))',
+       check    => 1,
+       stop     => 1,
+       timeout  => 0, # This is a real error, not a build timeout
+    },
     {
        # Build failed
        string   => 'make.*returned exit code',
     {
        # Build failed
        string   => 'make.*returned exit code',
@@ -186,10 +196,10 @@ my @logcheck = (
     },
     {
        # Build failed
     },
     {
        # Build failed
-       string   => '^make.*Error \d+$',
+       string   => '^make.*\*\*\*.* \[debian/rules.*Error \d+$',
        pstring  => '.*',
        message  => 'build failure (other)',
        pstring  => '.*',
        message  => 'build failure (other)',
-       check    => 0,
+       check    => 1,
        stop     => 0,
        timeout  => 0, # This is a real error, not a build timeout
     },
        stop     => 0,
        timeout  => 0, # This is a real error, not a build timeout
     },
@@ -210,6 +220,22 @@ my @logcheck = (
        check    => 0,
        stop     => 1,
     },
        check    => 0,
        stop     => 1,
     },
+    {
+       # Test failure
+       string   => 'OSError: \[Errno 13\] Permission denied',
+       pstring  => '.*',
+       message  => 'python EPERM test failure',
+       check    => 1,
+       stop     => 1,
+    },
+    {
+       # Test failure
+       string   => 'dh_auto_test:.*returned exit code \d+',
+       pstring  => '.*',
+       message  => 'test failure',
+       check    => 1,
+       stop     => 1,
+    },
     {
        # Timeout. pbuilder is too dumb to do this properly :-(
        string   => 'I: Terminating build process due to timeout',
     {
        # Timeout. pbuilder is too dumb to do this properly :-(
        string   => 'I: Terminating build process due to timeout',
@@ -220,6 +246,16 @@ my @logcheck = (
        timeout  => 1, # This is a build timeout. If this happened
                       # before other errors, then we should retry
     },
        timeout  => 1, # This is a build timeout. If this happened
                       # before other errors, then we should retry
     },
+    {
+       # Timeout from sbuild
+       string   => 'Build killed with signal TERM after \d+ minutes of inactivity',
+       pstring  => '.*',
+       message  => 'build timeout',
+       check    => 1,
+       stop     => 1,
+       timeout  => 1, # This is a build timeout. If this happened
+                      # before other errors, then we should retry
+    },
 );
 
 my %log_results;
 );
 
 my %log_results;
@@ -276,11 +312,30 @@ foreach my $input (@ARGV) {
        }
        $oldline = $line;
     }
        }
        $oldline = $line;
     }
+    close IN;
     # End of checking this package
     print "  <li><strong>found errors: $errors</strong>\n";
     if (!$errors) {
        print " (maybe just timed out during build?)\n";
     }
     # End of checking this package
     print "  <li><strong>found errors: $errors</strong>\n";
     if (!$errors) {
        print " (maybe just timed out during build?)\n";
     }
+
+    # Look for a note for manually-added logfile analysis
+    my $note = $input;
+    $note =~ s,\.log$,.note,;
+    if (-f $note) {
+       open (IN, "< $note") or die "Can't open $note for reading: $!\n";
+       while (defined (my $line = <IN>)) {
+           chomp $line;
+           if ($line =~ m,#(\d+),) {
+               my $bugno = $1;
+               $existing_bugs++;
+               $line =~ s,#(\d+),<a href="https://bugs.debian.org/$1">#$1</\a>,g;
+           }
+           print "  <li>$line\n";
+       }
+       close IN;
+    }
+
     print "</ul>\n";
     foreach my $key (keys %file_results) {
        $log_results{$key} += 1;
     print "</ul>\n";
     foreach my $key (keys %file_results) {
        $log_results{$key} += 1;
@@ -291,6 +346,7 @@ print "</ol>\n";
 
 print "<h2>Summary of results from $num_fail failed builds:</h2>\n";
 print "<ol>\n";
 
 print "<h2>Summary of results from $num_fail failed builds:</h2>\n";
 print "<ol>\n";
+print "<li>Found $existing_bugs existing bugs</li>\n";
 foreach my $key (keys %log_results) {
     print "  <li>Found $log_results{$key} logs showing $key\n";
 }
 foreach my $key (keys %log_results) {
     print "  <li>Found $log_results{$key} logs showing $key\n";
 }