diff options
author | Steven Rostedt (Red Hat) <rostedt@goodmis.org> | 2013-02-18 09:35:49 -0500 |
---|---|---|
committer | Steven Rostedt <rostedt@goodmis.org> | 2013-02-18 09:35:49 -0500 |
commit | 7328735cbf68b7cd4d7ef16e172013743cdc2bc4 (patch) | |
tree | 66a6ff7a8d90f809d81c5f77e8219dc40e5c50a1 /tools | |
parent | 4c0b67a27d96e01a4b4ede2fda57da9f7c50af21 (diff) | |
download | linux-7328735cbf68b7cd4d7ef16e172013743cdc2bc4.tar.gz linux-7328735cbf68b7cd4d7ef16e172013743cdc2bc4.tar.bz2 linux-7328735cbf68b7cd4d7ef16e172013743cdc2bc4.zip |
ktest: Remove indexes from warnings check
The index of a line where a warning is tested can be returned
differently on different versions of gcc (or same version compiled
differently). That is, a tab + space can give different results. This
causes the warning check to produce a false positive. Removing the
index from the check fixes this issue.
Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
Diffstat (limited to 'tools')
-rwxr-xr-x | tools/testing/ktest/ktest.pl | 34 |
1 files changed, 26 insertions, 8 deletions
diff --git a/tools/testing/ktest/ktest.pl b/tools/testing/ktest/ktest.pl index f3bb5da3193b..4e67d52eb3a2 100755 --- a/tools/testing/ktest/ktest.pl +++ b/tools/testing/ktest/ktest.pl @@ -1945,6 +1945,27 @@ sub start_monitor_and_boot { my $check_build_re = ".*:.*(warning|error|Error):.*"; my $utf8_quote = "\\x{e2}\\x{80}(\\x{98}|\\x{99})"; +sub process_warning_line { + my ($line) = @_; + + chomp $line; + + # for distcc heterogeneous systems, some compilers + # do things differently causing warning lines + # to be slightly different. This makes an attempt + # to fixe those issues. + + # chop off the index into the line + # using distcc, some compilers give different indexes + # depending on white space + $line =~ s/^(\s*\S+:\d+:)\d+/$1/; + + # Some compilers use UTF-8 extended for quotes and some don't. + $line =~ s/$utf8_quote/'/g; + + return $line; +} + # Read buildlog and check against warnings file for any # new warnings. # @@ -1965,8 +1986,9 @@ sub check_buildlog { while (<IN>) { if (/$check_build_re/) { - chomp; - $warnings_list{$_} = 1; + my $warning = process_warning_line $_; + + $warnings_list{$warning} = 1; } } close(IN); @@ -1978,13 +2000,9 @@ sub check_buildlog { open(IN, $buildlog) or dodie "Can't open $buildlog"; while (<IN>) { if (/$check_build_re/) { + my $warning = process_warning_line $_; - # Some compilers use UTF-8 extended for quotes - # for distcc heterogeneous systems, this causes issues - s/$utf8_quote/'/g; - - chomp; - if (!defined $warnings_list{$_}) { + if (!defined $warnings_list{$warning}) { fail "New warning found (not in $warnings_file)\n$_\n"; $no_reboot = $save_no_reboot; return 0; |