From nobody Wed Nov 5 13:30:20 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zoho.com; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 149736937874191.16300464406334; Tue, 13 Jun 2017 08:56:18 -0700 (PDT) Received: from localhost ([::1]:43990 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dKoAx-00071Z-1D for importer@patchew.org; Tue, 13 Jun 2017 11:56:15 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:36080) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dKo9f-0005zw-S1 for qemu-devel@nongnu.org; Tue, 13 Jun 2017 11:54:56 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dKo9f-0004v0-6L for qemu-devel@nongnu.org; Tue, 13 Jun 2017 11:54:55 -0400 Received: from orth.archaic.org.uk ([2001:8b0:1d0::2]:37259) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1dKo9e-0004uE-Uh for qemu-devel@nongnu.org; Tue, 13 Jun 2017 11:54:55 -0400 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 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> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2001:8b0:1d0::2 Subject: [Qemu-devel] [PATCH 1/3] travis: install more library dependencies X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Paolo Bonzini , =?UTF-8?q?Alex=20Benn=C3=A9e?= , Markus Armbruster , patches@linaro.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" 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 Reviewed-by: Alex Benn=C3=A9e Reviewed-by: Philippe Mathieu-Daud=C3=A9 Tested-by: Philippe Mathieu-Daud=C3=A9 --- .travis.yml | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) 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 =20 # 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: --=20 2.7.4 From nobody Wed Nov 5 13:30:20 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zoho.com; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1497370090962481.1719238189286; Tue, 13 Jun 2017 09:08:10 -0700 (PDT) Received: from localhost ([::1]:44156 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dKoMQ-0006fp-6s for importer@patchew.org; Tue, 13 Jun 2017 12:08:06 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:39131) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dKoKT-0005Yl-57 for qemu-devel@nongnu.org; Tue, 13 Jun 2017 12:06:06 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dKoKR-0000No-Or for qemu-devel@nongnu.org; Tue, 13 Jun 2017 12:06:05 -0400 Received: from orth.archaic.org.uk ([2001:8b0:1d0::2]:37269) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1dKoKR-0000NO-D4 for qemu-devel@nongnu.org; Tue, 13 Jun 2017 12:06:03 -0400 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 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> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2001:8b0:1d0::2 Subject: [Qemu-devel] [PATCH 2/3] scripts/run-coverity-scan: Script to run Coverity Scan build X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Paolo Bonzini , =?UTF-8?q?Alex=20Benn=C3=A9e?= , Markus Armbruster , patches@linaro.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" 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 Reviewed-by: Alex Benn=C3=A9e --- scripts/run-coverity-scan | 170 ++++++++++++++++++++++++++++++++++++++++++= ++++ 1 file changed, 170 insertions(+) create mode 100755 scripts/run-coverity-scan 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=3D"make -j8" +fi + +if [ -z "$COVERITY_TOOL_BASE" ]; then + echo "COVERITY_TOOL_BASE: using default /tmp/coverity-tools" + COVERITY_TOOL_BASE=3D/tmp/coverity-tools +fi + +PROJTOKEN=3D"$COVERITY_TOKEN" +PROJNAME=3DQEMU +TARBALL=3Dcov-int.tar.xz +SRCDIR=3D"$(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=3D"$(wget https://scan.coverity.com/api/upload_permitted --po= st-data "token=3D$PROJTOKEN&project=3D$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=3D$PROJ= TOKEN&project=3D$PROJNAME&md5=3D1" -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=3D$= PROJTOKEN&project=3D$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' direc= tory + 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=3D"$(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=3D"$TOOLBIN:$PATH" + +cd "$SRCDIR" + +echo "Doing make distclean..." +make distclean + +echo "Configuring..." +./configure --audio-drv-list=3Doss,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=3D"$(git describe --always HEAD)" +DESCRIPTION=3D"$(git rev-parse HEAD)" + +if ! [ -z "$COVERITY_DRYRUN" ]; then + echo "Dry run only, not uploading $TARBALL" + exit 0 +fi + +curl --form token=3D"$PROJTOKEN" --form email=3D"$COVERITY_EMAIL" \ + --form file=3D@"$TARBALL" --form version=3D"$VERSION" \ + --form description=3D"$DESCRIPTION" \ + https://scan.coverity.com/builds?project=3D"$PROJNAME" + +echo "Done." --=20 2.7.4 From nobody Wed Nov 5 13:30:20 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zoho.com; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1497369381628823.8842210708607; Tue, 13 Jun 2017 08:56:21 -0700 (PDT) Received: from localhost ([::1]:43992 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dKoB2-0007C4-9L for importer@patchew.org; Tue, 13 Jun 2017 11:56:20 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:36092) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dKo9h-000601-BA for qemu-devel@nongnu.org; Tue, 13 Jun 2017 11:54:58 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dKo9g-0004wa-4c for qemu-devel@nongnu.org; Tue, 13 Jun 2017 11:54:57 -0400 Received: from orth.archaic.org.uk ([2001:8b0:1d0::2]:37259) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1dKo9f-0004uE-SZ for qemu-devel@nongnu.org; Tue, 13 Jun 2017 11:54:56 -0400 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 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> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2001:8b0:1d0::2 Subject: [Qemu-devel] [PATCH 3/3] travis: Add config to do a Coverity Scan upload X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Paolo Bonzini , =?UTF-8?q?Alex=20Benn=C3=A9e?= , Markus Armbruster , patches@linaro.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" 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/add= ons/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(+) 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=3D"" before_script: - ./configure ${CONFIG} --extra-cflags=3D"-g3 -O0 -fsanitize=3Dthr= ead -fuse-ld=3Dgold" || 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 scanne= d. + # If we needed to apply a limit at the Travis end, the simplest approa= ch + # 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 periodic= ally. + # We run on the trusty Travis hosts so that there's a wider set of + # dependencies satisfied to improve coverage. + - dist: trusty + env: + - COVERITY=3D1 + - COVERITY_BUILD_CMD=3D"make -j3" + - COVERITY_EMAIL=3Dpeter.maydell@linaro.org + # This 'secure' setting sets COVERITY_TOKEN=3D + # and was created with travis encrypt -r qemu/qemu COVERITY_TOKEN= =3D... + - secure: "D3E6E5bacui53fYBQrx0wQr8ZTvo6VIBPKfg0QHj2uwa6OPFkUlcMr/= EHWvdbZNAa4Q1bv1vhlED5OPRfPmQYzxQNT4SAxDZeuZnikgIymfqQXNOjKw4kRUDO9P42QanyF= d+EAu2JDVClAeJPgBpa/ns4CNrGDK+Q3coGndCP8o=3D" + before_script: + - if [ "$TRAVIS_PULL_REQUEST" =3D "true" ]; then echo "Skipping Co= verity (pullreq)"; exit 0; fi + - if [ "$TRAVIS_BRANCH" !=3D "master" ]; then echo "Skipping Cover= ity (wrong branch)"; exit 0; fi + script: + - ./scripts/run-coverity-scan --=20 2.7.4