From patchwork Tue Jun 13 15:54:48 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Peter Maydell X-Patchwork-Id: 105377 Delivered-To: patches@linaro.org Received: by 10.140.91.77 with SMTP id y71csp476061qgd; Tue, 13 Jun 2017 08:54:54 -0700 (PDT) X-Received: by 10.46.78.17 with SMTP id c17mr226031ljb.43.1497369294184; Tue, 13 Jun 2017 08:54:54 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1497369294; cv=none; d=google.com; s=arc-20160816; b=QLWAzS9+ILPht4FNEjAF3PYtSSAF2G2jmg65rdYl2QAMlc+ohSrS5KoRQTfBZlW/04 8j29l/yemSx0Fp94ij36XdEUP1/Q14JIXjW+aO5FPR24UtrhaOT0XUZcYBFBj8qGLpxe wyzriR8O6ltAfREZYCQgGSq4GBpYuiZXkn2GbptHMK4whxS1Lldf6cbrjnm3inPIVKMA 00YXFsBargBnqPUQY1FUFvFTONL1Ohlqu96nT7ygMqBw/YssNMNROH3MuH264/YD9xR8 aYLKUUZqS9kFQxNGFObh6dy9vRCDje2WhMB/nbndK2zSj0aemRzmi9DPmyKRBSufVWdk n3oA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=references:in-reply-to:message-id:date:subject:cc:to:from :arc-authentication-results; bh=ptw5V2+LI4kDfab95pdk56tuBdO6FkAEJ3qm0Qh3RBw=; b=PnKw7tysk5y/pvb7ao1Ebqfmol2E45EVHO7qIJ6uVORGUQIUwZW4woDr6dAANXYu/Z sZ7YZKJlt9JCLueSKsN8uPZjtxYTwCDKp2T81VAuRPPvGXfyTaOoPE773SZf/dX58R3y GR8dj9vgEKU82czVau5PdxLDk7p0Qk+dbtPNRJlLDgu5xclMgLqogSsB7BcIfH20GhTX cD6m7BAsxOzARN/qo8mtyA1IEAaFiNS3kMY0osEWe2hUEEJP6g4FkiKWpHdMV4/Tuus3 kh1w9q52MHl5jYFvFnZukzpsQhLJOAHul6oLx56ze9owXbgnG/MDWdSopLS0MyNFwqL2 4MZg== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of pm215@archaic.org.uk designates 2001:8b0:1d0::2 as permitted sender) smtp.mailfrom=pm215@archaic.org.uk; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from orth.archaic.org.uk (orth.archaic.org.uk. [2001:8b0:1d0::2]) by mx.google.com with ESMTPS id x202si163236lff.399.2017.06.13.08.54.53 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 13 Jun 2017 08:54:53 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of pm215@archaic.org.uk designates 2001:8b0:1d0::2 as permitted sender) client-ip=2001:8b0:1d0::2; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of pm215@archaic.org.uk designates 2001:8b0:1d0::2 as permitted sender) smtp.mailfrom=pm215@archaic.org.uk; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: from pm215 by orth.archaic.org.uk with local (Exim 4.84_2) (envelope-from ) id 1dKo9b-0001AO-QO; Tue, 13 Jun 2017 16:54:51 +0100 From: Peter Maydell To: qemu-devel@nongnu.org Cc: patches@linaro.org, =?utf-8?q?Alex_Benn=C3=A9e?= , Paolo Bonzini , Markus Armbruster Subject: [PATCH 1/3] travis: install more library dependencies Date: Tue, 13 Jun 2017 16:54:48 +0100 Message-Id: <1497369290-20401-2-git-send-email-peter.maydell@linaro.org> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1497369290-20401-1-git-send-email-peter.maydell@linaro.org> References: <1497369290-20401-1-git-send-email-peter.maydell@linaro.org> Update the travis list of library packages to install so that our build tests cover more of our code base. Signed-off-by: Peter Maydell --- .travis.yml | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) -- 2.7.4 Tested-by: Philippe Mathieu-Daudé Reviewed-by: Philippe Mathieu-Daudé Reviewed-by: Alex Bennée diff --git a/.travis.yml b/.travis.yml index 27a2d9c..26dabb6 100644 --- a/.travis.yml +++ b/.travis.yml @@ -11,28 +11,37 @@ addons: # Build dependencies - libaio-dev - libattr1-dev + - libbluetooth-dev - libbrlapi-dev + - libcap-dev - libcap-ng-dev - libgnutls-dev - libgtk-3-dev - libiscsi-dev - liblttng-ust-dev + - liblzo2-dev - libnfs-dev - libncurses5-dev - libnss3-dev - libpixman-1-dev - libpng12-dev - librados-dev + - librdmacm-dev - libsdl1.2-dev - libseccomp-dev + - libsnappy-dev - libspice-protocol-dev - libspice-server-dev - libssh2-1-dev - liburcu-dev - libusb-1.0-0-dev + - libvde-dev - libvte-2.90-dev + - libxen-dev + - nettle-dev - sparse - uuid-dev + - xfslibs-dev # The channel name "irc.oftc.net#qemu" is encrypted against qemu/qemu # to prevent IRC notifications from forks. This was created using: @@ -162,28 +171,37 @@ matrix: # Build dependencies - libaio-dev - libattr1-dev + - libbluetooth-dev - libbrlapi-dev + - libcap-dev - libcap-ng-dev - libgnutls-dev - libgtk-3-dev - libiscsi-dev - liblttng-ust-dev + - liblzo2-dev - libnfs-dev - libncurses5-dev - libnss3-dev - libpixman-1-dev - libpng12-dev - librados-dev + - librdmacm-dev - libsdl1.2-dev - libseccomp-dev + - libsnappy-dev - libspice-protocol-dev - libspice-server-dev - libssh2-1-dev - liburcu-dev - libusb-1.0-0-dev + - libvde-dev - libvte-2.90-dev + - libxen-dev + - nettle-dev - sparse - uuid-dev + - xfslibs-dev language: generic compiler: none env: From patchwork Tue Jun 13 15:54:49 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Peter Maydell X-Patchwork-Id: 105379 Delivered-To: patches@linaro.org Received: by 10.140.91.77 with SMTP id y71csp476079qgd; Tue, 13 Jun 2017 08:54:58 -0700 (PDT) X-Received: by 10.84.224.66 with SMTP id a2mr539172plt.78.1497369298312; Tue, 13 Jun 2017 08:54:58 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1497369298; cv=none; d=google.com; s=arc-20160816; b=cxT6uOQovx92RtJ0moEJzrqnPCAdErtxA0OaSofQC68DLB6Eucd6Kh04195zykx7jZ qB7LDqlmjxPn6ojXCLPUh5atIKDkpZ8gv/XCKL8bPq3P+SF1Dpy0/+Q7w/k0vNK/tmVX nQi/aLiLJppDMzcX5QpmPX6e2ShoTPCA+3v7OSJkfh1KHAamuYpJt5pvAjr/QRBtiBSE dGnhYakBj+Htg7gGWwwMu5/6mbmt3QP3Iqcp8T1ngFp/Dp2q9lcyumi6y0Sp6hlSoXXw rfPwiR9Vh4yFmpkTlgEImQRYvtwgwiBPa4bMxubls8lx97Frs7exdfFnyGk3PLBx/Ae/ N7KA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=references:in-reply-to:message-id:date:subject:cc:to:from :arc-authentication-results; bh=dsypL5vNI2SQYtggG4baG4hz243bXu4SH6FwgvwjF0c=; b=nijZlymoc2/Y6LQiCWC1dCEwcm/xGXv1gLVmkdnLmNazLXiLVUXDhLmAn4pvm+wfl2 e8QARjyGeF38HWm/Ts1VuVMwxjVsjv0q/4mHhCSxo4037zLxFYqm+m9DZTKnFJigLdpY J5bll30AU9MZfWS3JoRQcH+oB4wH+3GM/4D6ZdXt7U3kwgKr+rbpoAVnL9cLKb8u7Z17 +34RKWVUHZd0DCiZWPIDxNLM0jktP89cIS65YFu8EV+lNqs6ETWplIg16tGXW9keSj18 86qpbwYmMVbz9PXvKCCtWB/blxCNxsWiIJQkpv4BpLK2fJgvgpHDKfyuelex36rDtNrr d5Bg== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of pm215@archaic.org.uk designates 2001:8b0:1d0::2 as permitted sender) smtp.mailfrom=pm215@archaic.org.uk; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from orth.archaic.org.uk (orth.archaic.org.uk. [2001:8b0:1d0::2]) by mx.google.com with ESMTPS id s6si245212pfj.114.2017.06.13.08.54.56 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 13 Jun 2017 08:54:57 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of pm215@archaic.org.uk designates 2001:8b0:1d0::2 as permitted sender) client-ip=2001:8b0:1d0::2; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of pm215@archaic.org.uk designates 2001:8b0:1d0::2 as permitted sender) smtp.mailfrom=pm215@archaic.org.uk; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: from pm215 by orth.archaic.org.uk with local (Exim 4.84_2) (envelope-from ) id 1dKo9c-0001AZ-JS; Tue, 13 Jun 2017 16:54:52 +0100 From: Peter Maydell To: qemu-devel@nongnu.org Cc: patches@linaro.org, =?utf-8?q?Alex_Benn=C3=A9e?= , Paolo Bonzini , Markus Armbruster Subject: [PATCH 2/3] scripts/run-coverity-scan: Script to run Coverity Scan build Date: Tue, 13 Jun 2017 16:54:49 +0100 Message-Id: <1497369290-20401-3-git-send-email-peter.maydell@linaro.org> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1497369290-20401-1-git-send-email-peter.maydell@linaro.org> References: <1497369290-20401-1-git-send-email-peter.maydell@linaro.org> Add a new script to automate the process of running the Coverity Scan build tools and uploading the resulting tarball to the website. This is primarily intended to be driven from Travis, but it can be run locally (if you are a maintainer of the QEMU project on the Coverity Scan website and have the secret upload token). Signed-off-by: Peter Maydell --- scripts/run-coverity-scan | 170 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 170 insertions(+) create mode 100755 scripts/run-coverity-scan -- 2.7.4 Reviewed-by: Alex Bennée diff --git a/scripts/run-coverity-scan b/scripts/run-coverity-scan new file mode 100755 index 0000000..e6d5fc5 --- /dev/null +++ b/scripts/run-coverity-scan @@ -0,0 +1,170 @@ +#!/bin/sh -e + +# Upload a created tarball to Coverity Scan, as per +# https://scan.coverity.com/projects/qemu/builds/new + +# This work is licensed under the terms of the GNU GPL version 2, +# or (at your option) any later version. +# See the COPYING file in the top-level directory. +# +# Copyright (c) 2017 Linaro Limited +# Written by Peter Maydell + +# Note that this script will automatically download and +# run the (closed-source) coverity build tools, so don't +# use it if you don't trust them! + +# This script assumes that you're running it from a QEMU source +# tree, and that tree is a fresh clean one, because we do an in-tree +# build. (This is necessary so that the filenames that the Coverity +# Scan server sees are relative paths that match up with the component +# regular expressions it uses; an out-of-tree build won't work for this.) +# The host machine should have as many of QEMU's dependencies +# installed as possible, for maximum coverity coverage. + +# You need to pass the following environment variables to the script: +# COVERITY_TOKEN -- this is the secret 8 digit hex string which lets +# you upload to Coverity Scan. If you're a maintainer +# in Coverity then the web UI will tell you this. +# COVERITY_EMAIL -- the email address to use for uploads + +# and optionally +# COVERITY_DRYRUN -- set to not actually do the upload +# COVERITY_BUILD_CMD -- make command (defaults to 'make -j8') +# COVERITY_TOOL_BASE -- set to directory to put coverity tools +# (defaults to /tmp/coverity-tools) + +# The primary purpose of this script is to be run as part of +# a Travis build, but it is possible to run it manually locally. + +if [ -z "$COVERITY_TOKEN" ]; then + echo "COVERITY_TOKEN environment variable not set" + exit 1 +fi + +if [ -z "$COVERITY_EMAIL" ]; then + echo "COVERITY_EMAIL environment variable not set" + exit 1 +fi + +if [ -z "$COVERITY_BUILD_CMD" ]; then + echo "COVERITY_BUILD_CMD: using default 'make -j8'" + COVERITY_BUILD_CMD="make -j8" +fi + +if [ -z "$COVERITY_TOOL_BASE" ]; then + echo "COVERITY_TOOL_BASE: using default /tmp/coverity-tools" + COVERITY_TOOL_BASE=/tmp/coverity-tools +fi + +PROJTOKEN="$COVERITY_TOKEN" +PROJNAME=QEMU +TARBALL=cov-int.tar.xz +SRCDIR="$(pwd)" + +echo "Checking this is a QEMU source tree..." +if ! [ -e VERSION ]; then + echo "Not in a QEMU source tree?" + exit 1 +fi + +echo "Checking upload permissions..." + +if ! up_perm="$(wget https://scan.coverity.com/api/upload_permitted --post-data "token=$PROJTOKEN&project=$PROJNAME" -q -O -)"; then + echo "Coverity Scan API access denied: bad token?" + exit 1 +fi + +# Really up_perm is a JSON response with either +# {upload_permitted:true} or {next_upload_permitted_at:} +# We do some hacky string parsing instead of properly parsing it. +case "$up_perm" in + *upload_permitted*true*) + echo "Coverity Scan: upload permitted" + ;; + *next_upload_permitted_at*) + if [ -z "$COVERITY_DRYRUN" ]; then + echo "Coverity Scan: upload quota reached; stopping here" + # Exit success as this isn't a build error. + exit 0 + else + echo "Coverity Scan: upload quota reached, continuing dry run" + fi + ;; + *) + echo "Coverity Scan upload check: unexpected result $up_perm" + exit 1 + ;; +esac + +mkdir -p "$COVERITY_TOOL_BASE" +cd "$COVERITY_TOOL_BASE" + +echo "Checking for new version of coverity build tools..." +wget https://scan.coverity.com/download/linux64 --post-data "token=$PROJTOKEN&project=$PROJNAME&md5=1" -O coverity_tool.md5.new + +if ! cmp -s coverity_tool.md5 coverity_tool.md5.new; then + # out of date md5 or no md5: download new build tool + # blow away the old build tool + echo "Downloading coverity build tools..." + rm -rf coverity_tool coverity_tool.tgz + wget https://scan.coverity.com/download/linux64 --post-data "token=$PROJTOKEN&project=$PROJNAME" -O coverity_tool.tgz + if ! (cat coverity_tool.md5.new; echo " coverity_tool.tgz") | md5sum -c --status; then + echo "Downloaded tarball didn't match md5sum!" + exit 1 + fi + # extract the new one, keeping it corralled in a 'coverity_tool' directory + echo "Unpacking coverity build tools..." + mkdir -p coverity_tool + cd coverity_tool + tar xf ../coverity_tool.tgz + cd .. + mv coverity_tool.md5.new coverity_tool.md5 +fi + +rm -f coverity_tool.md5.new + +TOOLBIN="$(echo $(pwd)/coverity_tool/cov-analysis-*/bin)" + +if ! test -x "$TOOLBIN/cov-build"; then + echo "Couldn't find cov-build in the coverity build-tool directory??" + exit 1 +fi + +export PATH="$TOOLBIN:$PATH" + +cd "$SRCDIR" + +echo "Doing make distclean..." +make distclean + +echo "Configuring..." +./configure --audio-drv-list=oss,alsa,sdl,pa --disable-werror + +echo "Making libqemustub.a..." +make libqemustub.a + +echo "Running cov-build..." +rm -rf cov-int +mkdir cov-int +cov-build --dir cov-int $COVERITY_BUILD_CMD + +echo "Creating results tarball..." +tar cvf - cov-int | xz > "$TARBALL" + +echo "Uploading results tarball..." + +VERSION="$(git describe --always HEAD)" +DESCRIPTION="$(git rev-parse HEAD)" + +if ! [ -z "$COVERITY_DRYRUN" ]; then + echo "Dry run only, not uploading $TARBALL" + exit 0 +fi + +curl --form token="$PROJTOKEN" --form email="$COVERITY_EMAIL" \ + --form file=@"$TARBALL" --form version="$VERSION" \ + --form description="$DESCRIPTION" \ + https://scan.coverity.com/builds?project="$PROJNAME" + +echo "Done." From patchwork Tue Jun 13 15:54:50 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Peter Maydell X-Patchwork-Id: 105378 Delivered-To: patches@linaro.org Received: by 10.140.91.77 with SMTP id y71csp476063qgd; Tue, 13 Jun 2017 08:54:54 -0700 (PDT) X-Received: by 10.25.38.139 with SMTP id m133mr152363lfm.127.1497369294224; Tue, 13 Jun 2017 08:54:54 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1497369294; cv=none; d=google.com; s=arc-20160816; b=r9iGEOOAxAhx0k2GgAWIL2Ukg48eIyHvaBwfO2Z2ORWsANzJjjk7Gc/LjJVjtcqxUZ /0oURCo42gz2D39j0jJt2iJ6nrycjXESTQiUAnlAsZd7QXmuSiwyeJ4XpGre+cKBOgYh OIGmMdO2dcogQnn6NkTVZuSRQf5d5puYieaFiHrdbZKd7caTG0zZPWwI50Sd81tOPoSE Sn51mfdgiEANFkeeBS8o+AjugQGVHKxAxP3lQuwbWVjpzoSAtjGdDyPMmVpryv1yKcbp t9myfY02S++fYjmPG+8odj8SVgzaldJdsndV55StSIKHWHiJ0fNCNddReB03qytixD1w 3smA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=references:in-reply-to:message-id:date:subject:cc:to:from :arc-authentication-results; bh=tDYrJsSec7utfTo+7Mz0PZej9hOYIKST0qKDRZ+VaVU=; b=nlLLfhHttP41c2ZYP5jqtlSClB9SHx87F7l0LQa7Y0UVc+ACdPehp5OrU9cxPU0dpF OCOxD63vG7xWzzUmN0aG/woxwcGkZBoRFgD75ODt4JMDhIQXUvQOlRCU1VbRE59Pabxz jkIbINLNFMvF5XxOI2fPH4LzOiDJS46gu8rcNUnthTw8RB7wk8xcPd7pBcNLFPTUiSQr n7A/GPnOvYfgjoDSgaRZBa1nWMAPuLHhlJI7VULlkMDZRt3VkAUQIX4PySDiDOVeX8Sx IfAEoHfpcVuMh3xD5CvA0W0fZU0kGYmGTUdmbCmLZl/gt/iHYxtjQFmf+5MdZJrTcoaZ YhAg== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of pm215@archaic.org.uk designates 2001:8b0:1d0::2 as permitted sender) smtp.mailfrom=pm215@archaic.org.uk; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from orth.archaic.org.uk (orth.archaic.org.uk. [2001:8b0:1d0::2]) by mx.google.com with ESMTPS id 17si198199ljh.4.2017.06.13.08.54.53 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 13 Jun 2017 08:54:54 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of pm215@archaic.org.uk designates 2001:8b0:1d0::2 as permitted sender) client-ip=2001:8b0:1d0::2; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of pm215@archaic.org.uk designates 2001:8b0:1d0::2 as permitted sender) smtp.mailfrom=pm215@archaic.org.uk; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: from pm215 by orth.archaic.org.uk with local (Exim 4.84_2) (envelope-from ) id 1dKo9d-0001As-8t; Tue, 13 Jun 2017 16:54:53 +0100 From: Peter Maydell To: qemu-devel@nongnu.org Cc: patches@linaro.org, =?utf-8?q?Alex_Benn=C3=A9e?= , Paolo Bonzini , Markus Armbruster Subject: [PATCH 3/3] travis: Add config to do a Coverity Scan upload Date: Tue, 13 Jun 2017 16:54:50 +0100 Message-Id: <1497369290-20401-4-git-send-email-peter.maydell@linaro.org> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1497369290-20401-1-git-send-email-peter.maydell@linaro.org> References: <1497369290-20401-1-git-send-email-peter.maydell@linaro.org> Add config to travis to do a Coverity Scan build and upload, using the new run-coverity-scan script. There is an official integration between Travis and Coverity Scan: https://github.com/travis-ci/travis-build/blob/master/lib/travis/build/addons/coverity_scan.rb which slurps values out of the .travis.yml and downloads a build script from Coverity which does the bulk of the work: https://scan.coverity.com/scripts/travisci_build_coverity_scan.sh However we choose to roll our own since this seems less confusing and also allows us to include debug features (notably the ability to do a "dry run" test which doesn't actually upload anything). Signed-off-by: Peter Maydell --- .travis.yml | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) -- 2.7.4 diff --git a/.travis.yml b/.travis.yml index 26dabb6..d772a4a 100644 --- a/.travis.yml +++ b/.travis.yml @@ -210,3 +210,27 @@ matrix: - TEST_CMD="" before_script: - ./configure ${CONFIG} --extra-cflags="-g3 -O0 -fsanitize=thread -fuse-ld=gold" || cat config.log + # Build and upload to Coverity Scan. + # We do not impose any rate limiting here, but instead rely on the + # limiting done by the coverity servers, which for a project of QEMU's + # size means one build a day. The run-coverity-scan script will exit + # early if the limiter does not permit a new upload, so the effect will + # be that the first build (only) in each 24 hour period will be scanned. + # If we needed to apply a limit at the Travis end, the simplest approach + # would be to run the scan only if the branch was 'coverity-scan', and + # use a cron job to push master to the 'coverity-scan' branch periodically. + # We run on the trusty Travis hosts so that there's a wider set of + # dependencies satisfied to improve coverage. + - dist: trusty + env: + - COVERITY=1 + - COVERITY_BUILD_CMD="make -j3" + - COVERITY_EMAIL=peter.maydell@linaro.org + # This 'secure' setting sets COVERITY_TOKEN= + # and was created with travis encrypt -r qemu/qemu COVERITY_TOKEN=... + - secure: "D3E6E5bacui53fYBQrx0wQr8ZTvo6VIBPKfg0QHj2uwa6OPFkUlcMr/EHWvdbZNAa4Q1bv1vhlED5OPRfPmQYzxQNT4SAxDZeuZnikgIymfqQXNOjKw4kRUDO9P42QanyFd+EAu2JDVClAeJPgBpa/ns4CNrGDK+Q3coGndCP8o=" + before_script: + - if [ "$TRAVIS_PULL_REQUEST" = "true" ]; then echo "Skipping Coverity (pullreq)"; exit 0; fi + - if [ "$TRAVIS_BRANCH" != "master" ]; then echo "Skipping Coverity (wrong branch)"; exit 0; fi + script: + - ./scripts/run-coverity-scan