All of lore.kernel.org
 help / color / mirror / Atom feed
* [Qemu-devel] [PATCH 0/3] Automate coverity scan uploads via Travis
@ 2017-06-13 15:54 Peter Maydell
  2017-06-13 15:54 ` [Qemu-devel] [PATCH 1/3] travis: install more library dependencies Peter Maydell
                   ` (3 more replies)
  0 siblings, 4 replies; 20+ messages in thread
From: Peter Maydell @ 2017-06-13 15:54 UTC (permalink / raw)
  To: qemu-devel; +Cc: patches, Alex Bennée, Paolo Bonzini, Markus Armbruster

This patchset automates our uploads to the coverity scan service
by making them a travis build job. I wrote this code because I
kept finding that our Coverity build was days or weeks behind
master, so it seemed worth automating. We could do this via something
other than Travis (some of the notes below discuss issues with
doing it this way) but I do think we should be doing this
automatically rather than ad-hoc, and patch 2 at least is
probably a useful part of any automation we want to do.


Patch 1 is a preliminary that improves the set of code that Travis
builds by adding some -dev packages to the set of installs. (There's
a limit to the improvement possible because the base machine is
Ubuntu Precise or Trusty, and some of our dependencies need versions
that are closer to the bleeding edge than those distros provide.)

Patch 2 is a shell script which automates the process of
downloading the coverity build tools, running the local build
and uploading it to the scan server. To be able to run the script
and upload a build you need a secret token which only people with
coverity scan project admin access have.

Patch 3 changes the travis config to run the script. We use
Travis's ability to have encrypted config to pass the secret token
to the script without exposing it to the world.


Notes:

(1) There is an official Coverity/Travis integration, but I haven't
used it, because it's awkwardly inflexible (no option for "don't
actually upload" to use when debugging, for instance) and no use
if you want to do a local Coverity build. The official integration
does basically the same thing that this local script does, but
in a weird two part way with some code in a Travis "addon"
 https://github.com/travis-ci/travis-build/blob/master/lib/travis/build/addons/coverity_scan.rb
which downloads a shell script:
 https://scan.coverity.com/scripts/travisci_build_coverity_scan.sh
which does the work.

(2) The job is quite close to the travis 50 minute timeout limit :-(
This might just be Travis running slow today, though -- one of our
normal builds hit the same timeout just now.

(3) There is an upload limit on the server side of one build a day.
The travis changes here make no attempt to rate limit, but rely
on the server side doing it. (If the server says "no upload permitted"
then we don't attempt to do the build phase.) We see if we can do
an upload for every commit to master. This seems fine to me, but if
the server changes its limits we might want to rethink. The simplest
way to impose a travis-side rate limit seems to be to have the travis
integration only run on a particular branch name (eg "coverity-scan")
and have a cron job push master to that branch periodically.

(4) Because Travis worker hosts are running Ubuntu Trusty some of
the code we were previously scanning is no longer scanned
because configure won't build it due to too-old dependencies.
Notable casualties are iscsi, gluster, rdma and qxl.
One way to work around this might be to have a docker container
set up with the desired config for running the scan, and then have
Travis use that docker container. (Wanting to possibly do something
like this is another reason to roll our own script rather than
using the official travis/coverity integration.)

(5) We could in theory run the builds on something other than
travis but it wasn't clear to me that we had any suitable machines
set up in the project currently. Travis has the advantage that
somebody else is doing the admin and providing the hardware :-)

(6) It would be nice to be able to automatically update the
Coverity Scan server's model file and the regexes defining
components, but that doesn't seem to be conveniently doable.

thanks
-- PMM


Peter Maydell (3):
  travis: install more library dependencies
  scripts/run-coverity-scan: Script to run Coverity Scan build
  travis: Add config to do a Coverity Scan upload

 .travis.yml               |  42 ++++++++++++
 scripts/run-coverity-scan | 170 ++++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 212 insertions(+)
 create mode 100755 scripts/run-coverity-scan

-- 
2.7.4

^ permalink raw reply	[flat|nested] 20+ messages in thread

* [Qemu-devel] [PATCH 1/3] travis: install more library dependencies
  2017-06-13 15:54 [Qemu-devel] [PATCH 0/3] Automate coverity scan uploads via Travis Peter Maydell
@ 2017-06-13 15:54 ` Peter Maydell
  2017-06-14  3:52   ` Philippe Mathieu-Daudé
                     ` (2 more replies)
  2017-06-13 15:54 ` [Qemu-devel] [PATCH 2/3] scripts/run-coverity-scan: Script to run Coverity Scan build Peter Maydell
                   ` (2 subsequent siblings)
  3 siblings, 3 replies; 20+ messages in thread
From: Peter Maydell @ 2017-06-13 15:54 UTC (permalink / raw)
  To: qemu-devel; +Cc: patches, Alex Bennée, Paolo Bonzini, Markus Armbruster

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 <peter.maydell@linaro.org>
---
 .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
 
 # 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:
-- 
2.7.4

^ permalink raw reply related	[flat|nested] 20+ messages in thread

* [Qemu-devel] [PATCH 2/3] scripts/run-coverity-scan: Script to run Coverity Scan build
  2017-06-13 15:54 [Qemu-devel] [PATCH 0/3] Automate coverity scan uploads via Travis Peter Maydell
  2017-06-13 15:54 ` [Qemu-devel] [PATCH 1/3] travis: install more library dependencies Peter Maydell
@ 2017-06-13 15:54 ` Peter Maydell
  2017-06-14 15:01   ` Alex Bennée
  2017-06-29 16:12   ` Eric Blake
  2017-06-13 15:54 ` [Qemu-devel] [PATCH 3/3] travis: Add config to do a Coverity Scan upload Peter Maydell
  2017-06-13 16:15 ` [Qemu-devel] [PATCH 0/3] Automate coverity scan uploads via Travis no-reply
  3 siblings, 2 replies; 20+ messages in thread
From: Peter Maydell @ 2017-06-13 15:54 UTC (permalink / raw)
  To: qemu-devel; +Cc: patches, Alex Bennée, Paolo Bonzini, Markus Armbruster

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 <peter.maydell@linaro.org>
---
 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="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:<date>}
+# 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."
-- 
2.7.4

^ permalink raw reply related	[flat|nested] 20+ messages in thread

* [Qemu-devel] [PATCH 3/3] travis: Add config to do a Coverity Scan upload
  2017-06-13 15:54 [Qemu-devel] [PATCH 0/3] Automate coverity scan uploads via Travis Peter Maydell
  2017-06-13 15:54 ` [Qemu-devel] [PATCH 1/3] travis: install more library dependencies Peter Maydell
  2017-06-13 15:54 ` [Qemu-devel] [PATCH 2/3] scripts/run-coverity-scan: Script to run Coverity Scan build Peter Maydell
@ 2017-06-13 15:54 ` Peter Maydell
  2017-06-14 15:14   ` Alex Bennée
  2017-06-13 16:15 ` [Qemu-devel] [PATCH 0/3] Automate coverity scan uploads via Travis no-reply
  3 siblings, 1 reply; 20+ messages in thread
From: Peter Maydell @ 2017-06-13 15:54 UTC (permalink / raw)
  To: qemu-devel; +Cc: patches, Alex Bennée, Paolo Bonzini, Markus Armbruster

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 <peter.maydell@linaro.org>
---
 .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=""
       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=<secret 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
-- 
2.7.4

^ permalink raw reply related	[flat|nested] 20+ messages in thread

* Re: [Qemu-devel] [PATCH 0/3] Automate coverity scan uploads via Travis
  2017-06-13 15:54 [Qemu-devel] [PATCH 0/3] Automate coverity scan uploads via Travis Peter Maydell
                   ` (2 preceding siblings ...)
  2017-06-13 15:54 ` [Qemu-devel] [PATCH 3/3] travis: Add config to do a Coverity Scan upload Peter Maydell
@ 2017-06-13 16:15 ` no-reply
  3 siblings, 0 replies; 20+ messages in thread
From: no-reply @ 2017-06-13 16:15 UTC (permalink / raw)
  To: peter.maydell; +Cc: famz, qemu-devel, pbonzini, alex.bennee, armbru, patches

Hi,

This series failed automatic build test. Please find the testing commands and
their output below. If you have docker installed, you can probably reproduce it
locally.

Message-id: 1497369290-20401-1-git-send-email-peter.maydell@linaro.org
Subject: [Qemu-devel] [PATCH 0/3] Automate coverity scan uploads via Travis
Type: series

=== TEST SCRIPT BEGIN ===
#!/bin/bash
set -e
git submodule update --init dtc
# Let docker tests dump environment info
export SHOW_ENV=1
export J=8
time make docker-test-quick@centos6
time make docker-test-mingw@fedora
time make docker-test-build@min-glib
=== TEST SCRIPT END ===

Updating 3c8cf5a9c21ff8782164d1def7f44bd888713384
From https://github.com/patchew-project/qemu
 * [new tag]         patchew/1497369290-20401-1-git-send-email-peter.maydell@linaro.org -> patchew/1497369290-20401-1-git-send-email-peter.maydell@linaro.org
Switched to a new branch 'test'
46c097b travis: Add config to do a Coverity Scan upload
03080e6 scripts/run-coverity-scan: Script to run Coverity Scan build
f08f485 travis: install more library dependencies

=== OUTPUT BEGIN ===
Submodule 'dtc' (git://git.qemu-project.org/dtc.git) registered for path 'dtc'
Cloning into '/var/tmp/patchew-tester-tmp-y6tvfe3p/src/dtc'...
Submodule path 'dtc': checked out '558cd81bdd432769b59bff01240c44f82cfb1a9d'
  BUILD   centos6
make[1]: Entering directory '/var/tmp/patchew-tester-tmp-y6tvfe3p/src'
  ARCHIVE qemu.tgz
  ARCHIVE dtc.tgz
  COPY    RUNNER
    RUN test-quick in qemu:centos6 
Packages installed:
SDL-devel-1.2.14-7.el6_7.1.x86_64
ccache-3.1.6-2.el6.x86_64
epel-release-6-8.noarch
gcc-4.4.7-17.el6.x86_64
git-1.7.1-4.el6_7.1.x86_64
glib2-devel-2.28.8-5.el6.x86_64
libfdt-devel-1.4.0-1.el6.x86_64
make-3.81-23.el6.x86_64
package g++ is not installed
pixman-devel-0.32.8-1.el6.x86_64
tar-1.23-15.el6_8.x86_64
zlib-devel-1.2.3-29.el6.x86_64

Environment variables:
PACKAGES=libfdt-devel ccache     tar git make gcc g++     zlib-devel glib2-devel SDL-devel pixman-devel     epel-release
HOSTNAME=fbf7d9762feb
TERM=xterm
MAKEFLAGS= -j8
HISTSIZE=1000
J=8
USER=root
CCACHE_DIR=/var/tmp/ccache
EXTRA_CONFIGURE_OPTS=
V=
SHOW_ENV=1
MAIL=/var/spool/mail/root
PATH=/usr/lib/ccache:/usr/lib64/ccache:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
PWD=/
LANG=en_US.UTF-8
TARGET_LIST=
HISTCONTROL=ignoredups
SHLVL=1
HOME=/root
TEST_DIR=/tmp/qemu-test
LOGNAME=root
LESSOPEN=||/usr/bin/lesspipe.sh %s
FEATURES= dtc
DEBUG=
G_BROKEN_FILENAMES=1
CCACHE_HASHDIR=
_=/usr/bin/env

Configure options:
--enable-werror --target-list=x86_64-softmmu,aarch64-softmmu --prefix=/var/tmp/qemu-build/install
/tmp/qemu-test/src/configure: line 4683: c++: command not found
No C++ compiler available; disabling C++ specific optional code
Install prefix    /var/tmp/qemu-build/install
BIOS directory    /var/tmp/qemu-build/install/share/qemu
binary directory  /var/tmp/qemu-build/install/bin
library directory /var/tmp/qemu-build/install/lib
module directory  /var/tmp/qemu-build/install/lib/qemu
libexec directory /var/tmp/qemu-build/install/libexec
include directory /var/tmp/qemu-build/install/include
config directory  /var/tmp/qemu-build/install/etc
local state directory   /var/tmp/qemu-build/install/var
Manual directory  /var/tmp/qemu-build/install/share/man
ELF interp prefix /usr/gnemul/qemu-%M
Source path       /tmp/qemu-test/src
C compiler        cc
Host C compiler   cc
C++ compiler      
Objective-C compiler cc
ARFLAGS           rv
CFLAGS            -O2 -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 -g 
QEMU_CFLAGS       -I/usr/include/pixman-1   -I$(SRC_PATH)/dtc/libfdt -pthread -I/usr/include/glib-2.0 -I/usr/lib64/glib-2.0/include   -fPIE -DPIE -m64 -mcx16 -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -Wstrict-prototypes -Wredundant-decls -Wall -Wundef -Wwrite-strings -Wmissing-prototypes -fno-strict-aliasing -fno-common -fwrapv  -Wendif-labels -Wno-missing-include-dirs -Wempty-body -Wnested-externs -Wformat-security -Wformat-y2k -Winit-self -Wignored-qualifiers -Wold-style-declaration -Wold-style-definition -Wtype-limits -fstack-protector-all
LDFLAGS           -Wl,--warn-common -Wl,-z,relro -Wl,-z,now -pie -m64 -g 
make              make
install           install
python            python -B
smbd              /usr/sbin/smbd
module support    no
host CPU          x86_64
host big endian   no
target list       x86_64-softmmu aarch64-softmmu
tcg debug enabled no
gprof enabled     no
sparse enabled    no
strip binaries    yes
profiler          no
static build      no
pixman            system
SDL support       yes (1.2.14)
GTK support       no 
GTK GL support    no
VTE support       no 
TLS priority      NORMAL
GNUTLS support    no
GNUTLS rnd        no
libgcrypt         no
libgcrypt kdf     no
nettle            no 
nettle kdf        no
libtasn1          no
curses support    no
virgl support     no
curl support      no
mingw32 support   no
Audio drivers     oss
Block whitelist (rw) 
Block whitelist (ro) 
VirtFS support    no
VNC support       yes
VNC SASL support  no
VNC JPEG support  no
VNC PNG support   no
xen support       no
brlapi support    no
bluez  support    no
Documentation     no
PIE               yes
vde support       no
netmap support    no
Linux AIO support no
ATTR/XATTR support yes
Install blobs     yes
KVM support       yes
HAX support       no
RDMA support      no
TCG interpreter   no
fdt support       yes
preadv support    yes
fdatasync         yes
madvise           yes
posix_madvise     yes
libcap-ng support no
vhost-net support yes
vhost-scsi support yes
vhost-vsock support yes
Trace backends    log
spice support     no 
rbd support       no
xfsctl support    no
smartcard support no
libusb            no
usb net redir     no
OpenGL support    no
OpenGL dmabufs    no
libiscsi support  no
libnfs support    no
build guest agent yes
QGA VSS support   no
QGA w32 disk info no
QGA MSI support   no
seccomp support   no
coroutine backend ucontext
coroutine pool    yes
debug stack usage no
GlusterFS support no
gcov              gcov
gcov enabled      no
TPM support       yes
libssh2 support   no
TPM passthrough   yes
QOM debugging     yes
Live block migration yes
lzo support       no
snappy support    no
bzip2 support     no
NUMA host support no
tcmalloc support  no
jemalloc support  no
avx2 optimization no
replication support yes
VxHS block device no
mkdir -p dtc/libfdt
mkdir -p dtc/tests
  GEN     x86_64-softmmu/config-devices.mak.tmp
  GEN     aarch64-softmmu/config-devices.mak.tmp
  GEN     config-host.h
  GEN     qmp-commands.h
  GEN     qemu-options.def
  GEN     qapi-types.h
  GEN     qapi-visit.h
  GEN     qapi-event.h
  GEN     x86_64-softmmu/config-devices.mak
  GEN     aarch64-softmmu/config-devices.mak
  GEN     qmp-marshal.c
  GEN     qapi-types.c
  GEN     qapi-visit.c
  GEN     qapi-event.c
  GEN     qmp-introspect.h
  GEN     qmp-introspect.c
  GEN     trace/generated-tcg-tracers.h
  GEN     trace/generated-helpers.h
  GEN     trace/generated-helpers-wrappers.h
  GEN     trace/generated-helpers.c
  GEN     module_block.h
  GEN     tests/test-qapi-visit.h
  GEN     tests/test-qapi-types.h
  GEN     tests/test-qmp-commands.h
  GEN     tests/test-qapi-event.h
  GEN     tests/test-qmp-introspect.h
  GEN     trace-root.h
  GEN     util/trace.h
  GEN     crypto/trace.h
  GEN     io/trace.h
  GEN     migration/trace.h
  GEN     block/trace.h
  GEN     backends/trace.h
  GEN     chardev/trace.h
  GEN     hw/block/trace.h
  GEN     hw/block/dataplane/trace.h
  GEN     hw/char/trace.h
  GEN     hw/intc/trace.h
  GEN     hw/net/trace.h
  GEN     hw/virtio/trace.h
  GEN     hw/audio/trace.h
  GEN     hw/misc/trace.h
  GEN     hw/usb/trace.h
  GEN     hw/scsi/trace.h
  GEN     hw/nvram/trace.h
  GEN     hw/display/trace.h
  GEN     hw/input/trace.h
  GEN     hw/timer/trace.h
  GEN     hw/dma/trace.h
  GEN     hw/sparc/trace.h
  GEN     hw/sd/trace.h
  GEN     hw/isa/trace.h
  GEN     hw/mem/trace.h
  GEN     hw/i386/trace.h
  GEN     hw/i386/xen/trace.h
  GEN     hw/9pfs/trace.h
  GEN     hw/ppc/trace.h
  GEN     hw/pci/trace.h
  GEN     hw/s390x/trace.h
  GEN     hw/vfio/trace.h
  GEN     hw/acpi/trace.h
  GEN     hw/arm/trace.h
  GEN     hw/alpha/trace.h
  GEN     hw/xen/trace.h
  GEN     ui/trace.h
  GEN     audio/trace.h
  GEN     net/trace.h
  GEN     target/arm/trace.h
  GEN     target/i386/trace.h
  GEN     target/mips/trace.h
  GEN     target/sparc/trace.h
  GEN     target/s390x/trace.h
  GEN     target/ppc/trace.h
  GEN     qom/trace.h
  GEN     linux-user/trace.h
  GEN     qapi/trace.h
  GEN     trace-root.c
  GEN     util/trace.c
  GEN     crypto/trace.c
  GEN     io/trace.c
  GEN     migration/trace.c
  GEN     block/trace.c
  GEN     backends/trace.c
  GEN     chardev/trace.c
  GEN     hw/block/trace.c
  GEN     hw/block/dataplane/trace.c
  GEN     hw/char/trace.c
  GEN     hw/intc/trace.c
  GEN     hw/net/trace.c
  GEN     hw/virtio/trace.c
  GEN     hw/audio/trace.c
  GEN     hw/misc/trace.c
  GEN     hw/usb/trace.c
  GEN     hw/scsi/trace.c
  GEN     hw/nvram/trace.c
  GEN     hw/display/trace.c
  GEN     hw/input/trace.c
  GEN     hw/timer/trace.c
  GEN     hw/dma/trace.c
  GEN     hw/sparc/trace.c
  GEN     hw/sd/trace.c
  GEN     hw/isa/trace.c
  GEN     hw/mem/trace.c
  GEN     hw/i386/trace.c
  GEN     hw/i386/xen/trace.c
  GEN     hw/9pfs/trace.c
  GEN     hw/ppc/trace.c
  GEN     hw/pci/trace.c
  GEN     hw/s390x/trace.c
  GEN     hw/vfio/trace.c
  GEN     hw/acpi/trace.c
  GEN     hw/arm/trace.c
  GEN     hw/alpha/trace.c
  GEN     hw/xen/trace.c
  GEN     ui/trace.c
  GEN     audio/trace.c
  GEN     net/trace.c
  GEN     target/arm/trace.c
  GEN     target/i386/trace.c
  GEN     target/mips/trace.c
  GEN     target/sparc/trace.c
  GEN     target/s390x/trace.c
  GEN     target/ppc/trace.c
  GEN     qom/trace.c
  GEN     linux-user/trace.c
  GEN     qapi/trace.c
  GEN     config-all-devices.mak
	 DEP /tmp/qemu-test/src/dtc/tests/dumptrees.c
	 DEP /tmp/qemu-test/src/dtc/tests/trees.S
	 DEP /tmp/qemu-test/src/dtc/tests/testutils.c
	 DEP /tmp/qemu-test/src/dtc/tests/value-labels.c
	 DEP /tmp/qemu-test/src/dtc/tests/asm_tree_dump.c
	 DEP /tmp/qemu-test/src/dtc/tests/truncated_property.c
	 DEP /tmp/qemu-test/src/dtc/tests/check_path.c
	 DEP /tmp/qemu-test/src/dtc/tests/overlay_bad_fixup.c
	 DEP /tmp/qemu-test/src/dtc/tests/overlay.c
	 DEP /tmp/qemu-test/src/dtc/tests/subnode_iterate.c
	 DEP /tmp/qemu-test/src/dtc/tests/property_iterate.c
	 DEP /tmp/qemu-test/src/dtc/tests/integer-expressions.c
	 DEP /tmp/qemu-test/src/dtc/tests/utilfdt_test.c
	 DEP /tmp/qemu-test/src/dtc/tests/path_offset_aliases.c
	 DEP /tmp/qemu-test/src/dtc/tests/add_subnode_with_nops.c
	 DEP /tmp/qemu-test/src/dtc/tests/dtbs_equal_unordered.c
	 DEP /tmp/qemu-test/src/dtc/tests/dtb_reverse.c
	 DEP /tmp/qemu-test/src/dtc/tests/dtbs_equal_ordered.c
	 DEP /tmp/qemu-test/src/dtc/tests/extra-terminating-null.c
	 DEP /tmp/qemu-test/src/dtc/tests/incbin.c
	 DEP /tmp/qemu-test/src/dtc/tests/boot-cpuid.c
	 DEP /tmp/qemu-test/src/dtc/tests/phandle_format.c
	 DEP /tmp/qemu-test/src/dtc/tests/path-references.c
	 DEP /tmp/qemu-test/src/dtc/tests/references.c
	 DEP /tmp/qemu-test/src/dtc/tests/string_escapes.c
	 DEP /tmp/qemu-test/src/dtc/tests/propname_escapes.c
	 DEP /tmp/qemu-test/src/dtc/tests/appendprop2.c
	 DEP /tmp/qemu-test/src/dtc/tests/appendprop1.c
	 DEP /tmp/qemu-test/src/dtc/tests/del_node.c
	 DEP /tmp/qemu-test/src/dtc/tests/del_property.c
	 DEP /tmp/qemu-test/src/dtc/tests/setprop.c
	 DEP /tmp/qemu-test/src/dtc/tests/set_name.c
	 DEP /tmp/qemu-test/src/dtc/tests/rw_tree1.c
	 DEP /tmp/qemu-test/src/dtc/tests/open_pack.c
	 DEP /tmp/qemu-test/src/dtc/tests/nopulate.c
	 DEP /tmp/qemu-test/src/dtc/tests/mangle-layout.c
	 DEP /tmp/qemu-test/src/dtc/tests/move_and_save.c
	 DEP /tmp/qemu-test/src/dtc/tests/sw_tree1.c
	 DEP /tmp/qemu-test/src/dtc/tests/nop_node.c
	 DEP /tmp/qemu-test/src/dtc/tests/nop_property.c
	 DEP /tmp/qemu-test/src/dtc/tests/setprop_inplace.c
	 DEP /tmp/qemu-test/src/dtc/tests/stringlist.c
	 DEP /tmp/qemu-test/src/dtc/tests/addr_size_cells.c
	 DEP /tmp/qemu-test/src/dtc/tests/notfound.c
	 DEP /tmp/qemu-test/src/dtc/tests/sized_cells.c
	 DEP /tmp/qemu-test/src/dtc/tests/char_literal.c
	 DEP /tmp/qemu-test/src/dtc/tests/get_alias.c
	 DEP /tmp/qemu-test/src/dtc/tests/node_offset_by_compatible.c
	 DEP /tmp/qemu-test/src/dtc/tests/node_check_compatible.c
	 DEP /tmp/qemu-test/src/dtc/tests/node_offset_by_phandle.c
	 DEP /tmp/qemu-test/src/dtc/tests/node_offset_by_prop_value.c
	 DEP /tmp/qemu-test/src/dtc/tests/parent_offset.c
	 DEP /tmp/qemu-test/src/dtc/tests/supernode_atdepth_offset.c
	 DEP /tmp/qemu-test/src/dtc/tests/get_path.c
	 DEP /tmp/qemu-test/src/dtc/tests/get_phandle.c
	 DEP /tmp/qemu-test/src/dtc/tests/getprop.c
	 DEP /tmp/qemu-test/src/dtc/tests/get_name.c
	 DEP /tmp/qemu-test/src/dtc/tests/path_offset.c
	 DEP /tmp/qemu-test/src/dtc/tests/subnode_offset.c
	 DEP /tmp/qemu-test/src/dtc/tests/find_property.c
	 DEP /tmp/qemu-test/src/dtc/tests/root_node.c
	 DEP /tmp/qemu-test/src/dtc/tests/get_mem_rsv.c
	 DEP /tmp/qemu-test/src/dtc/libfdt/fdt_overlay.c
	 DEP /tmp/qemu-test/src/dtc/libfdt/fdt_addresses.c
	 DEP /tmp/qemu-test/src/dtc/libfdt/fdt_empty_tree.c
	 DEP /tmp/qemu-test/src/dtc/libfdt/fdt_rw.c
	 DEP /tmp/qemu-test/src/dtc/libfdt/fdt_strerror.c
	 DEP /tmp/qemu-test/src/dtc/libfdt/fdt_sw.c
	 DEP /tmp/qemu-test/src/dtc/libfdt/fdt_wip.c
	 DEP /tmp/qemu-test/src/dtc/libfdt/fdt_ro.c
	 DEP /tmp/qemu-test/src/dtc/libfdt/fdt.c
	 DEP /tmp/qemu-test/src/dtc/util.c
	 DEP /tmp/qemu-test/src/dtc/fdtput.c
	 DEP /tmp/qemu-test/src/dtc/fdtget.c
	 LEX convert-dtsv0-lexer.lex.c
	 DEP /tmp/qemu-test/src/dtc/fdtdump.c
make[1]: flex: Command not found
	 DEP /tmp/qemu-test/src/dtc/srcpos.c
	 BISON dtc-parser.tab.c
make[1]: bison: Command not found
	 LEX dtc-lexer.lex.c
	 DEP /tmp/qemu-test/src/dtc/treesource.c
make[1]: flex: Command not found
	 DEP /tmp/qemu-test/src/dtc/livetree.c
	 DEP /tmp/qemu-test/src/dtc/flattree.c
	 DEP /tmp/qemu-test/src/dtc/fstree.c
	 DEP /tmp/qemu-test/src/dtc/data.c
	 DEP /tmp/qemu-test/src/dtc/dtc.c
	 DEP /tmp/qemu-test/src/dtc/checks.c
	CHK version_gen.h
	 BISON dtc-parser.tab.c
	 LEX dtc-lexer.lex.c
	 LEX convert-dtsv0-lexer.lex.c
make[1]: bison: Command not found
make[1]: flex: Command not found
make[1]: flex: Command not found
	UPD version_gen.h
	 DEP /tmp/qemu-test/src/dtc/util.c
	 LEX convert-dtsv0-lexer.lex.c
make[1]: flex: Command not found
	 BISON dtc-parser.tab.c
make[1]: bison: Command not found
	 LEX dtc-lexer.lex.c
make[1]: flex: Command not found
	 CC libfdt/fdt_ro.o
	 CC libfdt/fdt.o
	 CC libfdt/fdt_wip.o
	 CC libfdt/fdt_sw.o
	 CC libfdt/fdt_strerror.o
	 CC libfdt/fdt_empty_tree.o
	 CC libfdt/fdt_rw.o
	 CC libfdt/fdt_addresses.o
	 CC libfdt/fdt_overlay.o
	 AR libfdt/libfdt.a
ar: creating libfdt/libfdt.a
a - libfdt/fdt.o
a - libfdt/fdt_ro.o
a - libfdt/fdt_wip.o
a - libfdt/fdt_sw.o
a - libfdt/fdt_rw.o
a - libfdt/fdt_strerror.o
a - libfdt/fdt_empty_tree.o
a - libfdt/fdt_addresses.o
a - libfdt/fdt_overlay.o
	 BISON dtc-parser.tab.c
	 LEX dtc-lexer.lex.c
make[1]: bison: Command not found
make[1]: flex: Command not found
	 LEX convert-dtsv0-lexer.lex.c
make[1]: flex: Command not found
  CC      tests/qemu-iotests/socket_scm_helper.o
  GEN     qga/qapi-generated/qga-qmp-commands.h
  GEN     qga/qapi-generated/qga-qapi-types.h
  GEN     qga/qapi-generated/qga-qapi-types.c
  GEN     qga/qapi-generated/qga-qmp-marshal.c
  GEN     qga/qapi-generated/qga-qapi-visit.c
  CC      qmp-introspect.o
  GEN     qga/qapi-generated/qga-qapi-visit.h
  CC      qapi-types.o
  CC      qapi-visit.o
  CC      qapi-event.o
  CC      qapi/qapi-visit-core.o
  CC      qapi/qapi-dealloc-visitor.o
  CC      qapi/qobject-input-visitor.o
  CC      qapi/qobject-output-visitor.o
  CC      qapi/qmp-registry.o
  CC      qapi/qmp-dispatch.o
  CC      qapi/string-input-visitor.o
  CC      qapi/string-output-visitor.o
  CC      qapi/opts-visitor.o
  CC      qapi/qmp-event.o
  CC      qapi/qapi-clone-visitor.o
  CC      qapi/qapi-util.o
  CC      qobject/qnull.o
  CC      qobject/qint.o
  CC      qobject/qstring.o
  CC      qobject/qlist.o
  CC      qobject/qdict.o
  CC      qobject/qfloat.o
  CC      qobject/qbool.o
  CC      qobject/qobject.o
  CC      qobject/json-lexer.o
  CC      qobject/qjson.o
  CC      qobject/json-streamer.o
  CC      qobject/json-parser.o
  CC      trace/control.o
  CC      trace/qmp.o
  CC      util/osdep.o
  CC      util/cutils.o
  CC      util/unicode.o
  CC      util/qemu-timer-common.o
  CC      util/bufferiszero.o
  CC      util/lockcnt.o
  CC      util/aiocb.o
  CC      util/async.o
  CC      util/thread-pool.o
  CC      util/main-loop.o
  CC      util/qemu-timer.o
  CC      util/iohandler.o
  CC      util/aio-posix.o
  CC      util/compatfd.o
  CC      util/event_notifier-posix.o
  CC      util/mmap-alloc.o
  CC      util/oslib-posix.o
  CC      util/qemu-openpty.o
  CC      util/qemu-thread-posix.o
  CC      util/memfd.o
  CC      util/envlist.o
  CC      util/path.o
  CC      util/module.o
  CC      util/host-utils.o
  CC      util/bitmap.o
  CC      util/bitops.o
  CC      util/hbitmap.o
  CC      util/fifo8.o
  CC      util/acl.o
  CC      util/error.o
  CC      util/qemu-error.o
  CC      util/id.o
  CC      util/iov.o
  CC      util/qemu-config.o
  CC      util/qemu-sockets.o
  CC      util/uri.o
  CC      util/notify.o
  CC      util/qemu-option.o
  CC      util/qemu-progress.o
  CC      util/keyval.o
  CC      util/crc32c.o
  CC      util/uuid.o
  CC      util/hexdump.o
  CC      util/throttle.o
  CC      util/getauxval.o
  CC      util/readline.o
  CC      util/rcu.o
  CC      util/qemu-coroutine.o
  CC      util/qemu-coroutine-lock.o
  CC      util/qemu-coroutine-io.o
  CC      util/qemu-coroutine-sleep.o
  CC      util/coroutine-ucontext.o
  CC      util/buffer.o
  CC      util/timed-average.o
  CC      util/base64.o
  CC      util/log.o
  CC      util/qdist.o
  CC      util/qht.o
  CC      util/range.o
  CC      util/systemd.o
  CC      trace-root.o
  CC      util/trace.o
  CC      crypto/trace.o
  CC      io/trace.o
  CC      migration/trace.o
  CC      block/trace.o
  CC      backends/trace.o
  CC      chardev/trace.o
  CC      hw/block/trace.o
  CC      hw/block/dataplane/trace.o
  CC      hw/char/trace.o
  CC      hw/intc/trace.o
  CC      hw/net/trace.o
  CC      hw/audio/trace.o
  CC      hw/virtio/trace.o
  CC      hw/misc/trace.o
  CC      hw/usb/trace.o
  CC      hw/scsi/trace.o
  CC      hw/nvram/trace.o
  CC      hw/display/trace.o
  CC      hw/input/trace.o
  CC      hw/timer/trace.o
  CC      hw/dma/trace.o
  CC      hw/sd/trace.o
  CC      hw/sparc/trace.o
  CC      hw/isa/trace.o
  CC      hw/mem/trace.o
  CC      hw/i386/trace.o
  CC      hw/i386/xen/trace.o
  CC      hw/9pfs/trace.o
  CC      hw/ppc/trace.o
  CC      hw/pci/trace.o
  CC      hw/s390x/trace.o
  CC      hw/vfio/trace.o
  CC      hw/acpi/trace.o
  CC      hw/alpha/trace.o
  CC      hw/xen/trace.o
  CC      hw/arm/trace.o
  CC      ui/trace.o
  CC      audio/trace.o
  CC      net/trace.o
  CC      target/arm/trace.o
  CC      target/i386/trace.o
  CC      target/mips/trace.o
  CC      target/sparc/trace.o
  CC      target/s390x/trace.o
  CC      target/ppc/trace.o
  CC      qom/trace.o
  CC      linux-user/trace.o
  CC      qapi/trace.o
  CC      crypto/pbkdf-stub.o
  CC      stubs/arch-query-cpu-def.o
  CC      stubs/arch-query-cpu-model-expansion.o
  CC      stubs/bdrv-next-monitor-owned.o
  CC      stubs/arch-query-cpu-model-comparison.o
  CC      stubs/arch-query-cpu-model-baseline.o
  CC      stubs/blk-commit-all.o
  CC      stubs/blockdev-close-all-bdrv-states.o
  CC      stubs/clock-warp.o
  CC      stubs/dump.o
  CC      stubs/cpu-get-icount.o
  CC      stubs/cpu-get-clock.o
  CC      stubs/error-printf.o
  CC      stubs/fdset.o
  CC      stubs/get-vm-name.o
  CC      stubs/gdbstub.o
  CC      stubs/iothread.o
  CC      stubs/iothread-lock.o
  CC      stubs/is-daemonized.o
  CC      stubs/machine-init-done.o
  CC      stubs/migr-blocker.o
  CC      stubs/monitor.o
  CC      stubs/qtest.o
  CC      stubs/notify-event.o
  CC      stubs/replay.o
  CC      stubs/runstate-check.o
  CC      stubs/set-fd-handler.o
  CC      stubs/sysbus.o
  CC      stubs/trace-control.o
  CC      stubs/slirp.o
  CC      stubs/uuid.o
  CC      stubs/vm-stop.o
  CC      stubs/vmstate.o
  CC      stubs/qmp_pc_dimm_device_list.o
  CC      stubs/target-monitor-defs.o
  CC      stubs/target-get-monitor-def.o
  CC      stubs/pc_madt_cpu_entry.o
  CC      stubs/vmgenid.o
  CC      stubs/xen-common.o
  CC      contrib/ivshmem-client/main.o
  CC      contrib/ivshmem-client/ivshmem-client.o
  CC      stubs/xen-hvm.o
  CC      contrib/ivshmem-server/ivshmem-server.o
  CC      contrib/ivshmem-server/main.o
  CC      qemu-nbd.o
  CC      block.o
  CC      blockjob.o
  CC      qemu-io-cmds.o
  CC      replication.o
  CC      block/raw-format.o
  CC      block/qcow.o
  CC      block/vdi.o
  CC      block/vmdk.o
  CC      block/cloop.o
  CC      block/bochs.o
  CC      block/vvfat.o
  CC      block/dmg.o
  CC      block/vpc.o
  CC      block/qcow2.o
  CC      block/qcow2-refcount.o
  CC      block/qcow2-cluster.o
  CC      block/qcow2-snapshot.o
  CC      block/qcow2-cache.o
  CC      block/qed.o
  CC      block/qed-gencb.o
  CC      block/qed-l2-cache.o
  CC      block/qed-table.o
  CC      block/qed-cluster.o
  CC      block/qed-check.o
  CC      block/vhdx.o
  CC      block/vhdx-endian.o
  CC      block/vhdx-log.o
  CC      block/quorum.o
  CC      block/parallels.o
  CC      block/blkdebug.o
  CC      block/blkverify.o
  CC      block/blkreplay.o
  CC      block/block-backend.o
  CC      block/snapshot.o
  CC      block/qapi.o
  CC      block/file-posix.o
  CC      block/null.o
  CC      block/mirror.o
  CC      block/commit.o
  CC      block/io.o
  CC      block/throttle-groups.o
  CC      block/nbd.o
  CC      block/nbd-client.o
  CC      block/sheepdog.o
  CC      block/accounting.o
  CC      block/dirty-bitmap.o
  CC      block/write-threshold.o
  CC      block/backup.o
  CC      block/crypto.o
  CC      nbd/server.o
  CC      block/replication.o
  CC      nbd/client.o
  CC      crypto/init.o
  CC      nbd/common.o
  CC      crypto/hash.o
  CC      crypto/hash-glib.o
  CC      crypto/hmac.o
  CC      crypto/hmac-glib.o
  CC      crypto/aes.o
  CC      crypto/desrfb.o
  CC      crypto/cipher.o
  CC      crypto/tlscreds.o
  CC      crypto/tlscredsx509.o
  CC      crypto/tlscredsanon.o
  CC      crypto/tlssession.o
  CC      crypto/secret.o
  CC      crypto/random-platform.o
  CC      crypto/pbkdf.o
  CC      crypto/ivgen.o
  CC      crypto/ivgen-essiv.o
  CC      crypto/ivgen-plain.o
  CC      crypto/ivgen-plain64.o
  CC      crypto/afsplit.o
  CC      crypto/block.o
  CC      crypto/xts.o
  CC      crypto/block-qcow.o
  CC      io/channel.o
  CC      crypto/block-luks.o
  CC      io/channel-buffer.o
  CC      io/channel-command.o
  CC      io/channel-file.o
  CC      io/channel-socket.o
  CC      io/channel-tls.o
  CC      io/channel-watch.o
  CC      io/channel-websock.o
  CC      io/channel-util.o
  CC      io/task.o
  CC      io/dns-resolver.o
  CC      qom/object.o
  CC      qom/qom-qobject.o
  CC      qom/container.o
  CC      qom/object_interfaces.o
  GEN     qemu-img-cmds.h
  CC      qemu-io.o
  CC      qemu-bridge-helper.o
  CC      blockdev.o
  CC      blockdev-nbd.o
  CC      qdev-monitor.o
  CC      iothread.o
  CC      device-hotplug.o
  CC      os-posix.o
  CC      accel.o
  CC      bt-host.o
  CC      bt-vhci.o
  CC      dma-helpers.o
  CC      vl.o
  CC      tpm.o
  CC      device_tree.o
  CC      qmp-marshal.o
  CC      qmp.o
  CC      hmp.o
  CC      cpus-common.o
  CC      audio/audio.o
  CC      audio/noaudio.o
  CC      audio/wavaudio.o
  CC      audio/mixeng.o
  CC      audio/sdlaudio.o
  CC      audio/ossaudio.o
  CC      backends/rng.o
  CC      audio/wavcapture.o
  CC      backends/rng-egd.o
  CC      backends/rng-random.o
  CC      backends/tpm.o
  CC      backends/hostmem.o
  CC      backends/hostmem-ram.o
  CC      backends/hostmem-file.o
  CC      backends/cryptodev.o
  CC      backends/cryptodev-builtin.o
  CC      block/stream.o
  CC      chardev/wctablet.o
  CC      chardev/msmouse.o
  CC      chardev/testdev.o
  CC      disas/arm.o
  CC      fsdev/qemu-fsdev-dummy.o
  CC      disas/i386.o
  CC      fsdev/qemu-fsdev-opts.o
  CC      fsdev/qemu-fsdev-throttle.o
  CC      hw/acpi/core.o
  CC      hw/acpi/pcihp.o
  CC      hw/acpi/piix4.o
  CC      hw/acpi/ich9.o
  CC      hw/acpi/tco.o
  CC      hw/acpi/cpu_hotplug.o
  CC      hw/acpi/memory_hotplug.o
  CC      hw/acpi/nvdimm.o
  CC      hw/acpi/cpu.o
  CC      hw/acpi/vmgenid.o
  CC      hw/acpi/acpi_interface.o
  CC      hw/acpi/bios-linker-loader.o
  CC      hw/acpi/aml-build.o
  CC      hw/acpi/ipmi.o
  CC      hw/acpi/acpi-stub.o
  CC      hw/acpi/ipmi-stub.o
  CC      hw/audio/sb16.o
  CC      hw/audio/es1370.o
  CC      hw/audio/ac97.o
  CC      hw/audio/fmopl.o
  CC      hw/audio/adlib.o
  CC      hw/audio/gus.o
  CC      hw/audio/gusemu_hal.o
  CC      hw/audio/gusemu_mixer.o
  CC      hw/audio/cs4231a.o
  CC      hw/audio/intel-hda.o
  CC      hw/audio/pcspk.o
  CC      hw/audio/wm8750.o
  CC      hw/audio/hda-codec.o
  CC      hw/audio/pl041.o
  CC      hw/audio/lm4549.o
  CC      hw/audio/marvell_88w8618.o
  CC      hw/audio/soundhw.o
  CC      hw/block/block.o
  CC      hw/block/hd-geometry.o
  CC      hw/block/cdrom.o
  CC      hw/block/fdc.o
  CC      hw/block/m25p80.o
  CC      hw/block/nand.o
  CC      hw/block/pflash_cfi01.o
  CC      hw/block/pflash_cfi02.o
  CC      hw/block/ecc.o
  CC      hw/block/onenand.o
  CC      hw/block/nvme.o
  CC      hw/bt/core.o
  CC      hw/bt/l2cap.o
  CC      hw/bt/sdp.o
  CC      hw/bt/hci.o
  CC      hw/bt/hid.o
  CC      hw/bt/hci-csr.o
  CC      hw/char/ipoctal232.o
  CC      hw/char/parallel.o
  CC      hw/char/pl011.o
  CC      hw/char/serial.o
  CC      hw/char/serial-pci.o
  CC      hw/char/serial-isa.o
  CC      hw/char/cadence_uart.o
  CC      hw/char/virtio-console.o
  CC      hw/char/imx_serial.o
  CC      hw/core/qdev.o
  CC      hw/char/debugcon.o
  CC      hw/core/qdev-properties.o
  CC      hw/core/bus.o
  CC      hw/core/reset.o
  CC      hw/core/fw-path-provider.o
  CC      hw/core/irq.o
  CC      hw/core/hotplug.o
  CC      hw/core/nmi.o
  CC      hw/core/ptimer.o
  CC      hw/core/sysbus.o
  CC      hw/core/machine.o
  CC      hw/core/loader.o
  CC      hw/core/qdev-properties-system.o
  CC      hw/core/register.o
  CC      hw/core/or-irq.o
  CC      hw/core/platform-bus.o
  CC      hw/cpu/core.o
  CC      hw/display/ads7846.o
  CC      hw/display/cirrus_vga.o
  CC      hw/display/ssd0303.o
  CC      hw/display/pl110.o
  CC      hw/display/vga-pci.o
  CC      hw/display/vga-isa.o
  CC      hw/display/ssd0323.o
  CC      hw/display/vmware_vga.o
  CC      hw/display/blizzard.o
  CC      hw/display/exynos4210_fimd.o
  CC      hw/display/framebuffer.o
  CC      hw/display/tc6393xb.o
  CC      hw/dma/pl080.o
  CC      hw/dma/pl330.o
  CC      hw/dma/i8257.o
  CC      hw/dma/xlnx-zynq-devcfg.o
  CC      hw/gpio/max7310.o
  CC      hw/gpio/pl061.o
  CC      hw/gpio/gpio_key.o
  CC      hw/gpio/zaurus.o
  CC      hw/i2c/core.o
  CC      hw/i2c/smbus.o
  CC      hw/i2c/smbus_eeprom.o
  CC      hw/i2c/i2c-ddc.o
  CC      hw/i2c/versatile_i2c.o
  CC      hw/i2c/smbus_ich9.o
  CC      hw/i2c/bitbang_i2c.o
  CC      hw/i2c/pm_smbus.o
  CC      hw/i2c/exynos4210_i2c.o
  CC      hw/i2c/imx_i2c.o
  CC      hw/i2c/aspeed_i2c.o
  CC      hw/ide/atapi.o
  CC      hw/ide/qdev.o
  CC      hw/ide/core.o
  CC      hw/ide/pci.o
  CC      hw/ide/isa.o
  CC      hw/ide/piix.o
  CC      hw/ide/microdrive.o
  CC      hw/ide/ahci.o
  CC      hw/ide/ich.o
  CC      hw/input/hid.o
  CC      hw/input/lm832x.o
  CC      hw/input/pckbd.o
  CC      hw/input/ps2.o
  CC      hw/input/pl050.o
  CC      hw/input/stellaris_input.o
  CC      hw/input/tsc2005.o
  CC      hw/input/vmmouse.o
  CC      hw/input/virtio-input.o
  CC      hw/input/virtio-input-hid.o
  CC      hw/input/virtio-input-host.o
  CC      hw/intc/i8259_common.o
  CC      hw/intc/i8259.o
  CC      hw/intc/pl190.o
  CC      hw/intc/imx_avic.o
  CC      hw/intc/realview_gic.o
  CC      hw/intc/ioapic_common.o
  CC      hw/intc/arm_gic_common.o
  CC      hw/intc/arm_gic.o
  CC      hw/intc/arm_gicv2m.o
  CC      hw/intc/arm_gicv3_common.o
  CC      hw/intc/arm_gicv3.o
  CC      hw/intc/arm_gicv3_dist.o
  CC      hw/intc/arm_gicv3_redist.o
  CC      hw/intc/intc.o
  CC      hw/intc/arm_gicv3_its_common.o
  CC      hw/ipack/ipack.o
  CC      hw/ipack/tpci200.o
  CC      hw/ipmi/ipmi.o
  CC      hw/ipmi/ipmi_bmc_sim.o
  CC      hw/ipmi/ipmi_bmc_extern.o
  CC      hw/ipmi/isa_ipmi_kcs.o
  CC      hw/isa/isa-bus.o
  CC      hw/ipmi/isa_ipmi_bt.o
  CC      hw/isa/apm.o
  CC      hw/mem/pc-dimm.o
  CC      hw/mem/nvdimm.o
  CC      hw/misc/max111x.o
  CC      hw/misc/applesmc.o
  CC      hw/misc/tmp105.o
  CC      hw/misc/tmp421.o
  CC      hw/misc/debugexit.o
  CC      hw/misc/sga.o
  CC      hw/misc/pc-testdev.o
  CC      hw/misc/unimp.o
  CC      hw/misc/arm_l2x0.o
  CC      hw/misc/pci-testdev.o
  CC      hw/misc/arm_integrator_debug.o
  CC      hw/misc/a9scu.o
  CC      hw/net/ne2000.o
  CC      hw/misc/arm11scu.o
  CC      hw/net/eepro100.o
  CC      hw/net/pcnet-pci.o
  CC      hw/net/e1000.o
  CC      hw/net/pcnet.o
  CC      hw/net/e1000x_common.o
  CC      hw/net/net_tx_pkt.o
  CC      hw/net/net_rx_pkt.o
  CC      hw/net/e1000e.o
  CC      hw/net/e1000e_core.o
  CC      hw/net/vmxnet3.o
  CC      hw/net/rtl8139.o
  CC      hw/net/smc91c111.o
  CC      hw/net/lan9118.o
  CC      hw/net/ne2000-isa.o
  CC      hw/net/xgmac.o
  CC      hw/net/allwinner_emac.o
  CC      hw/net/imx_fec.o
  CC      hw/net/cadence_gem.o
  CC      hw/net/stellaris_enet.o
  CC      hw/net/ftgmac100.o
  CC      hw/net/rocker/rocker.o
In file included from /tmp/qemu-test/src/hw/net/vmxnet3.c:30:
/tmp/qemu-test/src/include/migration/register.h:18: error: redefinition of typedef ‘LoadStateHandler’
/tmp/qemu-test/src/include/migration/vmstate.h:32: note: previous declaration of ‘LoadStateHandler’ was here
make: *** [hw/net/vmxnet3.o] Error 1
make: *** Waiting for unfinished jobs....
tests/docker/Makefile.include:118: recipe for target 'docker-run' failed
make[1]: *** [docker-run] Error 2
make[1]: Leaving directory '/var/tmp/patchew-tester-tmp-y6tvfe3p/src'
tests/docker/Makefile.include:149: recipe for target 'docker-run-test-quick@centos6' failed
make: *** [docker-run-test-quick@centos6] Error 2
=== OUTPUT END ===

Test command exited with code: 2


---
Email generated automatically by Patchew [http://patchew.org/].
Please send your feedback to patchew-devel@freelists.org

^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: [Qemu-devel] [PATCH 1/3] travis: install more library dependencies
  2017-06-13 15:54 ` [Qemu-devel] [PATCH 1/3] travis: install more library dependencies Peter Maydell
@ 2017-06-14  3:52   ` Philippe Mathieu-Daudé
  2017-06-14 15:07     ` Paolo Bonzini
  2017-06-14 14:45   ` Alex Bennée
  2017-06-14 15:15   ` Daniel P. Berrange
  2 siblings, 1 reply; 20+ messages in thread
From: Philippe Mathieu-Daudé @ 2017-06-14  3:52 UTC (permalink / raw)
  To: Peter Maydell, qemu-devel
  Cc: Paolo Bonzini, Alex Bennée, Markus Armbruster, patches

As you said, due to Travis using Ubuntu still not all libs get detected 
but at least the following:

  $ ./configure ${CONFIG}
-VirtFS support    no
+VirtFS support    yes
-bluez  support    no
+bluez  support    yes
-xfsctl support    no
+xfsctl support    yes
-lzo support       no
+lzo support       yes
-snappy support    no
+snappy support    yes

Using debian based docker images on Shippable we also get:

-nettle            no
-nettle kdf        no
+nettle            yes (3.3)
+nettle kdf        yes
-rbd support       no
+rbd support       yes
-vde support       no
+vde support       yes
-GlusterFS support no
+GlusterFS support yes
-libnfs support    no
+libnfs support    yes

On 06/13/2017 12:54 PM, Peter Maydell wrote:
> 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 <peter.maydell@linaro.org>

Tested-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>

> ---
>  .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
>
>  # 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:
>

^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: [Qemu-devel] [PATCH 1/3] travis: install more library dependencies
  2017-06-13 15:54 ` [Qemu-devel] [PATCH 1/3] travis: install more library dependencies Peter Maydell
  2017-06-14  3:52   ` Philippe Mathieu-Daudé
@ 2017-06-14 14:45   ` Alex Bennée
  2017-06-14 15:15   ` Daniel P. Berrange
  2 siblings, 0 replies; 20+ messages in thread
From: Alex Bennée @ 2017-06-14 14:45 UTC (permalink / raw)
  To: Peter Maydell; +Cc: qemu-devel, patches, Paolo Bonzini, Markus Armbruster


Peter Maydell <peter.maydell@linaro.org> writes:

> 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 <peter.maydell@linaro.org>

Reviewed-by: Alex Bennée <alex.bennee@linaro.org>

> ---
>  .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
>
>  # 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:


--
Alex Bennée

^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: [Qemu-devel] [PATCH 2/3] scripts/run-coverity-scan: Script to run Coverity Scan build
  2017-06-13 15:54 ` [Qemu-devel] [PATCH 2/3] scripts/run-coverity-scan: Script to run Coverity Scan build Peter Maydell
@ 2017-06-14 15:01   ` Alex Bennée
  2017-06-29 16:12   ` Eric Blake
  1 sibling, 0 replies; 20+ messages in thread
From: Alex Bennée @ 2017-06-14 15:01 UTC (permalink / raw)
  To: Peter Maydell; +Cc: qemu-devel, patches, Paolo Bonzini, Markus Armbruster


Peter Maydell <peter.maydell@linaro.org> writes:

> 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 <peter.maydell@linaro.org>

Reviewed-by: Alex Bennée <alex.bennee@linaro.org>

> ---
>  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="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:<date>}
> +# 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."


--
Alex Bennée

^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: [Qemu-devel] [PATCH 1/3] travis: install more library dependencies
  2017-06-14  3:52   ` Philippe Mathieu-Daudé
@ 2017-06-14 15:07     ` Paolo Bonzini
  2017-06-14 15:37       ` Philippe Mathieu-Daudé
  0 siblings, 1 reply; 20+ messages in thread
From: Paolo Bonzini @ 2017-06-14 15:07 UTC (permalink / raw)
  To: Philippe Mathieu-Daudé, Peter Maydell, qemu-devel
  Cc: Alex Bennée, Markus Armbruster, patches



On 14/06/2017 05:52, Philippe Mathieu-Daudé wrote:
> As you said, due to Travis using Ubuntu still not all libs get detected
> but at least the following:
> 
>  $ ./configure ${CONFIG}
> -VirtFS support    no
> +VirtFS support    yes
> -bluez  support    no
> +bluez  support    yes
> -xfsctl support    no
> +xfsctl support    yes
> -lzo support       no
> +lzo support       yes
> -snappy support    no
> +snappy support    yes
> 
> Using debian based docker images on Shippable we also get:
> 
> -nettle            no
> -nettle kdf        no
> +nettle            yes (3.3)
> +nettle kdf        yes
> -rbd support       no
> +rbd support       yes
> -vde support       no
> +vde support       yes
> -GlusterFS support no
> +GlusterFS support yes
> -libnfs support    no
> +libnfs support    yes

So this leaves out only rdma and iscsi?

I don't know travis vs. shippable very well, can you provide a similar
patch to shippable?

Paolo

> On 06/13/2017 12:54 PM, Peter Maydell wrote:
>> 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 <peter.maydell@linaro.org>
> 
> Tested-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
> Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
> 
>> ---
>>  .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
>>
>>  # 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:
>>

^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: [Qemu-devel] [PATCH 3/3] travis: Add config to do a Coverity Scan upload
  2017-06-13 15:54 ` [Qemu-devel] [PATCH 3/3] travis: Add config to do a Coverity Scan upload Peter Maydell
@ 2017-06-14 15:14   ` Alex Bennée
  2017-06-14 15:46     ` Peter Maydell
  0 siblings, 1 reply; 20+ messages in thread
From: Alex Bennée @ 2017-06-14 15:14 UTC (permalink / raw)
  To: Peter Maydell; +Cc: qemu-devel, patches, Paolo Bonzini, Markus Armbruster


Peter Maydell <peter.maydell@linaro.org> writes:

> 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 <peter.maydell@linaro.org>
> ---
>  .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=""
>        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

I think we ought to add a sudo: stanza here to make it explicit if we
want the containerised or VM based trusty image here. I'm wildly
assuming we need lots of memory for this build so I would suggest:

 sudo: required

> +      env:
> +        - COVERITY=1
> +        - COVERITY_BUILD_CMD="make -j3"
> +        - COVERITY_EMAIL=peter.maydell@linaro.org
> +        # This 'secure' setting sets COVERITY_TOKEN=<secret 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

This doesn't actually skip anything - but you can't exit non-zero
without breaking the build. You would need to touch a file or something
to make run-coverity-scan skip its work.

> +      script:
> +        - ./scripts/run-coverity-scan


--
Alex Bennée

^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: [Qemu-devel] [PATCH 1/3] travis: install more library dependencies
  2017-06-13 15:54 ` [Qemu-devel] [PATCH 1/3] travis: install more library dependencies Peter Maydell
  2017-06-14  3:52   ` Philippe Mathieu-Daudé
  2017-06-14 14:45   ` Alex Bennée
@ 2017-06-14 15:15   ` Daniel P. Berrange
  2017-06-14 15:25     ` Philippe Mathieu-Daudé
  2 siblings, 1 reply; 20+ messages in thread
From: Daniel P. Berrange @ 2017-06-14 15:15 UTC (permalink / raw)
  To: Peter Maydell
  Cc: qemu-devel, Paolo Bonzini, Alex Bennée, Markus Armbruster, patches

On Tue, Jun 13, 2017 at 04:54:48PM +0100, Peter Maydell wrote:
> 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 <peter.maydell@linaro.org>

I'm seeing the OS-X and GProf/GCov enable build entries fail with
timeouts a reasonable amount of time, so turning on more features
will make timeouts hit even more frequently. This patch would at
least impact the GProf/GCov matrix entry in this respect. Is there
anything we can do to mitigate this problem ?

> ---
>  .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
>  
>  # 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:
> -- 
> 2.7.4
> 
> 

Regards,
Daniel
-- 
|: https://berrange.com      -o-    https://www.flickr.com/photos/dberrange :|
|: https://libvirt.org         -o-            https://fstop138.berrange.com :|
|: https://entangle-photo.org    -o-    https://www.instagram.com/dberrange :|

^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: [Qemu-devel] [PATCH 1/3] travis: install more library dependencies
  2017-06-14 15:15   ` Daniel P. Berrange
@ 2017-06-14 15:25     ` Philippe Mathieu-Daudé
  0 siblings, 0 replies; 20+ messages in thread
From: Philippe Mathieu-Daudé @ 2017-06-14 15:25 UTC (permalink / raw)
  To: Daniel P. Berrange, Peter Maydell
  Cc: Paolo Bonzini, patches, Alex Bennée, qemu-devel, Markus Armbruster

On 06/14/2017 12:15 PM, Daniel P. Berrange wrote:
> On Tue, Jun 13, 2017 at 04:54:48PM +0100, Peter Maydell wrote:
>> 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 <peter.maydell@linaro.org>
>
> I'm seeing the OS-X and GProf/GCov enable build entries fail with
> timeouts a reasonable amount of time, so turning on more features
> will make timeouts hit even more frequently. This patch would at
> least impact the GProf/GCov matrix entry in this respect. Is there
> anything we can do to mitigate this problem ?

There are few things we can tune:
https://docs.travis-ci.com/user/common-build-problems#my-builds-are-timing-out

But it seems easier to split the matrix a bit more, i.e. using 
--disable-system and --disable-linux/bsd-user, having a job only 
building full documentation (not compiling) and all other jobs using 
--disable-docs and so.

>> ---
>>  .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
>>
>>  # 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:
>> --
>> 2.7.4
>>
>>
>
> Regards,
> Daniel
>

^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: [Qemu-devel] [PATCH 1/3] travis: install more library dependencies
  2017-06-14 15:07     ` Paolo Bonzini
@ 2017-06-14 15:37       ` Philippe Mathieu-Daudé
  2017-06-14 16:49         ` Paolo Bonzini
  0 siblings, 1 reply; 20+ messages in thread
From: Philippe Mathieu-Daudé @ 2017-06-14 15:37 UTC (permalink / raw)
  To: Paolo Bonzini, Peter Maydell, qemu-devel
  Cc: Alex Bennée, Markus Armbruster, patches, Fam Zheng

On 06/14/2017 12:07 PM, Paolo Bonzini wrote:
>
>
> On 14/06/2017 05:52, Philippe Mathieu-Daudé wrote:
>> As you said, due to Travis using Ubuntu still not all libs get detected
>> but at least the following:
>>
>>  $ ./configure ${CONFIG}
>> -VirtFS support    no
>> +VirtFS support    yes
>> -bluez  support    no
>> +bluez  support    yes
>> -xfsctl support    no
>> +xfsctl support    yes
>> -lzo support       no
>> +lzo support       yes
>> -snappy support    no
>> +snappy support    yes
>>
>> Using debian based docker images on Shippable we also get:
>>
>> -nettle            no
>> -nettle kdf        no
>> +nettle            yes (3.3)
>> +nettle kdf        yes
>> -rbd support       no
>> +rbd support       yes
>> -vde support       no
>> +vde support       yes
>> -GlusterFS support no
>> +GlusterFS support yes
>> -libnfs support    no
>> +libnfs support    yes
>
> So this leaves out only rdma and iscsi?
>
> I don't know travis vs. shippable very well, can you provide a similar
> patch to shippable?

Travis base images are Ubuntu based, as said Peter "some of our 
dependencies need versions that are closer to the bleeding edge than 
those distros provide".
With Shippable we can use our own docker images, i.e. for 
cross-compiling we use debian/stable.

I already provided a branch doing that on Shippable reviewed by Alex/Fam:
https://github.com/philmd/qemu/tree/docker_shippable_v5
I believe it is in Fam's queue.

You can check output here:

https://app.shippable.com/github/philmd/qemu/runs/78/1/console

   ./configure ${QEMU_CONFIGURE_OPTS} --target-list=${TARGET_LIST}
   target list       arm-softmmu arm-linux-user armeb-linux-user
   ...
   RDMA support      yes
   ...
   libiscsi support  yes

>
> Paolo
>
>> On 06/13/2017 12:54 PM, Peter Maydell wrote:
>>> 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 <peter.maydell@linaro.org>
>>
>> Tested-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
>> Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
>>
>>> ---
>>>  .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
>>>
>>>  # 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:
>>>
>

^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: [Qemu-devel] [PATCH 3/3] travis: Add config to do a Coverity Scan upload
  2017-06-14 15:14   ` Alex Bennée
@ 2017-06-14 15:46     ` Peter Maydell
  0 siblings, 0 replies; 20+ messages in thread
From: Peter Maydell @ 2017-06-14 15:46 UTC (permalink / raw)
  To: Alex Bennée
  Cc: QEMU Developers, patches, Paolo Bonzini, Markus Armbruster

On 14 June 2017 at 16:14, Alex Bennée <alex.bennee@linaro.org> wrote:
>
> Peter Maydell <peter.maydell@linaro.org> writes:
>
>> 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 <peter.maydell@linaro.org>
>> ---
>>  .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=""
>>        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
>
> I think we ought to add a sudo: stanza here to make it explicit if we
> want the containerised or VM based trusty image here. I'm wildly
> assuming we need lots of memory for this build so I would suggest:
>
>  sudo: required

It works with both, and the default as set in the top of the travis
config is for not-required so that's what I went with. I think the
sudo:required setups give you less CPU which makes it even more
likely to hit the 50 minute timeout.

>> +      env:
>> +        - COVERITY=1
>> +        - COVERITY_BUILD_CMD="make -j3"
>> +        - COVERITY_EMAIL=peter.maydell@linaro.org
>> +        # This 'secure' setting sets COVERITY_TOKEN=<secret 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
>
> This doesn't actually skip anything - but you can't exit non-zero
> without breaking the build. You would need to touch a file or something
> to make run-coverity-scan skip its work.

Yes, you're right. That's a bit awkward.

thanks
-- PMM

^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: [Qemu-devel] [PATCH 1/3] travis: install more library dependencies
  2017-06-14 15:37       ` Philippe Mathieu-Daudé
@ 2017-06-14 16:49         ` Paolo Bonzini
  2017-06-14 17:04           ` Peter Maydell
  2017-06-29 14:37           ` Peter Maydell
  0 siblings, 2 replies; 20+ messages in thread
From: Paolo Bonzini @ 2017-06-14 16:49 UTC (permalink / raw)
  To: Philippe Mathieu-Daudé, Peter Maydell, qemu-devel
  Cc: Alex Bennée, Markus Armbruster, patches, Fam Zheng



On 14/06/2017 17:37, Philippe Mathieu-Daudé wrote:
> On 06/14/2017 12:07 PM, Paolo Bonzini wrote:
>>
>>
>> On 14/06/2017 05:52, Philippe Mathieu-Daudé wrote:
>>> As you said, due to Travis using Ubuntu still not all libs get detected
>>> but at least the following:
>>>
>>>  $ ./configure ${CONFIG}
>>> -VirtFS support    no
>>> +VirtFS support    yes
>>> -bluez  support    no
>>> +bluez  support    yes
>>> -xfsctl support    no
>>> +xfsctl support    yes
>>> -lzo support       no
>>> +lzo support       yes
>>> -snappy support    no
>>> +snappy support    yes
>>>
>>> Using debian based docker images on Shippable we also get:
>>>
>>> -nettle            no
>>> -nettle kdf        no
>>> +nettle            yes (3.3)
>>> +nettle kdf        yes
>>> -rbd support       no
>>> +rbd support       yes
>>> -vde support       no
>>> +vde support       yes
>>> -GlusterFS support no
>>> +GlusterFS support yes
>>> -libnfs support    no
>>> +libnfs support    yes
>>
>> So this leaves out only rdma and iscsi?
>>
>> I don't know travis vs. shippable very well, can you provide a similar
>> patch to shippable?
> 
> Travis base images are Ubuntu based, as said Peter "some of our
> dependencies need versions that are closer to the bleeding edge than
> those distros provide".

Well, trusty is 3 years old by now... I wouldn't call that bleeding
edge, and it seems like Travis is suggesting using Docker images for
those who want to use a newer distro.  This patch and patch 2 are
useful, but I think I'd rather get full coverage, either with Shippable
or by keeping on doing manual builds, than to rush things and switch to
CI when it's not ready.

First, I don't think it's accurate to say that scans have been often
weeks or months apart:

			#days	#commits
	2017-06-05	4	123
	2017-06-01	14	214
	2017-05-18	3	108
	2017-05-15	8	262
	2017-05-07	12	149
	2017-04-25	24	317
	2017-04-01	4	 47
	2017-03-28	7	 86
	2017-03-21	4	 35
	2017-03-17	1	 29
	2017-03-16	2	107
	2017-03-14	5	 42
	2017-03-09	0	180
	2017-03-09	6	  0	(updated model file)
	2017-03-03	4	347
	2017-02-27	6	198
	2017-02-21	1	 62
	2017-02-20	0	 69
	2017-02-20	4	  0	(updated model file)

Until Coverity bumped the maximum frequency of builds, we were doing
scans pretty much as fast as we were allowed to (1 per week I think):

	2017-02-16	13	148
	2017-02-03	9	298
	2017-01-25	7	283
	2017-01-18	14	464
	2017-01-04	49	230
	2016-11-16	9	275
	2016-11-07	14	504
	2016-10-24	14	243
	2016-10-10	10	190
	2016-09-30

In the last eight months, there was exactly one case where the builds
were more than one month apart and one more case where the builds were
more than two weeks apart.  Both of them coincided with the two most
recent hard freeze periods (2.8 and 2.9).

Second, I don't even think that CI is particularly useful when someone
must actively consume those scans: triage newly-reported defects, inform
the authors of the patch, and so on.  Too many Coverity reports can be a
burden because you cannot use e.g. the "All newly detected" view.

Of course I'm all for making Coverity builds more accessible to people
with the project token, through better scripts and possibly integration
with the Docker testing targets.

Paolo

^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: [Qemu-devel] [PATCH 1/3] travis: install more library dependencies
  2017-06-14 16:49         ` Paolo Bonzini
@ 2017-06-14 17:04           ` Peter Maydell
  2017-06-14 17:20             ` Paolo Bonzini
  2017-06-29 14:37           ` Peter Maydell
  1 sibling, 1 reply; 20+ messages in thread
From: Peter Maydell @ 2017-06-14 17:04 UTC (permalink / raw)
  To: Paolo Bonzini
  Cc: Philippe Mathieu-Daudé,
	QEMU Developers, Alex Bennée, Markus Armbruster, patches,
	Fam Zheng

On 14 June 2017 at 17:49, Paolo Bonzini <pbonzini@redhat.com> wrote:
> Well, trusty is 3 years old by now... I wouldn't call that bleeding
> edge, and it seems like Travis is suggesting using Docker images for
> those who want to use a newer distro.  This patch and patch 2 are
> useful, but I think I'd rather get full coverage, either with Shippable
> or by keeping on doing manual builds, than to rush things and switch to
> CI when it's not ready.

Yes, I overall agree that we maybe don't want to use Travis
for this, but I would like us to automate it somehow.
(I was about 50/50 on whether to tag the patchset as RFC.)

> First, I don't think it's accurate to say that scans have been often
> weeks or months apart:
>
>                         #days   #commits
>         2017-06-05      4       123
>         2017-06-01      14      214
>         2017-05-18      3       108
>         2017-05-15      8       262
>         2017-05-07      12      149
>         2017-04-25      24      317

Yes, but this one (I think) only happened because I got fed
up enough of the build being out of date to go and find out
how to rebuild it and do an upload. I think I also did the
1st June one by hand, maybe?

The reason I put this patch set together is because I didn't
want to have to do a manual build a third time :-)

> In the last eight months, there was exactly one case where the builds
> were more than one month apart and one more case where the builds were
> more than two weeks apart.  Both of them coincided with the two most
> recent hard freeze periods (2.8 and 2.9).

I'm more likely to look at coverity during freeze periods
than less, because bugs coverity notices are more likely
than not to be candidates for being worth fixing before
releases, and I don't have my plate full with feature work.
So I'd rather have the build be as up to date as possible
during a release so we can catch any bugs that snuck in
before we hit the last release candidate.

> Second, I don't even think that CI is particularly useful when someone
> must actively consume those scans: triage newly-reporte defects, inform
> the authors of the patch, and so on.  Too many Coverity reports can be a
> burden because you cannot use e.g. the "All newly detected" view.

You can do triage at any frequency you want, because bugs stay
in the "new" state until you move them, whether they were
detected in the most recent scan or not.

Conversely, if we don't do scans very frequently then the
"outstanding defects" view gets hard to use because it's
still showing things we've already fixed and isn't showing
new things we've introduced but not scanned yet.

thanks
-- PMM

^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: [Qemu-devel] [PATCH 1/3] travis: install more library dependencies
  2017-06-14 17:04           ` Peter Maydell
@ 2017-06-14 17:20             ` Paolo Bonzini
  0 siblings, 0 replies; 20+ messages in thread
From: Paolo Bonzini @ 2017-06-14 17:20 UTC (permalink / raw)
  To: Peter Maydell
  Cc: Philippe Mathieu-Daudé,
	QEMU Developers, Alex Bennée, Markus Armbruster, patches,
	Fam Zheng



On 14/06/2017 19:04, Peter Maydell wrote:
> On 14 June 2017 at 17:49, Paolo Bonzini <pbonzini@redhat.com> wrote:
>> Well, trusty is 3 years old by now... I wouldn't call that bleeding
>> edge, and it seems like Travis is suggesting using Docker images for
>> those who want to use a newer distro.  This patch and patch 2 are
>> useful, but I think I'd rather get full coverage, either with Shippable
>> or by keeping on doing manual builds, than to rush things and switch to
>> CI when it's not ready.
> 
> Yes, I overall agree that we maybe don't want to use Travis
> for this, but I would like us to automate it somehow.
> (I was about 50/50 on whether to tag the patchset as RFC.)
> 
>> First, I don't think it's accurate to say that scans have been often
>> weeks or months apart:
>>
>>                         #days   #commits
>>         2017-06-05      4       123
>>         2017-06-01      14      214
>>         2017-05-18      3       108
>>         2017-05-15      8       262
>>         2017-05-07      12      149
>>         2017-04-25      24      317
> 
> Yes, but this one (I think) only happened because I got fed
> up enough of the build being out of date to go and find out
> how to rebuild it and do an upload. I think I also did the
> 1st June one by hand, maybe?

Yes, that one I was super-busy (and travelling until April 16).  On June
1 and June 12 we crossed, you did one at the same time as me but you
must have faster internet uplink (not hard :)).

> I'm more likely to look at coverity during freeze periods
> than less, because bugs coverity notices are more likely
> than not to be candidates for being worth fixing before
> releases, and I don't have my plate full with feature work.
> So I'd rather have the build be as up to date as possible
> during a release so we can catch any bugs that snuck in
> before we hit the last release candidate.

Understood, on the other hand during freeze periods it's easier to look
at what went in and see how safe it is.

> Conversely, if we don't do scans very frequently then the
> "outstanding defects" view gets hard to use because it's
> still showing things we've already fixed and isn't showing
> new things we've introduced but not scanned yet.
The beauty of doing manual scans is that you can do them when that pull
request with lots of Coverity fixes has just gone in. :)  Seriously, I
didn't think frequency was a problem and we must have different
workflows.  I rely more on "all newly detected"/"all newly fixed" than
on the "new" state, because that can more easily show problems in the
build environment, though admittedly a more reproducible scan recipe
makes that less relevant.

Paolo

^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: [Qemu-devel] [PATCH 1/3] travis: install more library dependencies
  2017-06-14 16:49         ` Paolo Bonzini
  2017-06-14 17:04           ` Peter Maydell
@ 2017-06-29 14:37           ` Peter Maydell
  1 sibling, 0 replies; 20+ messages in thread
From: Peter Maydell @ 2017-06-29 14:37 UTC (permalink / raw)
  To: Paolo Bonzini
  Cc: Philippe Mathieu-Daudé,
	QEMU Developers, Alex Bennée, Markus Armbruster, patches,
	Fam Zheng

On 14 June 2017 at 17:49, Paolo Bonzini <pbonzini@redhat.com> wrote:
> This patch and patch 2 are
> useful, but I think I'd rather get full coverage, either with Shippable
> or by keeping on doing manual builds, than to rush things and switch to
> CI when it's not ready.

I agree with this, so is there a path forwards where we
get patch 2 into a shape where we can commit it and you
switch to using it for the manual uploads, (and maybe
eventually we have Shippable do it, but at least we have
a reproducible way for somebody other than you to do it
if needed) ?

I think for that we should update the comments at the top
to delete the bit that says "primary purpose is for travis".
I think we should also make the configure line include
--enable-foo for all the features we currently test, so that
if somebody tries to run it on a machine with missing
dependencies they get a configure error rather than silently
uploading with reduced coverage.

Can you suggest a set of --enable-foo flags which give us
the coverage we're getting currently with the machine you
do the manual runs on?

thanks
-- PMM

^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: [Qemu-devel] [PATCH 2/3] scripts/run-coverity-scan: Script to run Coverity Scan build
  2017-06-13 15:54 ` [Qemu-devel] [PATCH 2/3] scripts/run-coverity-scan: Script to run Coverity Scan build Peter Maydell
  2017-06-14 15:01   ` Alex Bennée
@ 2017-06-29 16:12   ` Eric Blake
  2017-06-29 16:15     ` Peter Maydell
  1 sibling, 1 reply; 20+ messages in thread
From: Eric Blake @ 2017-06-29 16:12 UTC (permalink / raw)
  To: Peter Maydell, qemu-devel
  Cc: Paolo Bonzini, Alex Bennée, Markus Armbruster, patches

[-- Attachment #1: Type: text/plain, Size: 1500 bytes --]

On 06/13/2017 10:54 AM, Peter Maydell wrote:
> 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 <peter.maydell@linaro.org>
> ---
>  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

I'm not a fan of 'set -e'; it seldom does what you think it should do,
especially when shell functions are involved.  It's better to be
explicit about error handling than it is to rely on a crutch that has
well-defined but non-intuitive behavior.

> +mkdir -p "$COVERITY_TOOL_BASE"
> +cd "$COVERITY_TOOL_BASE"
> +

Of course, calls like these are where you have to either be explicit or
rely on the 'set -e' crutch.

Thankfully, I didn't see any bashisms, so you appeared to have stuck to
portable /bin/sh code.

-- 
Eric Blake, Principal Software Engineer
Red Hat, Inc.           +1-919-301-3266
Virtualization:  qemu.org | libvirt.org


[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 604 bytes --]

^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: [Qemu-devel] [PATCH 2/3] scripts/run-coverity-scan: Script to run Coverity Scan build
  2017-06-29 16:12   ` Eric Blake
@ 2017-06-29 16:15     ` Peter Maydell
  0 siblings, 0 replies; 20+ messages in thread
From: Peter Maydell @ 2017-06-29 16:15 UTC (permalink / raw)
  To: Eric Blake
  Cc: QEMU Developers, Paolo Bonzini, Alex Bennée,
	Markus Armbruster, patches

On 29 June 2017 at 17:12, Eric Blake <eblake@redhat.com> wrote:
> Thankfully, I didn't see any bashisms, so you appeared to have stuck to
> portable /bin/sh code.

My /bin/sh is dash, which catches at least some of the more
obvious bashisms.

thanks
-- PMM

^ permalink raw reply	[flat|nested] 20+ messages in thread

end of thread, other threads:[~2017-06-29 16:15 UTC | newest]

Thread overview: 20+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-06-13 15:54 [Qemu-devel] [PATCH 0/3] Automate coverity scan uploads via Travis Peter Maydell
2017-06-13 15:54 ` [Qemu-devel] [PATCH 1/3] travis: install more library dependencies Peter Maydell
2017-06-14  3:52   ` Philippe Mathieu-Daudé
2017-06-14 15:07     ` Paolo Bonzini
2017-06-14 15:37       ` Philippe Mathieu-Daudé
2017-06-14 16:49         ` Paolo Bonzini
2017-06-14 17:04           ` Peter Maydell
2017-06-14 17:20             ` Paolo Bonzini
2017-06-29 14:37           ` Peter Maydell
2017-06-14 14:45   ` Alex Bennée
2017-06-14 15:15   ` Daniel P. Berrange
2017-06-14 15:25     ` Philippe Mathieu-Daudé
2017-06-13 15:54 ` [Qemu-devel] [PATCH 2/3] scripts/run-coverity-scan: Script to run Coverity Scan build Peter Maydell
2017-06-14 15:01   ` Alex Bennée
2017-06-29 16:12   ` Eric Blake
2017-06-29 16:15     ` Peter Maydell
2017-06-13 15:54 ` [Qemu-devel] [PATCH 3/3] travis: Add config to do a Coverity Scan upload Peter Maydell
2017-06-14 15:14   ` Alex Bennée
2017-06-14 15:46     ` Peter Maydell
2017-06-13 16:15 ` [Qemu-devel] [PATCH 0/3] Automate coverity scan uploads via Travis no-reply

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.