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:
Simon Glass 2023-03-08 10:52:55 -08:00
parent 27409e35d5
commit 00d54ae8f4

View file

@ -3,6 +3,7 @@
#
import collections
import concurrent.futures
import os
import re
import sys
@ -244,8 +245,14 @@ def check_patches(verbose, args, use_tree):
error_count, warning_count, check_count = 0, 0, 0
col = terminal.Color()
with concurrent.futures.ThreadPoolExecutor(max_workers=16) as executor:
futures = []
for fname in args:
result = check_patch(fname, verbose, use_tree=use_tree)
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
@ -263,7 +270,6 @@ def check_patches(verbose, args, use_tree):
item.get('file', '<unknown>'),
item.get('line', 0), item.get('msg', 'message')))
print
#print(stdout)
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