summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDave Barach <dave@barachs.net>2017-01-04 17:24:32 -0500
committerDamjan Marion <dmarion.lists@gmail.com>2017-01-31 20:40:11 +0000
commit3ad7704fbb273440d649b96478e8e302d1285170 (patch)
tree477677a2dcbac3d8257faa2eaebc5e08a09b3524
parente1ae29a3f7a7bd79bb266803982fd0259b040922 (diff)
Prep work for Coverity upload processing via Jenkins
Change-Id: I2575d780d19e12ddf8a77e5596e5d7cc3dbf4233 Signed-off-by: Dave Barach <dave@barachs.net>
-rw-r--r--Makefile4
-rw-r--r--build-data/platforms/vpp.mk6
-rwxr-xr-xbuild-root/scripts/coverity-build.sh53
-rw-r--r--src/vppinfra/error.h10
4 files changed, 73 insertions, 0 deletions
diff --git a/Makefile b/Makefile
index 2af634033d3..1a01846b6dd 100644
--- a/Makefile
+++ b/Makefile
@@ -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 */
/*