[Qemu-devel] [PATCH] .travis.yml: basic compile and check recipes
From: Alex Bennée This adds a build matrix definition for travis-ci.org continuous integration service. It is usable on any public repository hosted on GitHub. Once you have created an account signed into Travis you can enable it on selected projects via travis-ci.org/profile. Alternatively you can configure the service hooks on GitHub via the repository Settings tab,then Service Hooks and selecting Travis. Once setup Travis will automatically test every push as well as any pull requests submitted to that repository. The build matrix is currently split by target architecture (see TARGETS environment variable) because a full build of QEMU can take some time. This way you get quick feedback for any obvious errors. The additional environment variables exist to allow additional builds to tweak the environment. These are: EXTRA_CONFIG - extra terms passed to configure EXTRA_PKGS - extra dev packages to install TEST_CMD - default "make check", can be overridden I've confined the additional stuff to x86/x86_64 for convenience. As Travis supports clang the main builds are done twice (once for gcc and once for clang). However clang is disabled for the debug/trace builds for the purposes of brevity. Other wrinkles: * The lttng user-space tracing back-end is disabled (it is currently horribly broken) * The ftrace back-end doesn't run "make check" (it requires a mounted debugfs to work) * There are two debug enabled build (with and without TCG interpreter) Signed-off-by: Alex Bennée Reviewed-by: Stefan Hajnoczi --- .travis.yml | 69 + 1 file changed, 69 insertions(+) create mode 100644 .travis.yml diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 000..15d36b1 --- /dev/null +++ b/.travis.yml @@ -0,0 +1,69 @@ +language: c +compiler: + - gcc + - clang +env: + global: +- TEST_CMD="make check" +- EXTRA_CONFIG="" +# Development packages, EXTRA_PKGS saved for additional builds +- CORE_PKGS="libusb-1.0-0-dev libiscsi-dev librados-dev libncurses5-dev" +- NET_PKGS="libseccomp-dev libgnutls-dev libssh2-1-dev libspice-server-dev libspice-protocol-dev libnss3-dev" +- GUI_PKGS="libgtk-3-dev libvte-2.90-dev libsdl1.2-dev libpng12-dev libpixman-1-dev" +- EXTRA_PKGS="" + matrix: + - TARGETS=alpha-softmmu,alpha-linux-user + - TARGETS=arm-softmmu,arm-linux-user + - TARGETS=cris-softmmu + - TARGETS=i386-softmmu,x86_64-softmmu + - TARGETS=lm32-softmmu + - TARGETS=m68k-softmmu + - TARGETS=microblaze-softmmu,microblazeel-softmmu + - TARGETS=mips-softmmu,mips64-softmmu,mips64el-softmmu,mipsel-softmmu + - TARGETS=moxie-softmmu + - TARGETS=or32-softmmu, + - TARGETS=ppc-softmmu,ppc64-softmmu,ppcemb-softmmu + - TARGETS=s390x-softmmu + - TARGETS=sh4-softmmu,sh4eb-softmmu + - TARGETS=sparc-softmmu,sparc64-softmmu + - TARGETS=unicore32-softmmu + - TARGETS=xtensa-softmmu,xtensaeb-softmmu +before_install: + - git submodule update --init --recursive + - sudo apt-get update -qq + - sudo apt-get install -qq ${CORE_PKGS} ${NET_PKGS} ${GUI_PKGS} ${EXTRA_PKGS} +script: "./configure --target-list=${TARGETS} ${EXTRA_CONFIG} && make && ${TEST_CMD}" +matrix: + # We manually include a number of additional build for non-standard bits + include: +# Debug related options +- env: TARGETS=i386-softmmu,x86_64-softmmu + EXTRA_CONFIG="--enable-debug" + compiler: gcc +- env: TARGETS=i386-softmmu,x86_64-softmmu + EXTRA_CONFIG="--enable-debug --enable-tcg-interpreter" + compiler: gcc +# Currently configure doesn't force --disable-pie +- env: TARGETS=i386-softmmu,x86_64-softmmu + EXTRA_CONFIG="--enable-gprof --enable-gcov --disable-pie" + compiler: gcc +- env: TARGETS=i386-softmmu,x86_64-softmmu + EXTRA_PKGS="sparse" + EXTRA_CONFIG="--enable-sparse" + compiler: gcc +# All the trace backends (apart from dtrace) +- env: TARGETS=i386-softmmu,x86_64-softmmu + EXTRA_CONFIG="--enable-trace-backend=stderr" + compiler: gcc +- env: TARGETS=i386-softmmu,x86_64-softmmu + EXTRA_CONFIG="--enable-trace-backend=simple" + compiler: gcc +- env: TARGETS=i386-softmmu,x86_64-softmmu + EXTRA_CONFIG="--enable-trace-backend=ftrace" + TEST_CMD="" + compiler: gcc +# This disabled make check for the ftrace backend which needs more setting up +# Currently broken on 12.04 due to mis-packaged liburcu and changed API, will be pulled. +#- env: TARGETS=i386-softmmu,x86_64-softmmu +# EXTRA_PKGS="liblttng-ust-dev liburcu-dev" +# EXTRA_CONFIG="--enable-trace-backend=ust" -- 1.8.4
Re: [Qemu-devel] [PATCH] .travis.yml: basic compile and check recipes
On Wed, Sep 25, 2013 at 11:00:05AM +0100, Alex Bennée wrote: > > peter.mayd...@linaro.org writes: > > > On 25 September 2013 01:31, wrote: > >> +# This disabled make check for the ftrace backend which needs more > >> setting up > >> +# Currently broken on 12.04 due to mis-packaged liburcu and changed > >> API, will be pulled. > >> +#- env: TARGETS=i386-softmmu,x86_64-softmmu > >> +# EXTRA_PKGS="liblttng-ust-dev liburcu-dev" > >> +# EXTRA_CONFIG="--enable-trace-backend=ust" > > > > Does our configure identify the busted library and refuse to configure with > > this config? It probably ought to. > > It's a mess. It probably still works on some set-ups but in discussion > with Stefan on IRC it looks like it's regressed on most modern set-ups. > The fundamental issue is lttng's lack of stable API. I hunted around a > bit trying to get it working but realised the script needs fixing up as > well so gave up. > > Really ust just needs to be ripped out for now unless someone else wants > to dig into to supporting multiple versions painlessly. I sent a patch to drop ust. Either someone will show up who is willing to fix it or we'll remove it since it has few (zero?) users. Stefan
Re: [Qemu-devel] [PATCH] .travis.yml: basic compile and check recipes
peter.mayd...@linaro.org writes: > On 25 September 2013 01:31, wrote: >> +# Debug related options >> +- env: TARGETS=i386-softmmu,x86_64-softmmu >> + EXTRA_CONFIG="--enable-debug --enable-debug-tcg >> --enable-tcg-interpreter" > > --enable-debug implies --enable-debug-tcg, you don't need to specify > it separately. > > I think we should have an --enable-debug config tested which is actually > testing TCG, not the TCG interpreter (which is a very rarely used and > not IMHO terribly useful config). OK I'll split those two up. >> +# This disabled make check for the ftrace backend which needs more >> setting up >> +# Currently broken on 12.04 due to mis-packaged liburcu and changed >> API, will be pulled. >> +#- env: TARGETS=i386-softmmu,x86_64-softmmu >> +# EXTRA_PKGS="liblttng-ust-dev liburcu-dev" >> +# EXTRA_CONFIG="--enable-trace-backend=ust" > > Does our configure identify the busted library and refuse to configure with > this config? It probably ought to. It's a mess. It probably still works on some set-ups but in discussion with Stefan on IRC it looks like it's regressed on most modern set-ups. The fundamental issue is lttng's lack of stable API. I hunted around a bit trying to get it working but realised the script needs fixing up as well so gave up. Really ust just needs to be ripped out for now unless someone else wants to dig into to supporting multiple versions painlessly. -- Alex Bennée
Re: [Qemu-devel] [PATCH] .travis.yml: basic compile and check recipes
On 25 September 2013 01:31, wrote: > +# Debug related options > +- env: TARGETS=i386-softmmu,x86_64-softmmu > + EXTRA_CONFIG="--enable-debug --enable-debug-tcg > --enable-tcg-interpreter" --enable-debug implies --enable-debug-tcg, you don't need to specify it separately. I think we should have an --enable-debug config tested which is actually testing TCG, not the TCG interpreter (which is a very rarely used and not IMHO terribly useful config). > +# This disabled make check for the ftrace backend which needs more > setting up > +# Currently broken on 12.04 due to mis-packaged liburcu and changed API, > will be pulled. > +#- env: TARGETS=i386-softmmu,x86_64-softmmu > +# EXTRA_PKGS="liblttng-ust-dev liburcu-dev" > +# EXTRA_CONFIG="--enable-trace-backend=ust" Does our configure identify the busted library and refuse to configure with this config? It probably ought to. -- PMM
[Qemu-devel] [PATCH] .travis.yml: basic compile and check recipes
From: Alex Bennée This adds a build matrix definition for travis-ci.org continuous integration service. It is usable on any public repository hosted on GitHub. Once you have created an account signed into Travis you can enable it on selected projects via travis-ci.org/profile. Alternatively you can configure the service hooks on GitHub via the repository Settings tab,then Service Hooks and selecting Travis. Once setup Travis will automatically test every push as well as any pull requests submitted to that repository. The build matrix is currently split by target architecture (see TARGETS environment variable) because a full build of QEMU can take some time. This way you get quick feedback for any obvious errors. The additional environment variables exist to allow additional builds to tweak the environment. These are: EXTRA_CONFIG - extra terms passed to configure EXTRA_PKGS - extra dev packages to install TEST_CMD - default "make check", can be overridden I've confined the additional stuff to x86/x86_64 for convenience. As Travis supports clang the main builds are done twice (once for gcc and once for clang). However clang is disabled for the debug/trace builds for the purposes of brevity. Other wrinkles: * The lttng user-space tracing back-end is disabled (it is currently horribly broken) * The ftrace back-end doesn't run "make check" (it requires a mounted debugfs to work) Signed-off-by: Alex Bennée Reviewed-by: Stefan Hajnoczi --- .travis.yml | 66 + 1 file changed, 66 insertions(+) create mode 100644 .travis.yml diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 000..89423ad --- /dev/null +++ b/.travis.yml @@ -0,0 +1,66 @@ +language: c +compiler: + - gcc + - clang +env: + global: +- TEST_CMD="make check" +- EXTRA_CONFIG="" +# Development packages, EXTRA_PKGS saved for additional builds +- CORE_PKGS="libusb-1.0-0-dev libiscsi-dev librados-dev libncurses5-dev" +- NET_PKGS="libseccomp-dev libgnutls-dev libssh2-1-dev libspice-server-dev libspice-protocol-dev libnss3-dev" +- GUI_PKGS="libgtk-3-dev libvte-2.90-dev libsdl1.2-dev libpng12-dev libpixman-1-dev" +- EXTRA_PKGS="" + matrix: + - TARGETS=alpha-softmmu,alpha-linux-user + - TARGETS=arm-softmmu,arm-linux-user + - TARGETS=cris-softmmu + - TARGETS=i386-softmmu,x86_64-softmmu + - TARGETS=lm32-softmmu + - TARGETS=m68k-softmmu + - TARGETS=microblaze-softmmu,microblazeel-softmmu + - TARGETS=mips-softmmu,mips64-softmmu,mips64el-softmmu,mipsel-softmmu + - TARGETS=moxie-softmmu + - TARGETS=or32-softmmu, + - TARGETS=ppc-softmmu,ppc64-softmmu,ppcemb-softmmu + - TARGETS=s390x-softmmu + - TARGETS=sh4-softmmu,sh4eb-softmmu + - TARGETS=sparc-softmmu,sparc64-softmmu + - TARGETS=unicore32-softmmu + - TARGETS=xtensa-softmmu,xtensaeb-softmmu +before_install: + - git submodule update --init --recursive + - sudo apt-get update -qq + - sudo apt-get install -qq ${CORE_PKGS} ${NET_PKGS} ${GUI_PKGS} ${EXTRA_PKGS} +script: "./configure --target-list=${TARGETS} ${EXTRA_CONFIG} && make && ${TEST_CMD}" +matrix: + # We manually include a number of additional build for non-standard bits + include: +# Debug related options +- env: TARGETS=i386-softmmu,x86_64-softmmu + EXTRA_CONFIG="--enable-debug --enable-debug-tcg --enable-tcg-interpreter" + compiler: gcc +# Currently configure doesn't force --disable-pie +- env: TARGETS=i386-softmmu,x86_64-softmmu + EXTRA_CONFIG="--enable-gprof --enable-gcov --disable-pie" + compiler: gcc +- env: TARGETS=i386-softmmu,x86_64-softmmu + EXTRA_PKGS="sparse" + EXTRA_CONFIG="--enable-sparse" + compiler: gcc +# All the trace backends (apart from dtrace) +- env: TARGETS=i386-softmmu,x86_64-softmmu + EXTRA_CONFIG="--enable-trace-backend=stderr" + compiler: gcc +- env: TARGETS=i386-softmmu,x86_64-softmmu + EXTRA_CONFIG="--enable-trace-backend=simple" + compiler: gcc +- env: TARGETS=i386-softmmu,x86_64-softmmu + EXTRA_CONFIG="--enable-trace-backend=ftrace" + TEST_CMD="" + compiler: gcc +# This disabled make check for the ftrace backend which needs more setting up +# Currently broken on 12.04 due to mis-packaged liburcu and changed API, will be pulled. +#- env: TARGETS=i386-softmmu,x86_64-softmmu +# EXTRA_PKGS="liblttng-ust-dev liburcu-dev" +# EXTRA_CONFIG="--enable-trace-backend=ust" -- 1.8.4
Re: [Qemu-devel] [PATCH] .travis.yml: basic compile and check recipes
stefa...@gmail.com writes: > On Wed, Sep 18, 2013 at 03:35:07PM +0100, Alex Bennée wrote: >> >> stefa...@gmail.com writes: >> >> > >> > Looks useful. To get more code coverage, flesh out the build >> > environment: >> >> Thanks. Am I dreaming or are there some system image tests somewhere as well? > > Anthony Liguori's "qemu-test" builds special-purpose Linux test guests: > http://git.qemu-project.org/?p=qemu-test.git;a=tree It looks like this is more the sort of thing I want. Given the first thing I found when playing with QEMU was a regression to one of the system emulations (admittedly not one that's used that often nowadays but it was the default). > > Both qemu-test and KVM Autotest are heavy in the sense that they will > download 100s of MB. Not sure if they are suitable for Travis CI. Surely a kernel with minimal user-space and running a simple script can be kept under 10Mbs? This is essentially a smoke test to ensure QEMU can still boot a kernel with whatever hardware it's trying to emulate. I'm not sure the core translator needs much more exercising from user space after it's booted up? I guess I should do some coverage profiling to check. The Travis docs do mention a concept of binary packages of test data but it's a little unclear if it could be applied to this problem. There is something about fetching things from Amazon S3. Does the QEMU project have much in the way of hosting facilities or does it rely on commercial users to provide them? I wonder if there is an argument for allowing qemu-test to be added as a submodule of qemu so the test scripts can be accessed directly even if the images are pre-canned and stored somewhere else? Cheers, -- Alex Bennée
Re: [Qemu-devel] [PATCH] .travis.yml: basic compile and check recipes
On Thu, Sep 19, 2013 at 6:01 PM, Alex Bennée wrote: > > stefa...@gmail.com writes: > >> On Wed, Sep 18, 2013 at 03:35:07PM +0100, Alex Bennée wrote: >>> >>> stefa...@gmail.com writes: >>> >>> > >>> > Looks useful. To get more code coverage, flesh out the build >>> > environment: >>> >>> Thanks. Am I dreaming or are there some system image tests somewhere as >>> well? >> >> Anthony Liguori's "qemu-test" builds special-purpose Linux test guests: >> http://git.qemu-project.org/?p=qemu-test.git;a=tree > > It looks like this is more the sort of thing I want. Given the first > thing I found when playing with QEMU was a regression to one of the > system emulations (admittedly not one that's used that often nowadays > but it was the default). > >> >> Both qemu-test and KVM Autotest are heavy in the sense that they will >> download 100s of MB. Not sure if they are suitable for Travis CI. > > Surely a kernel with minimal user-space and running a simple script can > be kept under 10Mbs? This is essentially a smoke test to ensure QEMU can > still boot a kernel with whatever hardware it's trying to emulate. I'm > not sure the core translator needs much more exercising from user space > after it's booted up? I guess I should do some coverage profiling to > check. > > The Travis docs do mention a concept of binary packages of test data but > it's a little unclear if it could be applied to this problem. There is > something about fetching things from Amazon S3. Does the QEMU project > have much in the way of hosting facilities or does it rely on commercial > users to provide them? > > I wonder if there is an argument for allowing qemu-test to be added as a > submodule of qemu so the test scripts can be accessed directly even if > the images are pre-canned and stored somewhere else? Anthony is the person to ask. I have CCed him. Stefan
Re: [Qemu-devel] [PATCH] .travis.yml: basic compile and check recipes
On Wed, Sep 18, 2013 at 03:35:07PM +0100, Alex Bennée wrote: > > stefa...@gmail.com writes: > > > > > Looks useful. To get more code coverage, flesh out the build > > environment: > > Thanks. Am I dreaming or are there some system image tests somewhere as well? Anthony Liguori's "qemu-test" builds special-purpose Linux test guests: http://git.qemu-project.org/?p=qemu-test.git;a=tree There is also KVM Autotest. These tests can use QEMU or QEMU + libvirt and are more involved (installing real guests). https://github.com/autotest/autotest/wiki/KVM-&-Libvirt-Autotest--Introduction-and-Quickstart Both qemu-test and KVM Autotest are heavy in the sense that they will download 100s of MB. Not sure if they are suitable for Travis CI. Stefan
Re: [Qemu-devel] [PATCH] .travis.yml: basic compile and check recipes
stefa...@gmail.com writes: > > Looks useful. To get more code coverage, flesh out the build > environment: Thanks. Am I dreaming or are there some system image tests somewhere as well? -- Alex Bennée
Re: [Qemu-devel] [PATCH] .travis.yml: basic compile and check recipes
On Fri, Sep 13, 2013 at 04:20:22PM +0100, alex.ben...@linaro.org wrote: > From: Alex Bennée > > While QEMU already has various continuous integration set-ups in > buildbot and commercial Jenkins setups there is some value in supporting > travis-ci as well. It is well integrated into GitHub work flow and will > trigger on all branch pushes and pull requests. This makes it easier for > an individual to kick off smoke tests on a work-in-progress branch > before eventual submission of patches/pull requests upstream. > > The build matrix is currently split by target architecture because a > full build of QEMU can take some time. This way you get quick feedback > for any obvious errors. > --- > .travis.yml | 19 +++ > 1 file changed, 19 insertions(+) > create mode 100644 .travis.yml Looks useful. To get more code coverage, flesh out the build environment: before_install: - git submodule update --init --recursive - sudo apt-get update -qq - sudo apt-get install -qq \ libgtk-3-dev libvte-2.90-dev libiscsi-dev librados-dev \ libvdeplug-dev libseccomp-dev libsdl1.2-dev \ libgnutls-dev libpng12-dev libncurses5-dev \ libpixman-1-dev libssh2-1-dev libspice-server-dev \ libspice-protocol-dev libnss3-dev libusb-1.0-0-dev \ libusbredirparser-dev I didn't test this but went through ./configure and looked up the Ubuntu packages which Travis should have access to. You can check the config.log output to verify that optional components were enabled and the libraries were detected. Stefan
[Qemu-devel] [PATCH] .travis.yml: basic compile and check recipes
From: Alex Bennée While QEMU already has various continuous integration set-ups in buildbot and commercial Jenkins setups there is some value in supporting travis-ci as well. It is well integrated into GitHub work flow and will trigger on all branch pushes and pull requests. This makes it easier for an individual to kick off smoke tests on a work-in-progress branch before eventual submission of patches/pull requests upstream. The build matrix is currently split by target architecture because a full build of QEMU can take some time. This way you get quick feedback for any obvious errors. --- .travis.yml | 19 +++ 1 file changed, 19 insertions(+) create mode 100644 .travis.yml diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 000..69f60c1 --- /dev/null +++ b/.travis.yml @@ -0,0 +1,19 @@ +language: c +env: + - TARGETS=alpha-softmmu,alpha-linux-user + - TARGETS=arm-softmmu,arm-linux-user + - TARGETS=cris-softmmu + - TARGETS=i386-softmmu,x86_64-softmmu + - TARGETS=lm32-softmmu + - TARGETS=m68k-softmmu + - TARGETS=microblaze-softmmu,microblazeel-softmmu + - TARGETS=mips-softmmu,mips64-softmmu,mips64el-softmmu,mipsel-softmmu + - TARGETS=moxie-softmmu + - TARGETS=or32-softmmu, + - TARGETS=ppc-softmmu,ppc64-softmmu,ppcemb-softmmu + - TARGETS=s390x-softmmu + - TARGETS=sh4-softmmu,sh4eb-softmmu + - TARGETS=sparc-softmmu,sparc64-softmmu + - TARGETS=unicore32-softmmu + - TARGETS=xtensa-softmmu,xtensaeb-softmmu +script: "./configure --target-list=${TARGETS} && make && make check" -- 1.8.4