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 <behlendorf1@llnl.gov>
Signed-off-by: Gabriel A. Devenyi <gdevenyi@gmail.com>
Closes #10513
This commit is contained in:
Gabriel A. Devenyi 2020-07-09 23:04:49 -04:00 committed by GitHub
parent a2ec738c75
commit d2bce6d036
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -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 \