diff options
author | Martin Roth <martin@coreboot.org> | 2022-06-03 00:06:57 -0600 |
---|---|---|
committer | Martin L Roth <gaumless@gmail.com> | 2022-09-30 19:19:53 +0000 |
commit | d81debd9467f7e0d5a255ed7f6b5f1916c613b77 (patch) | |
tree | 224623fc3af10180d652c7c0d7c39925e74e3763 /util/lint | |
parent | 7726a7f272965d9279e4c8008b893751203aa304 (diff) |
util/lint: Update tools that use git to use a library
Each of the tools that used git had similar functionality. This combines
all of that into a single script that gets sourced by each. This makes
maintenance much easier.
By doing this and updating each of the scripts to do the correct thing
if the script isn't being run in a git repository, it makes them work
much better for the releases, which are just released as a tarball,
without any attached git repository.
Change-Id: I61ba1cc4f7205e0d4baf993588bbc774120405cb
Signed-off-by: Martin Roth <martin@coreboot.org>
Reviewed-on: https://review.coreboot.org/c/coreboot/+/64973
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Elyes Haouas <ehaouas@noos.fr>
Diffstat (limited to 'util/lint')
23 files changed, 273 insertions, 152 deletions
diff --git a/util/lint/helper_functions.sh b/util/lint/helper_functions.sh new file mode 100644 index 0000000000..0c679d974f --- /dev/null +++ b/util/lint/helper_functions.sh @@ -0,0 +1,44 @@ +#!/usr/bin/env sh +# +# SPDX-License-Identifier: GPL-2.0-only + +# This file is sourced by the linters so that each one doesn't have to +# specify these routines individually + +LC_ALL=C export LC_ALL + +if [ -z "$GIT" ]; then + GIT="$(command -v git)" +else + # If git is specified, Do a basic check that it runs and seems like + # it's actually git + if ! "${GIT}" --version | grep -q git; then + echo "Error: ${GIT} does not seem to be valid." + exit 1; + fi +fi + +if [ "$(${GIT} rev-parse --is-inside-work-tree 2>/dev/null)" = "true" ]; then + IN_GIT_TREE=1 +else + IN_GIT_TREE=0 +fi + +if [ "${IN_GIT_TREE}" -eq 1 ] && [ -z "${GIT}" ]; then + echo "This test needs git to run. Please install it, then run this test again." + exit 1 +fi + +# Use git ls-files if the code is in a git repo, otherwise use find. +if [ "${IN_GIT_TREE}" -eq 1 ]; then + FIND_FILES="${GIT} ls-files" +else + FIND_FILES="find src" +fi + +# Use git grep if the code is in a git repo, otherwise use grep. +if [ "${IN_GIT_TREE}" -eq 1 ]; then + GREP_FILES="${GIT} grep" +else + GREP_FILES="grep -r" +fi diff --git a/util/lint/lint-000-license-headers b/util/lint/lint-000-license-headers index f70b623d2d..233759b0bb 100755 --- a/util/lint/lint-000-license-headers +++ b/util/lint/lint-000-license-headers @@ -5,6 +5,15 @@ # DESCR: Check that files in have valid license headers # $1 is an optional command line parameter containing directories to check + +LINTDIR="$( + cd -- "$(dirname "$0")" > /dev/null 2>&1 || return + pwd -P +)" + +# shellcheck source=helper_functions.sh +. "${LINTDIR}/helper_functions.sh" + # regex list of files and directories to exclude from the search HEADER_EXCLUDED="\ ^src/commonlib/bsd/lz4.c.inc\$|\ @@ -69,11 +78,10 @@ else HEADER_DIRS="$1" fi -LC_ALL=C export LC_ALL #get initial list from git, removing HEADER_EXCLUDED files. #make a copy to check for the old style header later. -headerlist=$(git ls-files $HEADER_DIRS | egrep -v "($HEADER_EXCLUDED)") +headerlist=$(${FIND_FILES} $HEADER_DIRS | egrep -v "($HEADER_EXCLUDED)") #update headerlist by removing files that match the license string check_for_license() { diff --git a/util/lint/lint-007-checkpatch b/util/lint/lint-007-checkpatch index d7443b3b2c..a9cf782885 100755 --- a/util/lint/lint-007-checkpatch +++ b/util/lint/lint-007-checkpatch @@ -4,7 +4,13 @@ # DESCR: Checkpatch on .c, .h, & Kconfig files in the tree -LC_ALL=C export LC_ALL +LINTDIR="$( + cd -- "$(dirname "$0")" > /dev/null 2>&1 || return + pwd -P +)" + +# shellcheck source=helper_functions.sh +. "${LINTDIR}/helper_functions.sh" # GNU BRE syntax list of files to examine INCLUDED_FILES='.*\.[ch]\|Kconfig.*$' @@ -36,7 +42,7 @@ fi # We want word splitting here, so disable the shellcheck warnings # shellcheck disable=SC2046,SC2086 -FILELIST=$( git ls-files $INCLUDED_DIRS | \ +FILELIST=$( ${FIND_FILES} $INCLUDED_DIRS | \ grep $INCLUDED_FILES | \ grep -v $EXCLUDED_DIRS ) diff --git a/util/lint/lint-008-kconfig b/util/lint/lint-008-kconfig index c24ff14069..248b519839 100755 --- a/util/lint/lint-008-kconfig +++ b/util/lint/lint-008-kconfig @@ -4,18 +4,21 @@ # DESCR: Check Kconfig files for warnings and errors -LC_ALL=C export LC_ALL +LINTDIR="$( + cd -- "$(dirname "$0")" > /dev/null 2>&1 || return + pwd -P +)" + +# shellcheck source=helper_functions.sh +. "${LINTDIR}/helper_functions.sh" # Verify that the test can run, tell users the issue if [ -z "$(command -v perl)" ]; then echo "The kconfig lint tool uses perl. Please install it to run this test." fi -# If coreboot is in a git repo, use git grep to check as it will ignore any -# files in the tree that aren't checked into git -if [ -n "$(command -v git)" ] && \ - [ "$(git rev-parse --is-inside-work-tree 2>/dev/null)" = "true" ] -then +# Don't use git if coreboot isn't in a repo +if [ "${IN_GIT_TREE}" -eq 1 ]; then env perl util/lint/kconfig_lint else env perl util/lint/kconfig_lint --no_git_grep diff --git a/util/lint/lint-014-qualified-types b/util/lint/lint-014-qualified-types index 48810cf3cd..0f9725e32b 100755 --- a/util/lint/lint-014-qualified-types +++ b/util/lint/lint-014-qualified-types @@ -4,22 +4,19 @@ # DESCR: Check that variables have fully qualified types -LC_ALL=C export LC_ALL +LINTDIR="$( + cd -- "$(dirname "$0")" > /dev/null 2>&1 || return + pwd -P +)" + +# shellcheck source=helper_functions.sh +. "${LINTDIR}/helper_functions.sh" INCLUDED_DIRS='^src/\|^util/\|payloads/libpayload\|payloads/coreinfo' EXCLUDED_DIRS='^src/vendorcode\|cbfstool/lzma\|cbfstool/lz4' INCLUDED_FILES='\.[ch]:' -# Use git grep if the code is in a git repo, otherwise use grep. -if [ -n "$(command -v git)" ] && \ - [ "$(git rev-parse --is-inside-work-tree 2>/dev/null)" = "true" ] -then - GREP_FILES="git grep -n" -else - GREP_FILES="grep -rn" -fi - -${GREP_FILES} 'unsigned[[:space:]]' | \ +${GREP_FILES} -n 'unsigned[[:space:]]' | \ grep "$INCLUDED_DIRS" | \ grep -v "$EXCLUDED_DIRS" | \ grep "$INCLUDED_FILES" | \ diff --git a/util/lint/lint-extended-015-final-newlines b/util/lint/lint-extended-015-final-newlines index 55b48cf644..2c792839d2 100755 --- a/util/lint/lint-extended-015-final-newlines +++ b/util/lint/lint-extended-015-final-newlines @@ -4,22 +4,19 @@ # DESCR: Check that files end with a single newline -LC_ALL=C export LC_ALL +LINTDIR="$( + cd -- "$(dirname "$0")" > /dev/null 2>&1 || return + pwd -P +)" + +# shellcheck source=helper_functions.sh +. "${LINTDIR}/helper_functions.sh" PIDS="" INCLUDED_DIRS_AND_FILES='util/* src/* payloads/* configs/* Makefile *.inc' EXCLUDED_DIRS='src/vendorcode/\|cbfstool/lzma/\|cbfstool/lz4/\|Documentation/\|build/\|3rdparty/\|\.git/\|coreboot-builds/\|util/nvidia/cbootimage/' EXCLUDED_FILES='\.gif$\|\.jpg$\|\.cksum$\|\.bin$\|\.vbt$\|\.hex$\|\.ico$\|\.o$\|\.bz2$\|\.xz$\|^.tmpconfig\|\.pyc$\|_shipped$\|sha256$\|\.png$\|\.patch$' -# Use git ls-files if the code is in a git repo, otherwise use find. -if [ -n "$(command -v git)" ] && \ - [ "$(git rev-parse --is-inside-work-tree 2>/dev/null)" = "true" ] -then - FIND_FILES="git ls-files" -else - FIND_FILES="find" -fi - HAVE_FILE=$(command -v file 1>/dev/null 2>&1; echo $?) is_eligible_executable() { @@ -57,7 +54,7 @@ test_for_final_newline() { } for directory in $INCLUDED_DIRS_AND_FILES ; do - ${FIND_FILES} ${directory} | sed 's|^\./||' | sort | \ + ${FIND_FILES} "${directory}" | sed 's|^\./||' | sort | \ grep -v "$EXCLUDED_DIRS" | \ grep -v "$EXCLUDED_FILES" | \ test_for_final_newline & diff --git a/util/lint/lint-extended-020-signed-off-by b/util/lint/lint-extended-020-signed-off-by index 6d569aa80a..abbed56a24 100755 --- a/util/lint/lint-extended-020-signed-off-by +++ b/util/lint/lint-extended-020-signed-off-by @@ -1,13 +1,22 @@ #!/usr/bin/env sh # SPDX-License-Identifier: GPL-2.0-or-later # -# DESCR: Check for a signed-off-by line on the latest git commit +# DESCR: Check for a signed-off-by line on the latest commit + + +LINTDIR="$( + cd -- "$(dirname "$0")" > /dev/null 2>&1 || return + pwd -P +)" + +# shellcheck source=helper_functions.sh +. "${LINTDIR}/helper_functions.sh" + +if [ "${IN_GIT_TREE}" -eq 0 ]; then + exit 0 +fi # This test is mainly for the jenkins server -if [ -n "$(command -v git)" ] && \ - [ "$(git rev-parse --is-inside-work-tree 2>/dev/null)" = "true" ] -then - if [ -z "$(git log -n 1 | grep '[[:space:]]\+Signed-off-by: ')" ]; then - echo "No Signed-off-by line in commit message" - fi +if ! ${GIT} log -n 1 | grep -q '[[:space:]]\+Signed-off-by: '; then + echo "No Signed-off-by line in commit message" fi diff --git a/util/lint/lint-stable-003-whitespace b/util/lint/lint-stable-003-whitespace index 5174120673..e46d93e2a4 100755 --- a/util/lint/lint-stable-003-whitespace +++ b/util/lint/lint-stable-003-whitespace @@ -4,20 +4,26 @@ # DESCR: Check for superfluous whitespace in the tree -LC_ALL=C export LC_ALL +INTDIR="$( + cd -- "$(dirname "$0")" > /dev/null 2>&1 || return + pwd -P +)" +# shellcheck source=helper_functions.sh +. "${LINTDIR}/helper_functions.sh" + EXCLUDELIST='^src/vendorcode/|^util/kconfig/|^util/nvidia/cbootimage$|^util/goswid$|COPYING|LICENSE|README|_shipped$|\.patch$|\.bin$|\.hex$|\.jpg$|\.gif$|\.ttf$|\.woff$|\.png$|\.eot$|\.vbt$|\.ico$|\.md$' INCLUDELIST="src util payloads Makefile* toolchain.inc tests" # shellcheck disable=SC2086,SC2046 if uname | grep -qi "linux"; then grep -n -H "[[:space:]][[:space:]]*$" \ - $(git ls-files $INCLUDELIST | \ + $(${FIND_FILES} $INCLUDELIST | \ grep -Ev "($EXCLUDELIST)" ) | \ sed -e "s,^.*$,File & has lines ending with whitespace.," else # The above form is much (100x) faster, but doesn't work # on all systems. A for loop also works but takes 30% longer - git ls-files $INCLUDELIST | \ + ${FIND_FILES} $INCLUDELIST | \ grep -Ev "($EXCLUDELIST)" | \ xargs -I % \ grep -l "[[:space:]][[:space:]]*$" % | \ diff --git a/util/lint/lint-stable-004-style-labels b/util/lint/lint-stable-004-style-labels index 393774fdae..2418cdf249 100755 --- a/util/lint/lint-stable-004-style-labels +++ b/util/lint/lint-stable-004-style-labels @@ -4,16 +4,13 @@ # DESCR: Check that C labels begin at start-of-line -LC_ALL=C export LC_ALL +LINTDIR="$( + cd -- "$(dirname "$0")" > /dev/null 2>&1 || return + pwd -P +)" -# Use git ls-files if the code is in a git repo, otherwise use find. -if [ -n "$(command -v git)" ] && \ - [ "$(git rev-parse --is-inside-work-tree 2>/dev/null)" = "true" ] -then - FIND_FILES="git ls-files" -else - FIND_FILES="find src" -fi +# shellcheck source=helper_functions.sh +. "${LINTDIR}/helper_functions.sh" ${FIND_FILES} | \ grep "^src/.*\.[csS]$" | \ diff --git a/util/lint/lint-stable-005-board-status b/util/lint/lint-stable-005-board-status index 617440bd14..08cbc92c66 100755 --- a/util/lint/lint-stable-005-board-status +++ b/util/lint/lint-stable-005-board-status @@ -3,8 +3,16 @@ # # DESCR: Check that every board has a meaningful board_info.txt -LC_ALL=C export LC_ALL -for mobodir in $(git ls-files src/mainboard | sed -n 's,^\(src/mainboard/[^/]*/[^/]*\)/.*$,\1,p'|sort|uniq); do + +LINTDIR="$( + cd -- "$(dirname "$0")" > /dev/null 2>&1 || return + pwd -P +)" + +# shellcheck source=helper_functions.sh +. "${LINTDIR}/helper_functions.sh" + +for mobodir in $(${FIND_FILES} src/mainboard | sed -n 's,^\(src/mainboard/[^/]*/[^/]*\)/.*$,\1,p'|sort|uniq); do board_info="$mobodir/board_info.txt" if ! [ -f "$board_info" ]; then echo "No $board_info found" diff --git a/util/lint/lint-stable-008-kconfig b/util/lint/lint-stable-008-kconfig index 3323971fac..e8a3beae8d 100755 --- a/util/lint/lint-stable-008-kconfig +++ b/util/lint/lint-stable-008-kconfig @@ -4,18 +4,21 @@ # DESCR: Check Kconfig files for errors -LC_ALL=C export LC_ALL +LINTDIR="$( + cd -- "$(dirname "$0")" > /dev/null 2>&1 || return + pwd -P +)" + +# shellcheck source=helper_functions.sh +. "${LINTDIR}/helper_functions.sh" # Verify that the test can run, tell users the issue if [ -z "$(command -v perl)" ]; then echo "The kconfig lint tool uses perl. Please install it to run this test." fi -# If coreboot is in a git repo, use git grep to check as it will ignore any -# files in the tree that aren't checked into git -if [ -n "$(command -v git)" ] && \ - [ "$(git rev-parse --is-inside-work-tree 2>/dev/null)" = "true" ] -then +# Check whether coreboot is in a repo +if [ "${IN_GIT_TREE}" -eq 1 ]; then env perl util/lint/kconfig_lint --warnings_off 2>&1 else env perl util/lint/kconfig_lint --no_git_grep --warnings_off 2>&1 diff --git a/util/lint/lint-stable-009-old-licenses b/util/lint/lint-stable-009-old-licenses index 8226fdd642..0b772263fa 100755 --- a/util/lint/lint-stable-009-old-licenses +++ b/util/lint/lint-stable-009-old-licenses @@ -5,6 +5,15 @@ # DESCR: Verify that files don't have the old style header # regex list of files and directories to exclude from the search + +LINTDIR="$( + cd -- "$(dirname "$0")" > /dev/null 2>&1 || return + pwd -P +)" + +# shellcheck source=helper_functions.sh +. "${LINTDIR}/helper_functions.sh" + HEADER_EXCLUDED="\ ^src/lib/gnat/|\ ^src/vendorcode/|\ @@ -26,9 +35,7 @@ if [ -z "$HEADER_DIRS" ]; then HEADER_DIRS="src util tests" fi -LC_ALL=C export LC_ALL - -headerlist=$(git ls-files $HEADER_DIRS | egrep -v "($HEADER_EXCLUDED)") +headerlist=$(${FIND_FILES} $HEADER_DIRS | egrep -v "($HEADER_EXCLUDED)") #check for the old style header headerlist=$(grep -il "You should have received a copy of the GNU" \ diff --git a/util/lint/lint-stable-010-asm-syntax b/util/lint/lint-stable-010-asm-syntax index 474a05d423..e1ce948f02 100755 --- a/util/lint/lint-stable-010-asm-syntax +++ b/util/lint/lint-stable-010-asm-syntax @@ -4,5 +4,12 @@ # DESCR: Check that we use a single assembler syntax -LC_ALL=C export LC_ALL -git grep -n "\.\(att\|intel\)_syntax\>" | grep -v '\.patch:' +LINTDIR="$( + cd -- "$(dirname "$0")" > /dev/null 2>&1 || return + pwd -P +)" + +# shellcheck source=helper_functions.sh +. "${LINTDIR}/helper_functions.sh" + +${GREP_FILES} -n "\.\(att\|intel\)_syntax\>" | grep -v '\.patch:' diff --git a/util/lint/lint-stable-012-executable-bit b/util/lint/lint-stable-012-executable-bit index 640bb08870..17ba065f20 100755 --- a/util/lint/lint-stable-012-executable-bit +++ b/util/lint/lint-stable-012-executable-bit @@ -3,6 +3,18 @@ # # DESCR: Check that source files are not executable -LC_ALL=C export LC_ALL -git ls-tree --full-tree -r HEAD src tests |grep "^100[7531][7531][7531] blob " |cut -f2- |grep -v "\.sh$" | \ +LINTDIR="$( + cd -- "$(dirname "$0")" > /dev/null 2>&1 || return + pwd -P +)" + +# shellcheck source=helper_functions.sh +. "${LINTDIR}/helper_functions.sh" + +# Exit if the code isn't in a git repo +if [ "${IN_GIT_TREE}" -eq 0 ]; then + exit 0 +fi + +${GIT} ls-tree --full-tree -r HEAD src tests |grep "^100[7531][7531][7531] blob " | cut -f2- | grep -v "\.sh$" | \ sed -e "s,^.*$,File & has one or more executable bits set in the file permissions.," diff --git a/util/lint/lint-stable-013-site-local b/util/lint/lint-stable-013-site-local index 53693f21d3..7a7dc8b2e2 100755 --- a/util/lint/lint-stable-013-site-local +++ b/util/lint/lint-stable-013-site-local @@ -6,14 +6,22 @@ # Because site-local is intended for local use only, it should never be # pushed to coreboot.org. Even for committing it for local use, it's # recommended that it be kept in a separate repository, and pulled in -# as a git submodule. +# as a submodule. -LC_ALL=C export LC_ALL +LINTDIR="$( + cd -- "$(dirname "$0")" > /dev/null 2>&1 || return + pwd -P +)" -if [ -n "$(command -v git)" ] && \ - [ "$(git rev-parse --is-inside-work-tree 2>/dev/null)" = "true" ] -then - if [ -n "$(git ls-files site-local/*)" ]; then - echo "Error: site-local must be kept separate from the coreboot repository." - fi +# shellcheck source=helper_functions.sh +. "${LINTDIR}/helper_functions.sh" + +# Exit if the code isn't in a git repo +if [ "${IN_GIT_TREE}" -eq 0 ]; then + exit 0 +fi + + +if [ -n "$(${FIND_FILES} site-local/*)" ]; then + echo "Error: site-local must be kept separate from the coreboot repository." fi diff --git a/util/lint/lint-stable-016-non-ascii b/util/lint/lint-stable-016-non-ascii index 52b6679aa1..dc074daef7 100755 --- a/util/lint/lint-stable-016-non-ascii +++ b/util/lint/lint-stable-016-non-ascii @@ -4,18 +4,22 @@ # DESCR: Check for non-ASCII and unprintable characters -LC_ALL=C export LC_ALL +LINTDIR="$( + cd -- "$(dirname "$0")" > /dev/null 2>&1 || return + pwd -P +)" + +# shellcheck source=helper_functions.sh +. "${LINTDIR}/helper_functions.sh" INCLUDED_FILES='\.[chsS]$\|\.asl$\|\.cb$\|\.inc$\|Kconfig\|\.ld$|\.txt\|\.hex' EXCLUDED_DIRS='^payloads/external/\|^src/vendorcode/\|^Documentation/' EXCLUDED_FILES='to-wiki/towiki\.sh$\|vga/vga_font\|video/font\|PDCurses.*x11' EXCLUDED_PHRASES='Copyright\|Ported to\|Intel®\|°C\|°F\|Athlon™\|Copyright.*©' -# Exit if git isn't present or the code isn't in a git repo -if [ -z "$(command -v git)" ] || \ - [ "$(git rev-parse --is-inside-work-tree 2>/dev/null)" != "true" ] -then - exit +# Exit if the code isn't in a git repo +if [ "${IN_GIT_TREE}" -eq 0 ]; then + exit 0 fi # 1. Get the list of files to parse and send them through grep @@ -25,7 +29,7 @@ fi # 4. Run the result through grep again to highlight the issues that were # found. Without this step, the characters can be difficult to see. # shellcheck disable=SC2046 -git grep -lP "[^\t-~]" | \ +${GREP_FILES} -lP "[^\t-~]" | \ grep "$INCLUDED_FILES" | \ grep -v "$EXCLUDED_DIRS" | \ grep -v "$EXCLUDED_FILES" | \ diff --git a/util/lint/lint-stable-017-configs b/util/lint/lint-stable-017-configs index 311ef38cd0..3f92f53b3c 100755 --- a/util/lint/lint-stable-017-configs +++ b/util/lint/lint-stable-017-configs @@ -4,21 +4,18 @@ # DESCR: Check that saved config files are miniconfigs -LC_ALL=C export LC_ALL +LINTDIR="$( + cd -- "$(dirname "$0")" > /dev/null 2>&1 || return + pwd -P +)" -SYMBOLS='CONFIG_ARCH_\|CONFIG_MAINBOARD_HAS_' +# shellcheck source=helper_functions.sh +. "${LINTDIR}/helper_functions.sh" -# Use git grep if the code is in a git repo, otherwise use grep. -if [ -n "$(command -v git)" ] && \ - [ "$(git rev-parse --is-inside-work-tree 2>/dev/null)" = "true" ] -then - GREP="git grep -l" -else - GREP="grep -rl" -fi +SYMBOLS='CONFIG_ARCH_\|CONFIG_MAINBOARD_HAS_' #look for a couple of things that should only be set by select keywords for file in \ - $($GREP "$SYMBOLS" configs) ; do \ + $(${GREP_FILES} -l "$SYMBOLS" configs) ; do \ echo "Error: $file seems to be a full config"; \ done diff --git a/util/lint/lint-stable-018-symlinks b/util/lint/lint-stable-018-symlinks index cd5c8440c1..060b470f8c 100755 --- a/util/lint/lint-stable-018-symlinks +++ b/util/lint/lint-stable-018-symlinks @@ -4,21 +4,23 @@ # DESCR: Report any symbolic links -LC_ALL=C export LC_ALL +LINTDIR="$( + cd -- "$(dirname "$0")" > /dev/null 2>&1 || return + pwd -P +)" + +# shellcheck source=helper_functions.sh +. "${LINTDIR}/helper_functions.sh" EXCLUDED_DIRS='^3rdparty\|^site-local' -# If the code is in a git repo, only print files that are checked in -if [ -n "$(command -v git)" ] && \ - [ "$(git rev-parse --is-inside-work-tree 2>/dev/null)" = "true" ] -then - git ls-tree -r HEAD | \ - grep ^120000 | \ - cut -f2 | \ - grep -v "$EXCLUDED_DIRS" -else - # If the code isn't in a git repo, print everything - find . -type l | \ - sed 's|\.\/||' | \ - grep -v "$EXCLUDED_DIRS" +# Exit if the code isn't in a git repo +if [ "${IN_GIT_TREE}" -eq 0 ]; then + exit 0 fi + + +${GIT} ls-tree -r HEAD | \ + grep ^120000 | \ + cut -f2 | \ + grep -v "$EXCLUDED_DIRS" diff --git a/util/lint/lint-stable-019-header-files b/util/lint/lint-stable-019-header-files index f73e0e7549..28e8d6ee41 100755 --- a/util/lint/lint-stable-019-header-files +++ b/util/lint/lint-stable-019-header-files @@ -4,7 +4,13 @@ # DESCR: Check for auto-included headers -LC_ALL=C export LC_ALL +LINTDIR="$( + cd -- "$(dirname "$0")" > /dev/null 2>&1 || return + pwd -P +)" + +# shellcheck source=helper_functions.sh +. "${LINTDIR}/helper_functions.sh" INCLUDED_DIRS='^src/' EXCLUDED_FILES='src/include/kconfig.h' @@ -33,17 +39,8 @@ elif [ "$1" = "--reset" ]; then exit 0 fi -# Use git grep if the code is in a git repo, otherwise use grep. -if [ -n "$(command -v git)" ] && \ - [ "$(git rev-parse --is-inside-work-tree 2>/dev/null)" = "true" ] -then - GREP_FILES="git grep -n" -else - GREP_FILES="grep -rn" -fi - for header in $HEADER_FILES; do - ${GREP_FILES} "#[[:blank:]]*include[[:blank:]]\+[\"<][[:blank:]]*${header}\.h[[:blank:]]*[\">]" | \ + ${GREP_FILES} -n "#[[:blank:]]*include[[:blank:]]\+[\"<][[:blank:]]*${header}\.h[[:blank:]]*[\">]" | \ grep "$INCLUDED_DIRS" | \ grep -v "$EXCLUDED_FILES"; \ done diff --git a/util/lint/lint-stable-021-coreboot-lowercase b/util/lint/lint-stable-021-coreboot-lowercase index b13cb4487e..33ade6ded3 100755 --- a/util/lint/lint-stable-021-coreboot-lowercase +++ b/util/lint/lint-stable-021-coreboot-lowercase @@ -4,22 +4,21 @@ # DESCR: Verify that the word 'coreboot' is lowercase -LC_ALL=C export LC_ALL +LINTDIR="$( + cd -- "$(dirname "$0")" > /dev/null 2>&1 || return + pwd -P +)" -EXCLUDE='^3rdparty/\|util/crossgcc/xgcc\|Binary file\|coreboot\|COREBOOT\|CorebootPayload\|CorebootModule\|minnowboard.org/Coreboot\|.*\.patch$\|CorebootBdsLib\|^payloads/external' +# shellcheck source=helper_functions.sh +. "${LINTDIR}/helper_functions.sh" -# Use git grep if the code is in a git repo, otherwise use grep. -if [ -n "$(command -v git)" ] && \ - [ "$(git rev-parse --is-inside-work-tree 2>/dev/null)" = "true" ] -then - GREP_FILES="git grep -in" +EXCLUDE='^3rdparty/\|util/crossgcc/xgcc\|Binary file\|coreboot\|COREBOOT\|CorebootPayload\|CorebootModule\|minnowboard.org/Coreboot\|.*\.patch$\|CorebootBdsLib\|^payloads/external' - # Check last commit message - if [ -n "$(git log -n 1 | grep -i 'coreboot' | grep -v "$EXCLUDE" )" ]; then +# # Check last commit message if the code is in a git repo +if [ "${IN_GIT_TREE}" -eq 1 ]; then + if [ -n "$(${GIT} log -n 1 | grep -i 'coreboot' | grep -v "$EXCLUDE" )" ]; then echo "'coreboot' should be lowercase in commit message" fi -else - GREP_FILES="grep -rin" fi -${GREP_FILES} "coreboot" | grep -v "$EXCLUDE"; +${GREP_FILES} -in "coreboot" | grep -v "$EXCLUDE"; diff --git a/util/lint/lint-stable-022-clang-format b/util/lint/lint-stable-022-clang-format index 9c94fbc060..4a602f798a 100755 --- a/util/lint/lint-stable-022-clang-format +++ b/util/lint/lint-stable-022-clang-format @@ -4,14 +4,21 @@ # DESCR: Run clang-format on white-listed directories -LC_ALL=C export LC_ALL +LINTDIR="$( + cd -- "$(dirname "$0")" > /dev/null 2>&1 || return + pwd -P +)" -# until we require this by default, we need a list of opted-in directories -if [ ! -f .clang-format-scope ]; then +# shellcheck source=helper_functions.sh +. "${LINTDIR}/helper_functions.sh" + +# Until we require this by default, we need a list of opted-in directories +# If the script isn't looking at a git repository, just exit +if [ ! -f .clang-format-scope ] || [ "${IN_GIT_TREE}" -eq 0 ]; then exit 0 fi -files_to_check=$(git log HEAD~..HEAD --format= --name-only $(cat .clang-format-scope) |grep "\.[ch]$") +files_to_check=$(${GIT} log HEAD~..HEAD --format= --name-only $(cat .clang-format-scope) | grep "\.[ch]$") # nothing to do if [ -z "$files_to_check" ]; then @@ -19,9 +26,9 @@ if [ -z "$files_to_check" ]; then fi if [ $(clang-format $files_to_check | wc -l) -gt 0 ]; then - if [ "$(git diff --no-prefix HEAD~..HEAD -- $files_to_check | clang-format-diff)" != "" ]; then + if [ "$(${GIT} diff --no-prefix HEAD~..HEAD -- $files_to_check | clang-format-diff)" != "" ]; then echo "Coding style mismatch. The following patch fixes it:" - git diff --no-prefix HEAD~..HEAD -- $files_to_check | clang-format-diff + ${GIT} diff --no-prefix HEAD~..HEAD -- $files_to_check | clang-format-diff exit 0 fi fi diff --git a/util/lint/lint-stable-023-filenames b/util/lint/lint-stable-023-filenames index 8b519a80dd..c107deda7b 100755 --- a/util/lint/lint-stable-023-filenames +++ b/util/lint/lint-stable-023-filenames @@ -4,11 +4,17 @@ # DESCR: Check for illegal characters in filename -LC_ALL=C export LC_ALL +LINTDIR="$( + cd -- "$(dirname "$0")" > /dev/null 2>&1 || return + pwd -P +)" -# Skip check if git isn't available -if [ -n "$(command -v git)" ] && \ - [ "$(git rev-parse --is-inside-work-tree 2>/dev/null)" = "true" ] -then - git ls-files | grep "[^A-Za-z0-9/_\.-]" +# shellcheck source=helper_functions.sh +. "${LINTDIR}/helper_functions.sh" + +# Exit if the code isn't in a git repo +if [ "${IN_GIT_TREE}" -eq 0 ]; then + exit 0 fi + +${FIND_FILES} | grep "[^A-Za-z0-9/_\.-]" diff --git a/util/lint/lint-stable-026-line-endings b/util/lint/lint-stable-026-line-endings index ec895d144f..d1b8ed3c90 100755 --- a/util/lint/lint-stable-026-line-endings +++ b/util/lint/lint-stable-026-line-endings @@ -4,17 +4,14 @@ # DESCR: Verify that files don't contain windows line endings -LC_ALL=C export LC_ALL +LINTDIR="$( + cd -- "$(dirname "$0")" > /dev/null 2>&1 || return + pwd -P +)" -EXCLUDE='^3rdparty/\|^payloads/external\|^.git' +# shellcheck source=helper_functions.sh +. "${LINTDIR}/helper_functions.sh" -# Use git grep if the code is in a git repo, otherwise use grep. -if [ -n "$(command -v git)" ] && \ - [ "$(git rev-parse --is-inside-work-tree 2>/dev/null)" = "true" ] -then - GREP_FILES="git grep -IlP" -else - GREP_FILES="grep -rIlP" -fi +EXCLUDE='^3rdparty/\|^payloads/external\|^.git\|build\|util/crossgcc/xgcc' -${GREP_FILES} "\r$" | grep -v "$EXCLUDE" +${GREP_FILES} -IlP "\r$" | grep -v "$EXCLUDE" |