# 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 $line =~ /^Architecture: (.+)$/) {
+ if (not $arch and $line =~ /^Architecture: (.+)$/) {
$arch = $1;
}
# Input lines, contain only the lines with compiler commands.
my @input = ();
+ # Non-verbose lines in the input. Used to reduce calls to
+ # is_non_verbose_build() (which is quite slow) in the second loop when
+ # it's already clear if a line is non-verbose or not.
+ my @input_nonverbose = ();
my $continuation = 0;
my $complete_line = undef;
# Ignore compiler warnings for now.
next if $line =~ /$warning_regex/o;
- if (not $option_buildd and index($line, "\033") != -1) { # esc
+ if (not $option_buildd and index($line, "\033") != -1) { # \033 = esc
# Remove all ANSI color sequences which are sometimes used in
# non-verbose builds.
$line = Term::ANSIColor::colorstrip($line);
and $line =~ /^(?:checking|[Cc]onfigure:) /;
next if $line =~ /^\s*(?:Host\s+)?(?:C(?:\+\+)?\s+)?
[Cc]ompiler[\s.]*:?\s+
- /xo;
+ /x;
next if $line =~ /^\s*(?:- )?(?:HOST_)?(?:CC|CXX)\s*=\s*$cc_regex_full\s*$/o;
# `moc-qt4`, contains '-I/usr/share/qt4/mkspecs/linux-g++' (or
# similar for other architectures) which gets recognized as a
$harden_bindnow = 1 if any_flags_used($line, @def_ldflags_bindnow);
push @input, $line;
+ push @input_nonverbose, $non_verbose;
}
}
# Option or auto detected.
if ($arch) {
- # The following was partially copied from dpkg-dev 1.16.1.2
+ # The following was partially copied from dpkg-dev 1.16.4.3
# (/usr/share/perl5/Dpkg/Vendor/Debian.pm, add_hardening_flags()),
# copyright Raphaƫl Hertzog <hertzog@debian.org>, Kees Cook
# <kees@debian.org>, Canonical, Ltd. licensed under GPL version 2 or
}
my $skip = 0;
- if (is_non_verbose_build($line, $input[$i + 1], \$skip)) {
+ if ($input_nonverbose[$i]
+ and is_non_verbose_build($line, $input[$i + 1], \$skip)) {
if (not $option_buildd) {
error_non_verbose_build($line);
$exit |= $exit_code{non_verbose_build};
# checks easier and faster.
$line =~ s/^.*?$cc_regex//o;
# "([...] test.c)" is not detected as 'test.c' - fix this by removing
- # the brace and similar characters.
+ # the brace and similar characters at the line end.
$line =~ s/['")]+$//;
# Skip unnecessary tests when only preprocessing.