#!/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. # # 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