Make single-line matches faster
authorSteve McIntyre <steve@einval.com>
Thu, 25 Oct 2018 14:19:03 +0000 (15:19 +0100)
committerSteve McIntyre <steve@einval.com>
Thu, 25 Oct 2018 14:19:03 +0000 (15:19 +0100)
Only consider matching the previous line if we need to, rather than
always matching with .*

bin/analyze_results

index ae20c57..78faecb 100755 (executable)
@@ -17,7 +17,6 @@ my @logcheck = (
        # "rchitecture mismatch" -> should never build on this arch
        # Stop working on this log at this point
        string   => 'rchitecture mismatch',
-       pstring  => '.*',
        message  => 'architecture mismatch',
        check    => 1,
        stop     => 1,
@@ -25,7 +24,6 @@ my @logcheck = (
     },
     {
        string   => 'not in arch list or does not match any',
-       pstring  => '.*',
        message  => 'architecture mismatch',
        check    => 1,
        stop     => 1,
@@ -33,7 +31,6 @@ my @logcheck = (
     },
     {
        string   => 'No space left on device',
-       pstring  => '.*',
        message  => 'ran out of disk space',
        check    => 1,
        stop     => 1,
@@ -41,7 +38,6 @@ my @logcheck = (
     },
     {
        string   => 'aarch64-unknown-linux-gnu',
-       pstring  => '.*',
        message  => 'Wrong arch detected',
        check    => 1,
        stop     => 1,
@@ -49,7 +45,6 @@ my @logcheck = (
     },
     {
        string   => 'binutils-aarch64',
-       pstring  => '.*',
        message  => 'Wrong arch detected',
        check    => 1,
        stop     => 1,
@@ -57,7 +52,6 @@ my @logcheck = (
     },
     {
        string   => 'lib.linux-aarch64',
-       pstring  => '.*',
        message  => 'Wrong arch detected',
        check    => 1,
        stop     => 1,
@@ -68,7 +62,6 @@ my @logcheck = (
        # built. Why not picked up already above?.
        # Stop working on this log at this point
        string   => 'binary build with no binary artifacts found',
-       pstring  => '.*',
        message  => 'no binaries built',
        check    => 1,
        stop     => 1,
@@ -77,7 +70,6 @@ my @logcheck = (
     {
        # "Bus error" -> alignment bug
        string   => 'Bus error',
-       pstring  => '.*',
        message  => 'alignment problem',
        check    => 1,
        stop     => 1,
@@ -95,7 +87,6 @@ my @logcheck = (
     {
        # "Segmentation fault" -> code problem
        string   => 'Segmentation fault',
-       pstring  => '.*',
        message  => 'Segmentation fault',
        check    => 1,
        stop     => 1,
@@ -113,7 +104,6 @@ my @logcheck = (
     {
        # "Illegal instruction" -> bad build target?
        string   => 'Illegal instruction',
-       pstring  => '.*',
        message  => 'Illegal instruction',
        check    => 1,
        stop     => 1,
@@ -122,7 +112,6 @@ my @logcheck = (
     {
        # Installing build-deps failed
        string   => 'dpkg: error processing package',
-       pstring  => '.*',
        message  => 'build-deps failed',
        check    => 1,
        stop     => 1,
@@ -131,7 +120,6 @@ my @logcheck = (
     {
        # Installing build-deps failed
        string   => 'E: pbuilder-satisfydepends failed.',
-       pstring  => '.*',
        message  => 'pbuilder build-deps failed',
        check    => 1,
        stop     => 1,
@@ -140,7 +128,6 @@ my @logcheck = (
     {
        # Installing build-deps failed
        string   => 'E: Unmet dependencies',
-       pstring  => '.*',
        message  => 'build-deps failed',
        check    => 1,
        stop     => 1,
@@ -158,7 +145,6 @@ my @logcheck = (
     {
        # Build failed - missing build-dep?
        string   => 'build dependencies/conflicts unsatisfied',
-       pstring  => '.*',
        message  => 'build-deps not satisfiable',
        check    => 1,
        stop     => 1,
@@ -167,7 +153,6 @@ my @logcheck = (
     {
        # Build failed - missing build-dep?
        string   => 'ld: cannot find',
-       pstring  => '.*',
        message  => 'build failure: missing library - missing build-dep?',
        check    => 1,
        stop     => 1,
@@ -176,7 +161,6 @@ my @logcheck = (
     {
        # Build failed - missing build-dep?
        string   => 'fatal error:.*No such file or directory',
-       pstring  => '.*',
        message  => 'build failure: missing header - missing build-dep?',
        check    => 1,
        stop     => 1,
@@ -185,7 +169,6 @@ my @logcheck = (
     {
        # Build failed - missing build-dep?
        string   => 'SEVERE: Cannot resolve dependencies',
-       pstring  => '.*',
        message  => 'build failure - missing build-dep?',
        check    => 1,
        stop     => 1,
@@ -194,7 +177,6 @@ my @logcheck = (
     {
        # Build failed - can't exec something...
        string   => 'error trying to exec.*execvp: No',
-       pstring  => '.*',
        message  => 'build failure (missing binary)',
        check    => 1,
        stop     => 1,
@@ -203,7 +185,6 @@ my @logcheck = (
     {
        # Build failed
        string   => 'BUILD FAILED',
-       pstring  => '.*',
        message  => 'build failure (java/javadoc))',
        check    => 1,
        stop     => 1,
@@ -212,7 +193,6 @@ my @logcheck = (
     {
        # Build failed
        string   => 'make.*returned exit code',
-       pstring  => '.*',
        message  => 'build failure (other)',
        check    => 1,
        stop     => 0,
@@ -221,7 +201,6 @@ my @logcheck = (
     {
        # Build failed
        string   => '^make.*\*\*\*.* \[debian/rules.*Error \d+$',
-       pstring  => '.*',
        message  => 'build failure (other)',
        check    => 1,
        stop     => 0,
@@ -230,7 +209,6 @@ my @logcheck = (
     {
        # Build failed
        string   => 'dpkg-source: error: unrepresentable changes to source',
-       pstring  => '.*',
        message  => 'dpkg-source failure',
        check    => 1,
        stop     => 1,
@@ -239,7 +217,6 @@ my @logcheck = (
     {
        # Build failed
        string   => 'fakeroot debian/rules binary',
-       pstring  => '.*',
        message  => 'build failure (other)',
        check    => 0,
        stop     => 1,
@@ -247,7 +224,6 @@ my @logcheck = (
     {
        # Test failure
        string   => 'OSError: \[Errno 13\] Permission denied',
-       pstring  => '.*',
        message  => 'python EPERM test failure',
        check    => 1,
        stop     => 1,
@@ -255,7 +231,6 @@ my @logcheck = (
     {
        # Test failure
        string   => 'dh_auto_test:.*returned exit code \d+',
-       pstring  => '.*',
        message  => 'test failure',
        check    => 1,
        stop     => 1,
@@ -263,7 +238,6 @@ my @logcheck = (
     {
        # Timeout. pbuilder is too dumb to do this properly :-(
        string   => 'I: Terminating build process due to timeout',
-       pstring  => '.*',
        message  => 'pbuilder build timeout',
        check    => 1,
        stop     => 1,
@@ -273,7 +247,6 @@ my @logcheck = (
     {
        # Timeout from sbuild
        string   => 'Build killed with signal TERM after \d+ minutes of inactivity',
-       pstring  => '.*',
        message  => 'sbuild build timeout',
        check    => 1,
        stop     => 1,
@@ -317,8 +290,8 @@ foreach my $input (@ARGV) {
            my %check = %$checktmp;
            if ($check{check}) {
                if (!$stop
-                   and $line =~ m/$check{string}/
-                   and $oldline =~ m/$check{pstring}/) {
+                   and ($line =~ m/$check{string}/)
+                   and (!$check{pstring} or $oldline =~ m/$check{pstring}/)) {
 #                  print "  Line $lineno: found \"$check{string}\"\n";
                    $file_results{$check{message}} = 1;
                    if ($check{timeout} and $errors == 0) {