summaryrefslogtreecommitdiff
path: root/util/lint
diff options
context:
space:
mode:
authorMartin Roth <martin@coreboot.org>2022-06-03 00:06:57 -0600
committerMartin L Roth <gaumless@gmail.com>2022-09-30 19:19:53 +0000
commitd81debd9467f7e0d5a255ed7f6b5f1916c613b77 (patch)
tree224623fc3af10180d652c7c0d7c39925e74e3763 /util/lint
parent7726a7f272965d9279e4c8008b893751203aa304 (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')
-rw-r--r--util/lint/helper_functions.sh44
-rwxr-xr-xutil/lint/lint-000-license-headers12
-rwxr-xr-xutil/lint/lint-007-checkpatch10
-rwxr-xr-xutil/lint/lint-008-kconfig15
-rwxr-xr-xutil/lint/lint-014-qualified-types19
-rwxr-xr-xutil/lint/lint-extended-015-final-newlines19
-rwxr-xr-xutil/lint/lint-extended-020-signed-off-by23
-rwxr-xr-xutil/lint/lint-stable-003-whitespace12
-rwxr-xr-xutil/lint/lint-stable-004-style-labels15
-rwxr-xr-xutil/lint/lint-stable-005-board-status12
-rwxr-xr-xutil/lint/lint-stable-008-kconfig15
-rwxr-xr-xutil/lint/lint-stable-009-old-licenses13
-rwxr-xr-xutil/lint/lint-stable-010-asm-syntax11
-rwxr-xr-xutil/lint/lint-stable-012-executable-bit16
-rwxr-xr-xutil/lint/lint-stable-013-site-local24
-rwxr-xr-xutil/lint/lint-stable-016-non-ascii18
-rwxr-xr-xutil/lint/lint-stable-017-configs19
-rwxr-xr-xutil/lint/lint-stable-018-symlinks30
-rwxr-xr-xutil/lint/lint-stable-019-header-files19
-rwxr-xr-xutil/lint/lint-stable-021-coreboot-lowercase23
-rwxr-xr-xutil/lint/lint-stable-022-clang-format19
-rwxr-xr-xutil/lint/lint-stable-023-filenames18
-rwxr-xr-xutil/lint/lint-stable-026-line-endings19
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"