]> git.proxmox.com Git - mirror_zfs.git/commitdiff
Add Makefile command to run checkbashisms on all /bin/sh scripts
authorGabriel A. Devenyi <gdevenyi@gmail.com>
Fri, 10 Jul 2020 03:04:49 +0000 (23:04 -0400)
committerGitHub <noreply@github.com>
Fri, 10 Jul 2020 03:04:49 +0000 (20:04 -0700)
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

Makefile.am

index 74403019a8be51c6af33bc1711b094354fd43f5d..45474daa43034fa3c3f5bd86e3ab7f385884e90b 100644 (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 \