]> ruderich.org/simon Gitweb - blhc/blhc.git/blobdiff - bin/blhc
Ignore unimportant lines at the beginning of the log.
[blhc/blhc.git] / bin / blhc
index ea8291fe7caad3221b33d791e37d1fb807d40e3f..880d24df4d2599f6cae394595bb1eafd6fce4665 100755 (executable)
--- a/bin/blhc
+++ b/bin/blhc
@@ -115,28 +115,30 @@ sub pic_pie_conflict {
 sub is_non_verbose_build {
     my ($line, $next_line, $cc_regex, $skip_ref) = @_;
 
-    my $cmake_non_verbose = qr/^\s*\[[\d ]+%\] Building (?:C|CXX) object (.+?)$/;
     if (not ($line =~ /^checking if you want to see long compiling messages\.\.\. no/
-                or $line =~ /^\s*(?:CC|CCLD)\s+/
-                or $line =~ /^\s*(?:C|c)ompiling\s+/
-                or $line =~ /$cmake_non_verbose/)) {
+                or $line =~ /^\s*(?:CC|CCLD)\s+(.+?)$/
+                or $line =~ /^\s*(?:C|c)ompiling\s+(.+?)(?:\.\.\.)?$/
+                or $line =~ /^\s*(?:B|b)uilding (?:program|shared library)\s+(.+?)$/
+                or $line =~ /^\s*\[[\d ]+%\] Building (?:C|CXX) object (.+?)$/)) {
         return 0;
     }
 
+    my $file = $1;
+
     # On the first pass we only check if this line is verbose or not.
     return 1 if not defined $next_line;
 
     # Second pass, we have access to the next line.
     ${$skip_ref} = 0;
 
-    # CMake prints the non-verbose messages also when building verbose. If a
-    # compiler and the file name occurs in the next line, treat it as verbose
-    # build.
-    if ($line =~ /$cmake_non_verbose/) {
+    # CMake and other build systems print the non-verbose messages also when
+    # building verbose. If a compiler and the file name occurs in the next
+    # line, treat it as verbose build.
+    if (defined $file) {
         # Get filename, we can't use the complete path as only parts of it are
-        # used in the real compiler command ...
-        $1 =~ m{/([a-zA-Z0-9._-]+)$};
-        my $file = $1;
+        # used in the real compiler command.
+        $file =~ m{/([a-zA-Z0-9._-]+)$};
+        $file = $1;
 
         if ($next_line =~ /\Q$file\E/ and $next_line =~ /$cc_regex/) {
             # We still have to skip the current line as it doesn't contain any
@@ -248,8 +250,14 @@ my $exit = 0;
 # Input lines, contain only the lines with compiler commands.
 my @input = ();
 
+my $start = 0;
 my $continuation = 0;
 while (my $line = <>) {
+    # We skip over unimportant lines at the beginning to prevent false
+    # positives.
+    $start = 1 if $line =~ /^dpkg-buildpackage:/;
+    next if not $start;
+
     # Ignore compiler warnings for now.
     next if $line =~ /$warning_regex/;