mirror of
https://github.com/AsahiLinux/u-boot
synced 2024-11-24 13:43:28 +00:00
patman: Check patches in parallel
For large series this can take a while. Run checkpatch in parallel to try to reduce the time. The checkpatch information is still reported in sequential order, so a very slow patch at the start can still slow things down. But overall this gives good results. Signed-off-by: Simon Glass <sjg@chromium.org> Reviewed-by: Douglas Anderson <dianders@chromium.org>
This commit is contained in:
parent
27409e35d5
commit
00d54ae8f4
1 changed files with 26 additions and 20 deletions
|
@ -3,6 +3,7 @@
|
|||
#
|
||||
|
||||
import collections
|
||||
import concurrent.futures
|
||||
import os
|
||||
import re
|
||||
import sys
|
||||
|
@ -244,26 +245,31 @@ def check_patches(verbose, args, use_tree):
|
|||
error_count, warning_count, check_count = 0, 0, 0
|
||||
col = terminal.Color()
|
||||
|
||||
for fname in args:
|
||||
result = check_patch(fname, verbose, use_tree=use_tree)
|
||||
if not result.ok:
|
||||
error_count += result.errors
|
||||
warning_count += result.warnings
|
||||
check_count += result.checks
|
||||
print('%d errors, %d warnings, %d checks for %s:' % (result.errors,
|
||||
result.warnings, result.checks, col.build(col.BLUE, fname)))
|
||||
if (len(result.problems) != result.errors + result.warnings +
|
||||
result.checks):
|
||||
print("Internal error: some problems lost")
|
||||
# Python seems to get confused by this
|
||||
# pylint: disable=E1133
|
||||
for item in result.problems:
|
||||
sys.stderr.write(
|
||||
get_warning_msg(col, item.get('type', '<unknown>'),
|
||||
item.get('file', '<unknown>'),
|
||||
item.get('line', 0), item.get('msg', 'message')))
|
||||
print
|
||||
#print(stdout)
|
||||
with concurrent.futures.ThreadPoolExecutor(max_workers=16) as executor:
|
||||
futures = []
|
||||
for fname in args:
|
||||
f = executor.submit(check_patch, fname, verbose, use_tree=use_tree)
|
||||
futures.append(f)
|
||||
|
||||
for fname, f in zip(args, futures):
|
||||
result = f.result()
|
||||
if not result.ok:
|
||||
error_count += result.errors
|
||||
warning_count += result.warnings
|
||||
check_count += result.checks
|
||||
print('%d errors, %d warnings, %d checks for %s:' % (result.errors,
|
||||
result.warnings, result.checks, col.build(col.BLUE, fname)))
|
||||
if (len(result.problems) != result.errors + result.warnings +
|
||||
result.checks):
|
||||
print("Internal error: some problems lost")
|
||||
# Python seems to get confused by this
|
||||
# pylint: disable=E1133
|
||||
for item in result.problems:
|
||||
sys.stderr.write(
|
||||
get_warning_msg(col, item.get('type', '<unknown>'),
|
||||
item.get('file', '<unknown>'),
|
||||
item.get('line', 0), item.get('msg', 'message')))
|
||||
print
|
||||
if error_count or warning_count or check_count:
|
||||
str = 'checkpatch.pl found %d error(s), %d warning(s), %d checks(s)'
|
||||
color = col.GREEN
|
||||
|
|
Loading…
Reference in a new issue