From 748575abb2dbd93a7f4c87ca10887b9d72ac6a37 Mon Sep 17 00:00:00 2001 From: Felix Singer Date: Mon, 28 Nov 2022 16:22:06 +0100 Subject: 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. Change-Id: I03f1827803f8492d60a0a44174d5822c2265bfcb Signed-off-by: Felix Singer Reviewed-on: https://review.coreboot.org/c/flashrom/+/70079 Tested-by: build bot (Jenkins) Reviewed-by: Edward O'Callaghan --- test_build.sh | 7 +++++ util/lint/helper_functions.sh | 45 +++++++++++++++++++++++++++++++ util/lint/lint-extended-020-signed-off-by | 23 ++++++++++++++++ 3 files changed, 75 insertions(+) create mode 100644 util/lint/helper_functions.sh create mode 100755 util/lint/lint-extended-020-signed-off-by diff --git a/test_build.sh b/test_build.sh index 69d3a347..813d0b95 100755 --- a/test_build.sh +++ b/test_build.sh @@ -26,6 +26,11 @@ if [ "$(basename "${CC}")" = "ccc-analyzer" ] || [ -n "${COVERITY_OUTPUT}" ]; th 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 @@ build_meson () { } +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 00000000..7abdab86 --- /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 00000000..ef62a45a --- /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 -- cgit v1.2.3