From d2bce6d036b38893b8d46fb3cd97fc8183967c34 Mon Sep 17 00:00:00 2001 From: "Gabriel A. Devenyi" Date: Thu, 9 Jul 2020 23:04:49 -0400 Subject: [PATCH] Add Makefile command to run checkbashisms on all /bin/sh scripts Based on the shellcheck make target, add a target which checks for violations of POSIX standards for shell scripts Reviewed-by: Brian Behlendorf Signed-off-by: Gabriel A. Devenyi Closes #10513 --- Makefile.am | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/Makefile.am b/Makefile.am index 74403019a8..45474daa43 100644 --- a/Makefile.am +++ b/Makefile.am @@ -114,7 +114,7 @@ endif endif PHONY += codecheck -codecheck: cstyle shellcheck flake8 mancheck testscheck vcscheck +codecheck: cstyle shellcheck checkbashisms flake8 mancheck testscheck vcscheck PHONY += checkstyle checkstyle: codecheck commitcheck @@ -146,6 +146,22 @@ shellcheck: echo "skipping shellcheck because shellcheck is not installed"; \ fi +PHONY += checkbashisms +checkbashisms: + @if type checkbashisms > /dev/null 2>&1; then \ + checkbashisms -n -p -x \ + $$(find ${top_srcdir} \ + -name '.git' -prune \ + -o -name 'build' -prune \ + -o -name 'tests' -prune \ + -o -name 'config' -prune \ + -o -type f ! -name 'config*' \ + ! -name 'libtool' \ + -exec bash -c 'awk "NR==1 && /\#\!.*bin\/sh.*/ {print FILENAME;}" "{}"' \;); \ + else \ + echo "skipping checkbashisms because checkbashisms is not installed"; \ + fi + PHONY += mancheck mancheck: @if type mandoc > /dev/null 2>&1; then \