summaryrefslogtreecommitdiffstats
path: root/src/spdk/.githooks/pre-push
diff options
context:
space:
mode:
Diffstat (limited to 'src/spdk/.githooks/pre-push')
-rwxr-xr-xsrc/spdk/.githooks/pre-push138
1 files changed, 138 insertions, 0 deletions
diff --git a/src/spdk/.githooks/pre-push b/src/spdk/.githooks/pre-push
new file mode 100755
index 00000000..cb9efb5b
--- /dev/null
+++ b/src/spdk/.githooks/pre-push
@@ -0,0 +1,138 @@
+#!/bin/sh
+# Verify what is about to be pushed. Called by "git
+# push" after it has checked the remote status, but before anything has been
+# pushed. If this script exits with a non-zero status nothing will be pushed.
+#
+# This hook is called with the following parameters:
+#
+# $1 -- Name of the remote to which the push is being done
+# $2 -- URL to which the push is being done
+#
+# If pushing without using a named remote those arguments will be equal.
+
+# <local ref> <local sha1> <remote ref> <remote sha1>
+#
+
+rc=0
+SYSTEM=`uname -s`
+
+# Redirect output to stderr.
+exec 1>&2
+
+if [ "$SYSTEM" = "FreeBSD" ]; then
+ MAKE="gmake MAKE=gmake -j ${nproc}"
+ COMP="clang"
+else
+ MAKE="make -j ${nproc}"
+ COMP="gcc"
+fi
+
+echo "Running make with $COMP ..."
+echo "${MAKE} clean " > make.log
+$MAKE clean >> make.log 2>&1
+echo "${MAKE} CONFIG_DEBUG=n CONFIG_WERROR=y " >> make.log
+$MAKE CONFIG_DEBUG=n CONFIG_WERROR=y >> make.log 2>&1
+rc=$?
+if [ $rc -ne 0 ]; then
+ tail -20 make.log
+ echo ""
+ echo "ERROR make returned errors!"
+ echo "ERROR Fix the problem and use 'git commit' to update your changes."
+ echo "ERROR See `pwd`/make.log for more information."
+ echo ""
+ exit $rc
+fi
+
+echo "${MAKE} SKIP_DPDK_BUILD=1 clean " >> make.log
+$MAKE clean SKIP_DPDK_BUILD=1 >> make.log 2>&1
+echo "${MAKE} CONFIG_DEBUG=y CONFIG_WERROR=y SKIP_DPDK_BUILD=1 " >> make.log
+$MAKE CONFIG_DEBUG=y CONFIG_WERROR=y SKIP_DPDK_BUILD=1 >> make.log 2>&1
+rc=$?
+if [ $rc -ne 0 ]; then
+ tail -20 make.log
+ echo ""
+ echo "ERROR make returned errors!"
+ echo "ERROR Fix the problem and use 'git commit' to update your changes."
+ echo "ERROR See `pwd`/make.log for more information."
+ echo ""
+ exit $rc
+fi
+
+echo "Running unittest.sh ..."
+echo "./test/unit/unittest.sh" >> make.log
+"./test/unit/unittest.sh" >> make.log 2>&1
+rc=$?
+if [ $rc -ne 0 ]; then
+ tail -20 make.log
+ echo ""
+ echo "ERROR unittest returned errors!"
+ echo "ERROR Fix the problem and use 'git commit' to update your changes."
+ echo "ERROR See `pwd`/make.log for more information."
+ echo ""
+ exit $rc
+fi
+
+echo "$MAKE clean " >> make.log
+$MAKE clean >> make.log 2>&1
+
+if [ "$SYSTEM" = "FreeBSD" ]; then
+ echo
+ echo "Pushing to $1 $2"
+ exit $rc
+fi
+
+if ! hash clang 2>/dev/null; then
+ echo "clang not found; skipping the clang tests"
+ echo
+ echo "Pushing to $1 $2"
+ exit $rc
+fi
+
+echo "Running make with clang ..."
+echo "make CONFIG_DEBUG=n CONFIG_WERROR=y CC=clang CXX=clang++ " >> make.log
+$MAKE CONFIG_DEBUG=n CONFIG_WERROR=y CC=clang CXX=clang++ >> make.log 2>&1
+rc=$?
+if [ $rc -ne 0 ]; then
+tail -20 make.log
+ echo ""
+ echo "ERROR make CC=clang CXX=clang++ returned errors!"
+ echo "ERROR Fix the problem and use 'git commit' to update your changes."
+ echo "ERROR See `pwd`/make.log for more information."
+ echo ""
+ exit $rc
+fi
+
+echo "make clean CC=clang CXX=clang++ SKIP_DPDK_BUILD=1 " >> make.log
+$MAKE clean CC=clang CXX=clang++ SKIP_DPDK_BUILD=1 >> make.log 2>&1
+echo "make CONFIG_DEBUG=y CONFIG_WERROR=y CC=clang CXX=clang++ SKIP_DPDK_BUILD=1 " >> make.log
+$MAKE CONFIG_DEBUG=y CONFIG_WERROR=y CC=clang CXX=clang++ SKIP_DPDK_BUILD=1 >> make.log 2>&1
+rc=$?
+if [ $rc -ne 0 ]; then
+ tail -20 make.log
+ echo ""
+ echo "ERROR make CC=clang CXX=clang++ returned errors!"
+ echo "ERROR Fix the problem and use 'git commit' to update your changes."
+ echo "ERROR See `pwd`/make.log for more information."
+ echo ""
+ exit $rc
+fi
+
+echo "Running unittest.sh ..."
+echo "./test/unit/unittest.sh" >> make.log
+"./test/unit/unittest.sh" >> make.log 2>&1
+rc=$?
+if [ $rc -ne 0 ]; then
+ tail -20 make.log
+ echo ""
+ echo "ERROR unittest returned errors!"
+ echo "ERROR Fix the problem and use 'git commit' to update your changes."
+ echo "ERROR See `pwd`/make.log for more information."
+ echo ""
+ exit $rc
+fi
+
+${MAKE} clean CC=clang CXX=clang++ 2> /dev/null
+
+echo "Pushing to $1 $2"
+
+exit $rc