Felix Singer has uploaded this change for review. ( https://review.coreboot.org/c/flashrom/+/70243 )
Change subject: util/lint: Introduce linter for git sign-off-by line ......................................................................
util/lint: Introduce linter for git sign-off-by line
For compliance and to check if the commit message matches the development guidelines, add a linter checking for the sign-off-by line in the commit message. Also, hook it up to the test_build.sh script which is used for CI builds.
These scripts were copied from the coreboot repository and were adjusted so that they work for flashrom.
Original-Signed-off-by: Felix Singer felixsinger@posteo.net Original-Reviewed-on: https://review.coreboot.org/c/flashrom/+/70079 Original-Tested-by: build bot (Jenkins) no-reply@coreboot.org Original-Reviewed-by: Edward O'Callaghan quasisec@chromium.org
Change-Id: I03f1827803f8492d60a0a44174d5822c2265bfcb Signed-off-by: Felix Singer felixsinger@posteo.net --- M test_build.sh A util/lint/helper_functions.sh A util/lint/lint-extended-020-signed-off-by 3 files changed, 98 insertions(+), 0 deletions(-)
git pull ssh://review.coreboot.org:29418/flashrom refs/changes/43/70243/1
diff --git a/test_build.sh b/test_build.sh index 69d3a34..813d0b9 100755 --- a/test_build.sh +++ b/test_build.sh @@ -26,6 +26,11 @@ fi
+run_linter() { + ./util/lint/lint-extended-020-signed-off-by +} + + build_make () { make clean make -j $(nproc) CONFIG_EVERYTHING=yes @@ -67,5 +72,7 @@ }
+run_linter + build_make build_meson diff --git a/util/lint/helper_functions.sh b/util/lint/helper_functions.sh new file mode 100644 index 0000000..7abdab8 --- /dev/null +++ b/util/lint/helper_functions.sh @@ -0,0 +1,45 @@ +#!/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 " + FINDOPTS="-type f" +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-extended-020-signed-off-by b/util/lint/lint-extended-020-signed-off-by new file mode 100755 index 0000000..ef62a45 --- /dev/null +++ b/util/lint/lint-extended-020-signed-off-by @@ -0,0 +1,23 @@ +#!/usr/bin/env sh +# SPDX-License-Identifier: GPL-2.0-or-later +# +# 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 ! ${GIT} log -n 1 | grep -q '[[:space:]]+Signed-off-by: '; then + echo "No Signed-off-by line in commit message" + exit 1 +fi