Relocate Coverity scripts

- Move Coverity scripts from build-root/scripts to extras/scripts
- Update coverity-build with new path and add some comments

Change-Id: I1be8069fb574aaacbac9b7f2c9c80b9aad1790ec
Signed-off-by: Chris Luke <chrisy@flirble.org>
diff --git a/extras/scripts/coverity-blame b/extras/scripts/coverity-blame
new file mode 100755
index 0000000..8775ea4
--- /dev/null
+++ b/extras/scripts/coverity-blame
@@ -0,0 +1,36 @@
+#!/bin/sh
+
+# Read coverity email on stdin
+# whenever we find a filename & line number reference, go git-blame it
+
+file=
+start=
+end=
+
+while read line; do
+	if echo "$line" | grep -q '^/.*: '; then
+		echo "$line"
+		file=$(echo "$line" | cut -d: -f1)
+	elif echo "$line" | grep -q '^[*]'; then
+		echo "$line"
+		file=
+		start=
+		end=
+	elif echo "$line" | grep -q '^[0-9][0-9]*'; then
+		num=$(echo "$line" | awk '{print $1}')
+		[ -z "$start" ] && start=$num
+		#git blame -L "$num,+1" ".$file" | cat
+	elif [ -z "$line" ]; then
+		if [ "$start" -a "$num" -a "$file" ]; then
+			end=$num
+			git blame --date=short -L "$start,$end" ".$file" | cat
+			start=
+			end=
+			num=
+		else
+			echo "$line"
+		fi
+	else
+		echo "$line"
+	fi
+done
diff --git a/extras/scripts/coverity-build b/extras/scripts/coverity-build
new file mode 100755
index 0000000..81680f0
--- /dev/null
+++ b/extras/scripts/coverity-build
@@ -0,0 +1,70 @@
+#!/bin/bash
+
+# FD.io VPP Coverity build script
+#
+# Builds VPP with the Coverity wrapper and if successful submits
+# it to the Coverity scan service for processing.
+#
+# Several environment variables are needed:
+#
+# COVERITY_TOKEN    The Coverity Scan API token for this project
+# COVERITY_TOOLS    The location of the Coverity tools
+#
+# The coverity tools can be fetched with:
+#   wget https://scan.coverity.com/download/linux64 \
+#     --post-data "token=${COVERITY_TOKEN}&project=fd.io+VPP" \
+#     -O coverity_tool.tgz
+
+set -ex
+
+token=${COVERITY_TOKEN}
+email=vpp-committers@lists.fd.io
+project="fd.io VPP"
+project_encoded="fd.io+VPP"
+url=https://scan.coverity.com
+
+# Cosmetic labels for the Coverity build logs
+export COV_HOST=$(hostname -f)
+export COV_USER=vpp
+
+# Work out where the root and build-root are
+script_dir=$(readlink -f $(dirname $0))
+root_dir=$(readlink -f "${script_dir}/../..")
+build_dir=$(readlink -f "${script_dir}/../../build-root")
+
+# Location for Coverity things
+covdir="${build_dir}/cov-int"
+COVERITY_TOOLS="${COVERITY_TOOLS-/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 "${root_dir}"
+"${COVERITY_TOOLS}/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!