Merge "Separate parallel_classify_warnings out of parse_input_file."

This commit is contained in:
Chih-hung Hsieh
2016-11-15 22:19:36 +00:00
committed by Gerrit Code Review

View File

@@ -84,6 +84,8 @@ import argparse
import multiprocessing import multiprocessing
import os import os
import re import re
import signal
import sys
parser = argparse.ArgumentParser(description='Convert a build log into HTML') parser = argparse.ArgumentParser(description='Convert a build log into HTML')
parser.add_argument('--gencsv', parser.add_argument('--gencsv',
@@ -2090,11 +2092,16 @@ def classify_warnings(lines):
results = [] results = []
for line in lines: for line in lines:
classify_one_warning(line, results) classify_one_warning(line, results)
# After the main work, ignore all other signals to a child process,
# to avoid bad warning/error messages from the exit clean-up process.
if args.processes > 1:
signal.signal(signal.SIGTERM, lambda *args: sys.exit(-signal.SIGTERM))
return results return results
def parallel_classify_warnings(warning_lines): def parallel_classify_warnings(warning_lines):
"""Classify all warning lines with num_cpu parallel processes.""" """Classify all warning lines with num_cpu parallel processes."""
compile_patterns()
num_cpu = args.processes num_cpu = args.processes
if num_cpu > 1: if num_cpu > 1:
groups = [[] for x in range(num_cpu)] groups = [[] for x in range(num_cpu)]
@@ -2177,17 +2184,15 @@ def normalize_warning_line(line):
return line return line
def parse_input_file(): def parse_input_file(infile):
"""Parse input file, match warning lines.""" """Parse input file, match warning lines."""
global platform_version global platform_version
global target_product global target_product
global target_variant global target_variant
infile = open(args.buildlog, 'r')
line_counter = 0 line_counter = 0
# handle only warning messages with a file path # handle only warning messages with a file path
warning_pattern = re.compile('^[^ ]*/[^ ]*: warning: .*') warning_pattern = re.compile('^[^ ]*/[^ ]*: warning: .*')
compile_patterns()
# Collect all warnings into the warning_lines set. # Collect all warnings into the warning_lines set.
warning_lines = set() warning_lines = set()
@@ -2207,7 +2212,7 @@ def parse_input_file():
m = re.search('(?<=^TARGET_BUILD_VARIANT=).*', line) m = re.search('(?<=^TARGET_BUILD_VARIANT=).*', line)
if m is not None: if m is not None:
target_variant = m.group(0) target_variant = m.group(0)
parallel_classify_warnings(warning_lines) return warning_lines
# Return s with escaped backslash and quotation characters. # Return s with escaped backslash and quotation characters.
@@ -2503,7 +2508,8 @@ def dump_csv():
def main(): def main():
parse_input_file() warning_lines = parse_input_file(open(args.buildlog, 'r'))
parallel_classify_warnings(warning_lines)
if args.gencsv: if args.gencsv:
dump_csv() dump_csv()
else: else: