scripts: add wrapper script for checkpatch
Add auxilary wrapper for convenient check of commit/
changes in staging area/multiple commits with checkpatch.pl
Put common functions for .travis.yml and checkpatch.sh into a
separate file
Signed-off-by: Igor Opaniuk <igor.opaniuk@linaro.org>
Reviewed-by: Jerome Forissier <jerome.forissier@linaro.org>
diff --git a/.travis.yml b/.travis.yml
index a0be588..123cdeb 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -87,13 +87,8 @@
- git fetch https://github.com/OP-TEE/optee_os --tags
- unset CC
- # checkpatch.pl will ignore the following paths
- - CHECKPATCH_IGNORE=$(echo core/lib/lib{fdt,tomcrypt} lib/lib{png,utils,zlib})
- - _CP_EXCL=$(for p in $CHECKPATCH_IGNORE; do echo ":(exclude)$p" ; done)
- - function _checkpatch() { $DST_KERNEL/scripts/checkpatch.pl --quiet --ignore FILE_PATH_CHANGES --ignore GERRIT_CHANGE_ID --no-tree -; }
- - function checkpatch() { printf "Checking commit:\n "; $HOME/git-2.9.3/git show --oneline --no-patch $1; $HOME/git-2.9.3/git format-patch -1 $1 --stdout -- . $_CP_EXCL | _checkpatch; }
- - function checkdiff() { echo "Checking squashed commits (diff $1...$2)"; $HOME/git-2.9.3/git diff $1...$2 -- . $_CP_EXCL | _checkpatch; }
-
+ - export PATH=$HOME/git-2.9.3/:$DST_KERNEL/scripts/:$PATH
+ - source ${HOME}/optee_repo/optee_os/scripts/checkpatch_inc.sh
# Several compilation options are checked
script:
# Run checkpatch.pl on:
diff --git a/scripts/checkpatch.sh b/scripts/checkpatch.sh
new file mode 100755
index 0000000..94d8c4f
--- /dev/null
+++ b/scripts/checkpatch.sh
@@ -0,0 +1,42 @@
+#!/bin/bash
+
+DIR="${BASH_SOURCE%/*}"
+
+source "$DIR/checkpatch_inc.sh"
+
+hash $CHECKPATCH 2>/dev/null ||
+ { echo >&2 "Could not find checkpatch.pl, aborting"; exit 1; }
+
+usage() {
+ SCR=$(basename "$0")
+ echo "Usage: $SCR [--working] Check working area"
+ echo " $SCR <commit> Check specific commit"
+ echo " $SCR --diff <commit1> <commit2> Check diff commit1...commit2"
+ echo " $SCR --cached Check staging area"
+ echo " $SCR --help This help"
+ exit 1
+}
+
+op=${1:---working}
+case "$op" in
+ --cached)
+ echo "Checking staging area: "
+ checkstaging
+ ;;
+ --diff)
+ echo "Checking diff (diff $1...$2)"
+ checkdiff "$2" "$3"
+ ;;
+ --working)
+ echo "Checking working area: "
+ checkworking
+ ;;
+ --help|-h)
+ usage
+ ;;
+ *)
+ echo "Checking commit: "
+ checkpatch "$1"
+ ;;
+
+esac
diff --git a/scripts/checkpatch_inc.sh b/scripts/checkpatch_inc.sh
new file mode 100644
index 0000000..d88234e
--- /dev/null
+++ b/scripts/checkpatch_inc.sh
@@ -0,0 +1,29 @@
+#!/bin/bash
+
+CHECKPATCH=checkpatch.pl
+# checkpatch.pl will ignore the following paths
+CHECKPATCH_IGNORE=$(echo core/lib/lib{fdt,tomcrypt} lib/lib{png,utils,zlib})
+_CP_EXCL=$(for p in $CHECKPATCH_IGNORE; do echo ":(exclude)$p" ; done)
+
+function _checkpatch() {
+ $CHECKPATCH --quiet --ignore FILE_PATH_CHANGES \
+ --ignore GERRIT_CHANGE_ID --no-tree -
+}
+
+function checkpatch() {
+ git show --oneline --no-patch $1
+ git format-patch -1 $1 --stdout -- $_CP_EXCL . | _checkpatch
+}
+
+function checkstaging() {
+ git diff --cached -- . $_CP_EXCL | _checkpatch
+}
+
+function checkworking() {
+ git diff -- . $_CP_EXCL | _checkpatch
+}
+
+function checkdiff() {
+ git diff $1...$2 -- . $_CP_EXCL | _checkpatch
+}
+