diff options
-rw-r--r-- | Makefile | 4 | ||||
-rw-r--r-- | build-data/platforms/vpp.mk | 6 | ||||
-rwxr-xr-x | build-root/scripts/coverity-build.sh | 53 | ||||
-rw-r--r-- | src/vppinfra/error.h | 10 |
4 files changed, 73 insertions, 0 deletions
@@ -75,6 +75,7 @@ help: @echo " wipe-release - wipe all products of release build " @echo " build - build debug binaries" @echo " build-release - build release binaries" + @echo " build-coverity - build coverity artifacts" @echo " rebuild - wipe and build debug binares" @echo " rebuild-release - wipe and build release binares" @echo " run - run debug binary" @@ -287,6 +288,9 @@ run-release: debug: $(call run, $(BR)/install-$(PLATFORM)_debug-native,$(GDB) $(GDB_ARGS) --args) +build-coverity: + $(call make,$(PLATFORM)_coverity,install-packages) + debug-release: $(call run, $(BR)/install-$(PLATFORM)-native,$(GDB) $(GDB_ARGS) --args) diff --git a/build-data/platforms/vpp.mk b/build-data/platforms/vpp.mk index 5b2005870e1..ee30763986f 100644 --- a/build-data/platforms/vpp.mk +++ b/build-data/platforms/vpp.mk @@ -70,3 +70,9 @@ vpp_gcov_TAG_CFLAGS = -g -O0 -DCLIB_DEBUG -march=$(MARCH) \ -fPIC -Werror -fprofile-arcs -ftest-coverage vpp_gcov_TAG_LDFLAGS = -g -O0 -DCLIB_DEBUG -march=$(MARCH) \ -fPIC -Werror -coverage + +vpp_coverity_TAG_CFLAGS = -g -O2 -march=$(MARCH) -mtune=$(MTUNE) \ + -fPIC -Werror -D__COVERITY__ +vpp_coverity_TAG_LDFLAGS = -g -O2 -march=$(MARCH) -mtune=$(MTUNE) \ + -fPIC -Werror -D__COVERITY__ + diff --git a/build-root/scripts/coverity-build.sh b/build-root/scripts/coverity-build.sh new file mode 100755 index 00000000000..6e2c405a16a --- /dev/null +++ b/build-root/scripts/coverity-build.sh @@ -0,0 +1,53 @@ +#!/bin/bash + +set -ex + +token=${COVERITY_TOKEN} +email=dbarach@cisco.com +project="fd.io VPP" +project_encoded="fd.io+VPP" +url=https://scan.coverity.com + +export COV_HOST=$(hostname -f) +export COV_USER=vpp + +# Location of various directories + +# run script from .../build-root + +build_dir=`pwd` +covdir="${build_dir}/cov-int" +COVTOOLS="${COVTOOLS-/scratch/cov-analysis-latest}" + +# Before we run the build, check that we can submit one +check=$(curl -s --form project="${project}" \ + --form token="${token}" "${url}/api/upload_permitted") +if [ "${check}" = "Access denied" ]; then + echo "Bad token or project name." + exit 1 +fi +if [ "${check}" != '{"upload_permitted":true}' ]; then + echo "Upload not permitted; stop now..." + exit 1 +fi + +version=$(git describe) + +# Run the build +cd .. +"${COVTOOLS}/bin/cov-build" --dir "${covdir}" make bootstrap build-coverity +cd ${build_dir} + +# Tar the build artifacts that scan wants +tar -czf fd.io-vpp.tgz "$(basename ${covdir})" +# rm -rf "${covdir}" + +# Submit the build +echo curl --form token="${token}" \ + --form email="${email}" \ + --form file=@fd.io-vpp.tgz \ + --form version="${version}" \ + --form description="master:${version}" \ + "${url}/builds?project=${project_encoded}" + +# All done! diff --git a/src/vppinfra/error.h b/src/vppinfra/error.h index 63d73af36c7..e51f938e797 100644 --- a/src/vppinfra/error.h +++ b/src/vppinfra/error.h @@ -190,6 +190,16 @@ do { \ _error_assert; \ }) +/* + * If we're running under Coverity, don't die on + * failed static assertions. + */ +#ifdef __COVERITY__ +#ifndef _Static_assert +#define _Static_assert(x,y) +#endif +#endif + #endif /* included_error_h */ /* |