util/lint: Run lint-extended-007-final-newlines checks in parallel

Instead of checking each directory in series, kick off the checks
in parallel and then wait for them to finish.  Failures print out with
file information, so mixing output isn't a problem.  This reduces
the time it takes to run on lumberingbuilder by 60%.

This could probably be sped up even more by splitting up src/mainboard
into smaller sections.

This method does skip a few control files at the top level - .gitignore,
.checkpatch.conf, gnat.adc, etc.  These could be added to the list of
files to check, but I didn't think it was needed.

Change-Id: I171977e713a9956cf4142cfc0a199e10040abb35
Signed-off-by: Martin Roth <gaumless@gmail.com>
Reviewed-on: https://review.coreboot.org/27011
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Patrick Georgi <pgeorgi@google.com>
This commit is contained in:
Martin Roth 2018-06-10 11:07:16 -06:00 committed by Patrick Georgi
parent 1dc5ce31ce
commit 31e0d42a1d
1 changed files with 15 additions and 6 deletions

View File

@ -16,6 +16,8 @@
LC_ALL=C export LC_ALL LC_ALL=C export LC_ALL
PIDS=""
INCLUDED_DIRS_AND_FILES='util/* src/* payloads/* configs/* Makefile *.inc'
EXCLUDED_DIRS='src/vendorcode/\|util/romcc/\|cbfstool/lzma/\|cbfstool/lz4/\|Documentation/\|build/\|3rdparty/\|\.git/\|coreboot-builds/\|util/nvidia/cbootimage/' EXCLUDED_DIRS='src/vendorcode/\|util/romcc/\|cbfstool/lzma/\|cbfstool/lz4/\|Documentation/\|build/\|3rdparty/\|\.git/\|coreboot-builds/\|util/nvidia/cbootimage/'
EXCLUDED_FILES='\.jpg$\|\.cksum$\|\.bin$\|\.vbt$\|\.hex$\|\.ico$\|\.o$\|\.bz2$\|\.xz$\|^.tmpconfig\|\.pyc$\|_shipped$\|sha256$\|\.png$\|\.patch$' EXCLUDED_FILES='\.jpg$\|\.cksum$\|\.bin$\|\.vbt$\|\.hex$\|\.ico$\|\.o$\|\.bz2$\|\.xz$\|^.tmpconfig\|\.pyc$\|_shipped$\|sha256$\|\.png$\|\.patch$'
@ -25,7 +27,7 @@ if [ -n "$(command -v git)" ] && \
then then
FIND_FILES="git ls-files" FIND_FILES="git ls-files"
else else
FIND_FILES="find . " FIND_FILES="find"
fi fi
HAVE_FILE=$(command -v file 1>/dev/null 2>&1; echo $?) HAVE_FILE=$(command -v file 1>/dev/null 2>&1; echo $?)
@ -49,7 +51,6 @@ test_for_final_newline() {
if [ -f "$filename" ] && { [ ! -x "$filename" ] || \ if [ -f "$filename" ] && { [ ! -x "$filename" ] || \
is_eligible_executable "$filename"; }; is_eligible_executable "$filename"; };
then then
# Verify that there is a newline at the end # Verify that there is a newline at the end
# $() strips trailing newlines # $() strips trailing newlines
if [ -n "$(tail -c 1 "$filename")" ]; then if [ -n "$(tail -c 1 "$filename")" ]; then
@ -65,7 +66,15 @@ test_for_final_newline() {
done done
} }
${FIND_FILES} | sed 's|^\./||' | sort | \ for directory in $INCLUDED_DIRS_AND_FILES ; do
grep -v "$EXCLUDED_DIRS" | \ ${FIND_FILES} ${directory} | sed 's|^\./||' | sort | \
grep -v "$EXCLUDED_FILES" | \ grep -v "$EXCLUDED_DIRS" | \
test_for_final_newline grep -v "$EXCLUDED_FILES" | \
test_for_final_newline &
PIDS="$PIDS $!"
done
# wait for tests to finish.
for pid in $PIDS; do
wait "$pid"
done