]> ruderich.org/simon Gitweb - blhc/blhc.git/blobdiff - bin/blhc
Fix false positive when "compiling" python files.
[blhc/blhc.git] / bin / blhc
index 38d0834cd4c1ddc37b70602cf0d186f64fc769ae..2bf99cc6145e6ca40459a253fab32103ba9afd0f 100755 (executable)
--- a/bin/blhc
+++ b/bin/blhc
@@ -442,6 +442,8 @@ sub is_non_verbose_build {
     # C++ compiler setting.
     return 0 if $line =~ /^\s*C\+\+.+?:\s+(?:yes|no)\s*$/;
     return 0 if $line =~ /^\s*C\+\+ Library: stdc\+\+$/;
+    # "Compiling" non binary files.
+    return 0 if $line =~ /^\s*Compiling \S+\.(?:py|el)['"]?(?:\.\.\.)?$/;
     # "Compiling" with no file name.
     if ($line =~ /^\s*[Cc]ompiling\s+(.+?)(?:\.\.\.)?$/) {
         # $file_extension_regex may need spaces around the filename.
@@ -688,8 +690,13 @@ foreach my $file (@ARGV) {
         # only, doesn't use the dpkg-buildpackage header. Necessary to ignore
         # build logs which aren't built (wrong architecture, build error,
         # etc.).
-        if (not $arch and index($line, 'Architecture: ') == 0) {
-            $arch = substr $line, 14, -1; # -1 to ignore '\n' at the end
+        if (not $arch) {
+            if (index($line, 'Build Architecture: ') == 0) {
+                $arch = substr $line, 20, -1; # -1 to ignore '\n' at the end
+            # For old logs (sbuild << 0.63.0-1).
+            } elsif (index($line, 'Architecture: ') == 0) {
+                $arch = substr $line, 14, -1; # -1 to ignore '\n' at the end
+            }
         }
 
         # dpkg-buildflags only provides hardening flags since 1.16.1, don't
@@ -1262,14 +1269,18 @@ blhc is a small tool which checks build logs for missing hardening flags. It's
 licensed under the GPL 3 or later.
 
 It's designed to check build logs generated by Debian's dpkg-buildpackage (or
-tools using dpkg-buildpackage like pbuilder or the official buildd build logs)
-to help maintainers detect missing hardening flags in their packages.
+tools using dpkg-buildpackage like pbuilder or sbuild (which is used for the
+official buildd build logs)) to help maintainers detect missing hardening
+flags in their packages.
 
 Only gcc is detected as compiler at the moment. If other compilers support
 hardening flags as well, please report them.
 
 If there's no output, no flags are missing and the build log is fine.
 
+See F<README> for details about performed checks, auto-detection and
+limitations.
+
 =head1 OPTIONS
 
 =over 8