Prep work for Coverity upload processing via Jenkins 69/4569/4
authorDave Barach <dave@barachs.net>
Wed, 4 Jan 2017 22:24:32 +0000 (17:24 -0500)
committerDamjan Marion <dmarion.lists@gmail.com>
Tue, 31 Jan 2017 20:40:11 +0000 (20:40 +0000)
Change-Id: I2575d780d19e12ddf8a77e5596e5d7cc3dbf4233
Signed-off-by: Dave Barach <dave@barachs.net>
Makefile
build-data/platforms/vpp.mk
build-root/scripts/coverity-build.sh [new file with mode: 0755]
src/vppinfra/error.h

index 2af6340..1a01846 100644 (file)
--- 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)
 
index 5b20058..ee30763 100644 (file)
@@ -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 (executable)
index 0000000..6e2c405
--- /dev/null
@@ -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!
index 63d73af..e51f938 100644 (file)
@@ -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 */
 
 /*