* [PATCH] Add option to disable building tests @ 2026-07-24 13:54 Florian Schmidt 2026-07-24 16:45 ` Pierrick Bouvier 0 siblings, 1 reply; 12+ messages in thread From: Florian Schmidt @ 2026-07-24 13:54 UTC (permalink / raw) To: Paolo Bonzini Cc: Florian Schmidt, Marc-André Lureau, Daniel P. Berrangé, Philippe Mathieu-Daudé, Pierrick Bouvier, Alex Bennée, qemu-devel There are situations in which you might want to build QEMU without building the full test suite, which in some configurations can take a considerable amount of time to build. This is especially true when using LTO with clang. For example: $ ../configure --cc=clang '--extra-ldflags=-flto=thin -ffat-lto-objects' '--extra-cflags=-flto=thin -ffat-lto-objects' --target-list=x86_64-softmmu [...] $ time make -j8 [...] [3078/3078] Linking target tests/qtest/qos-test real 6m43.250s user 101m15.967s sys 4m3.813s $ ../configure --cc=clang '--extra-ldflags=-flto=thin -ffat-lto-objects' '--extra-cflags=-flto=thin -ffat-lto-objects' --target-list=x86_64-softmmu --disable-tests [...] $ time make -j8 [...] [2024/2024] Linking target qemu-system-x86_64 real 3m14.277s user 33m13.174s sys 1m36.642s Add a toggle to optionally disable building tests. Signed-off-by: Florian Schmidt <flosch@nutanix.com> --- meson.build | 2 +- meson_options.txt | 2 ++ scripts/meson-buildoptions.sh | 3 +++ 3 files changed, 6 insertions(+), 1 deletion(-) diff --git a/meson.build b/meson.build index 49a5baf5b5..ad728c26ec 100644 --- a/meson.build +++ b/meson.build @@ -4605,7 +4605,7 @@ subdir('docs') subdir('pyvenv') # Tests are disabled on emscripten because they rely on host features that aren't # supported by emscripten (e.g. fork and unix socket). -if host_os != 'emscripten' +if get_option('tests').allowed() and host_os != 'emscripten' subdir('tests') endif if gtk.found() diff --git a/meson_options.txt b/meson_options.txt index a07cb47d35..68333ca402 100644 --- a/meson_options.txt +++ b/meson_options.txt @@ -43,6 +43,8 @@ option('gdb', type: 'string', value: '', # on the configure script command line. After adding an option # here make sure to run "make update-buildoptions". +option('tests', type: 'feature', value: 'auto', + description: 'Build the test suite') option('docs', type : 'feature', value : 'auto', description: 'Documentations build support') option('fuzzing', type : 'boolean', value: false, diff --git a/scripts/meson-buildoptions.sh b/scripts/meson-buildoptions.sh index c003985047..3fec13a336 100644 --- a/scripts/meson-buildoptions.sh +++ b/scripts/meson-buildoptions.sh @@ -194,6 +194,7 @@ meson_options_help() { printf "%s\n" ' spice-protocol Spice protocol support' printf "%s\n" ' stack-protector compiler-provided stack protection' printf "%s\n" ' tcg TCG support' + printf "%s\n" ' tests build test suite' printf "%s\n" ' tools build support utilities that come with QEMU' printf "%s\n" ' tpm TPM support' printf "%s\n" ' u2f U2F emulation support' @@ -515,6 +516,8 @@ _meson_option_parse() { --enable-tcg-interpreter) printf "%s" -Dtcg_interpreter=true ;; --disable-tcg-interpreter) printf "%s" -Dtcg_interpreter=false ;; --tls-priority=*) quote_sh "-Dtls_priority=$2" ;; + --enable-tests) printf "%s" -Dtests=enabled ;; + --disable-tests) printf "%s" -Dtests=disabled ;; --enable-tools) printf "%s" -Dtools=enabled ;; --disable-tools) printf "%s" -Dtools=disabled ;; --enable-tpm) printf "%s" -Dtpm=enabled ;; -- 2.47.3 ^ permalink raw reply related [flat|nested] 12+ messages in thread
* Re: [PATCH] Add option to disable building tests 2026-07-24 13:54 [PATCH] Add option to disable building tests Florian Schmidt @ 2026-07-24 16:45 ` Pierrick Bouvier 2026-07-27 8:12 ` Philippe Mathieu-Daudé 0 siblings, 1 reply; 12+ messages in thread From: Pierrick Bouvier @ 2026-07-24 16:45 UTC (permalink / raw) To: Florian Schmidt, Paolo Bonzini Cc: Marc-André Lureau, Daniel P. Berrangé, Philippe Mathieu-Daudé, Alex Bennée, qemu-devel On 7/24/2026 6:54 AM, Florian Schmidt wrote: > There are situations in which you might want to build QEMU without > building the full test suite, which in some configurations can take a > considerable amount of time to build. This is especially true when using > LTO with clang. For example: > > $ ../configure --cc=clang '--extra-ldflags=-flto=thin -ffat-lto-objects' '--extra-cflags=-flto=thin -ffat-lto-objects' --target-list=x86_64-softmmu > [...] > $ time make -j8 > [...] > [3078/3078] Linking target tests/qtest/qos-test > real 6m43.250s > user 101m15.967s > sys 4m3.813s > > $ ../configure --cc=clang '--extra-ldflags=-flto=thin -ffat-lto-objects' '--extra-cflags=-flto=thin -ffat-lto-objects' --target-list=x86_64-softmmu --disable-tests > [...] > $ time make -j8 > [...] > [2024/2024] Linking target qemu-system-x86_64 > > real 3m14.277s > user 33m13.174s > sys 1m36.642s > > Add a toggle to optionally disable building tests. > > Signed-off-by: Florian Schmidt <flosch@nutanix.com> > --- > meson.build | 2 +- > meson_options.txt | 2 ++ > scripts/meson-buildoptions.sh | 3 +++ > 3 files changed, 6 insertions(+), 1 deletion(-) > > diff --git a/meson.build b/meson.build > index 49a5baf5b5..ad728c26ec 100644 > --- a/meson.build > +++ b/meson.build > @@ -4605,7 +4605,7 @@ subdir('docs') > subdir('pyvenv') > # Tests are disabled on emscripten because they rely on host features that aren't > # supported by emscripten (e.g. fork and unix socket). > -if host_os != 'emscripten' > +if get_option('tests').allowed() and host_os != 'emscripten' > subdir('tests') > endif > if gtk.found() > diff --git a/meson_options.txt b/meson_options.txt > index a07cb47d35..68333ca402 100644 > --- a/meson_options.txt > +++ b/meson_options.txt > @@ -43,6 +43,8 @@ option('gdb', type: 'string', value: '', > # on the configure script command line. After adding an option > # here make sure to run "make update-buildoptions". > > +option('tests', type: 'feature', value: 'auto', > + description: 'Build the test suite') > option('docs', type : 'feature', value : 'auto', > description: 'Documentations build support') > option('fuzzing', type : 'boolean', value: false, > diff --git a/scripts/meson-buildoptions.sh b/scripts/meson-buildoptions.sh > index c003985047..3fec13a336 100644 > --- a/scripts/meson-buildoptions.sh > +++ b/scripts/meson-buildoptions.sh > @@ -194,6 +194,7 @@ meson_options_help() { > printf "%s\n" ' spice-protocol Spice protocol support' > printf "%s\n" ' stack-protector compiler-provided stack protection' > printf "%s\n" ' tcg TCG support' > + printf "%s\n" ' tests build test suite' > printf "%s\n" ' tools build support utilities that come with QEMU' > printf "%s\n" ' tpm TPM support' > printf "%s\n" ' u2f U2F emulation support' > @@ -515,6 +516,8 @@ _meson_option_parse() { > --enable-tcg-interpreter) printf "%s" -Dtcg_interpreter=true ;; > --disable-tcg-interpreter) printf "%s" -Dtcg_interpreter=false ;; > --tls-priority=*) quote_sh "-Dtls_priority=$2" ;; > + --enable-tests) printf "%s" -Dtests=enabled ;; > + --disable-tests) printf "%s" -Dtests=disabled ;; > --enable-tools) printf "%s" -Dtools=enabled ;; > --disable-tools) printf "%s" -Dtools=disabled ;; > --enable-tpm) printf "%s" -Dtpm=enabled ;; That's a great addition, including just for speeding up normal builds. Reviewed-by: Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com> Tested-by: Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com> If we want to overengineer the thing, it could be possible to still declare all tests, but not build them by default. However, it's probably too error prone and much less simple than this patch. So I don't think it's a good idea. Regards, Pierrick ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH] Add option to disable building tests 2026-07-24 16:45 ` Pierrick Bouvier @ 2026-07-27 8:12 ` Philippe Mathieu-Daudé 2026-07-27 8:46 ` Florian Schmidt 2026-07-27 9:11 ` Thomas Huth 0 siblings, 2 replies; 12+ messages in thread From: Philippe Mathieu-Daudé @ 2026-07-27 8:12 UTC (permalink / raw) To: Pierrick Bouvier, Florian Schmidt, Paolo Bonzini Cc: Marc-André Lureau, Daniel P. Berrangé, Philippe Mathieu-Daudé, Alex Bennée, qemu-devel On 24/7/26 18:45, Pierrick Bouvier wrote: > On 7/24/2026 6:54 AM, Florian Schmidt wrote: >> There are situations in which you might want to build QEMU without >> building the full test suite, which in some configurations can take a >> considerable amount of time to build. This is especially true when using >> LTO with clang. For example: >> >> $ ../configure --cc=clang '--extra-ldflags=-flto=thin -ffat-lto-objects' '--extra-cflags=-flto=thin -ffat-lto-objects' --target-list=x86_64-softmmu >> [...] >> $ time make -j8 >> [...] >> [3078/3078] Linking target tests/qtest/qos-test >> real 6m43.250s >> user 101m15.967s >> sys 4m3.813s >> >> $ ../configure --cc=clang '--extra-ldflags=-flto=thin -ffat-lto-objects' '--extra-cflags=-flto=thin -ffat-lto-objects' --target-list=x86_64-softmmu --disable-tests >> [...] >> $ time make -j8 >> [...] >> [2024/2024] Linking target qemu-system-x86_64 >> >> real 3m14.277s >> user 33m13.174s >> sys 1m36.642s >> >> Add a toggle to optionally disable building tests. >> >> Signed-off-by: Florian Schmidt <flosch@nutanix.com> >> --- >> meson.build | 2 +- >> meson_options.txt | 2 ++ >> scripts/meson-buildoptions.sh | 3 +++ >> 3 files changed, 6 insertions(+), 1 deletion(-) >> >> diff --git a/meson.build b/meson.build >> index 49a5baf5b5..ad728c26ec 100644 >> --- a/meson.build >> +++ b/meson.build >> @@ -4605,7 +4605,7 @@ subdir('docs') >> subdir('pyvenv') >> # Tests are disabled on emscripten because they rely on host features that aren't >> # supported by emscripten (e.g. fork and unix socket). >> -if host_os != 'emscripten' >> +if get_option('tests').allowed() and host_os != 'emscripten' >> subdir('tests') >> endif >> if gtk.found() >> diff --git a/meson_options.txt b/meson_options.txt >> index a07cb47d35..68333ca402 100644 >> --- a/meson_options.txt >> +++ b/meson_options.txt >> @@ -43,6 +43,8 @@ option('gdb', type: 'string', value: '', >> # on the configure script command line. After adding an option >> # here make sure to run "make update-buildoptions". >> >> +option('tests', type: 'feature', value: 'auto', >> + description: 'Build the test suite') >> option('docs', type : 'feature', value : 'auto', >> description: 'Documentations build support') >> option('fuzzing', type : 'boolean', value: false, >> diff --git a/scripts/meson-buildoptions.sh b/scripts/meson-buildoptions.sh >> index c003985047..3fec13a336 100644 >> --- a/scripts/meson-buildoptions.sh >> +++ b/scripts/meson-buildoptions.sh >> @@ -194,6 +194,7 @@ meson_options_help() { >> printf "%s\n" ' spice-protocol Spice protocol support' >> printf "%s\n" ' stack-protector compiler-provided stack protection' >> printf "%s\n" ' tcg TCG support' >> + printf "%s\n" ' tests build test suite' >> printf "%s\n" ' tools build support utilities that come with QEMU' >> printf "%s\n" ' tpm TPM support' >> printf "%s\n" ' u2f U2F emulation support' >> @@ -515,6 +516,8 @@ _meson_option_parse() { >> --enable-tcg-interpreter) printf "%s" -Dtcg_interpreter=true ;; >> --disable-tcg-interpreter) printf "%s" -Dtcg_interpreter=false ;; >> --tls-priority=*) quote_sh "-Dtls_priority=$2" ;; >> + --enable-tests) printf "%s" -Dtests=enabled ;; >> + --disable-tests) printf "%s" -Dtests=disabled ;; >> --enable-tools) printf "%s" -Dtools=enabled ;; >> --disable-tools) printf "%s" -Dtools=disabled ;; >> --enable-tpm) printf "%s" -Dtpm=enabled ;; > > That's a great addition, including just for speeding up normal builds. > > Reviewed-by: Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com> > Tested-by: Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com> > > If we want to overengineer the thing, it could be possible to still > declare all tests, but not build them by default. However, it's probably > too error prone and much less simple than this patch. So I don't think > it's a good idea. > > Regards, > Pierrick > When is it useful to build without the provided test suite? When another one is better? Why not contribute it then? Or is is just that you don't want to test your changes? The problem might be we build the tests by default but don't run them by default. ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH] Add option to disable building tests 2026-07-27 8:12 ` Philippe Mathieu-Daudé @ 2026-07-27 8:46 ` Florian Schmidt 2026-07-27 8:50 ` Daniel P. Berrangé 2026-07-27 9:11 ` Thomas Huth 1 sibling, 1 reply; 12+ messages in thread From: Florian Schmidt @ 2026-07-27 8:46 UTC (permalink / raw) To: Philippe Mathieu-Daudé, Pierrick Bouvier, Paolo Bonzini Cc: Marc-André Lureau, Daniel P. Berrangé, Philippe Mathieu-Daudé, Alex Bennée, qemu-devel On 2026-07-27 09:12, Philippe Mathieu-Daudé wrote: > When is it useful to build without the provided test suite? When another > one is better? Why not contribute it then? > > Or is is just that you don't want to test your changes? In our case, we have pipelines that rebuild/repackage QEMU after a full build+test, without running the test suite again. In those cases, building the tests is wasted effort, and considerably increases the overall build times. > The problem might be we build the tests by default but don't run them by > default. That's fair, but I would argue that in that case, there should still be some way to build the binaries without building and running the tests. Cheers, Florian ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH] Add option to disable building tests 2026-07-27 8:46 ` Florian Schmidt @ 2026-07-27 8:50 ` Daniel P. Berrangé 2026-07-27 9:05 ` Florian Schmidt 0 siblings, 1 reply; 12+ messages in thread From: Daniel P. Berrangé @ 2026-07-27 8:50 UTC (permalink / raw) To: Florian Schmidt Cc: Philippe Mathieu-Daudé, Pierrick Bouvier, Paolo Bonzini, Marc-André Lureau, Philippe Mathieu-Daudé, Alex Bennée, qemu-devel On Mon, Jul 27, 2026 at 09:46:33AM +0100, Florian Schmidt wrote: > On 2026-07-27 09:12, Philippe Mathieu-Daudé wrote: > > When is it useful to build without the provided test suite? When another > > one is better? Why not contribute it then? > > > > Or is is just that you don't want to test your changes? > > In our case, we have pipelines that rebuild/repackage QEMU after a full > build+test, without running the test suite again. In those cases, building > the tests is wasted effort, and considerably increases the overall build > times. I would suggest that building a second time is wasted effort too. If the 2nd build is byte-for-byte identical to the 1st build, then it is pointless. If it is not byte-for-byte identical, then you'll be taking binaries that have not been tested. With regards, Daniel -- |: https://berrange.com ~~ https://hachyderm.io/@berrange :| |: https://libvirt.org ~~ https://entangle-photo.org :| |: https://pixelfed.art/berrange ~~ https://fstop138.berrange.com :| ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH] Add option to disable building tests 2026-07-27 8:50 ` Daniel P. Berrangé @ 2026-07-27 9:05 ` Florian Schmidt 0 siblings, 0 replies; 12+ messages in thread From: Florian Schmidt @ 2026-07-27 9:05 UTC (permalink / raw) To: Daniel P. Berrangé Cc: Philippe Mathieu-Daudé, Pierrick Bouvier, Paolo Bonzini, Marc-André Lureau, Philippe Mathieu-Daudé, Alex Bennée, qemu-devel On 2026-07-27 09:50, Daniel P. Berrangé wrote: > I would suggest that building a second time is wasted effort too. If > the 2nd build is byte-for-byte identical to the 1st build, then it is > pointless. If it is not byte-for-byte identical, then you'll be taking > binaries that have not been tested. You're absolutely right. They are bit-to-bit-identical, and it is wasted effort, too. That is something we'll look at internally. However, it felt like a genuinely useful feature to split build and test phase more strongly, by having the ability to only build the product binaries if desired. There are other options, of course. A new build target such as "make bin" or similar could only build the product binaries, and a following "make test" would then build + run the tests. This could be combined with Philippe's idea to run (and not only build) the tests by default, though I'm always wary of changing the behaviour of default targets. That's obviously a maintainers' decision. Cheers, Florian ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH] Add option to disable building tests 2026-07-27 8:12 ` Philippe Mathieu-Daudé 2026-07-27 8:46 ` Florian Schmidt @ 2026-07-27 9:11 ` Thomas Huth 2026-07-27 11:19 ` BALATON Zoltan 1 sibling, 1 reply; 12+ messages in thread From: Thomas Huth @ 2026-07-27 9:11 UTC (permalink / raw) To: Philippe Mathieu-Daudé, Pierrick Bouvier, Florian Schmidt, Paolo Bonzini Cc: Marc-André Lureau, Daniel P. Berrangé, Philippe Mathieu-Daudé, Alex Bennée, qemu-devel On 27/07/2026 10.12, Philippe Mathieu-Daudé wrote: > On 24/7/26 18:45, Pierrick Bouvier wrote: >> On 7/24/2026 6:54 AM, Florian Schmidt wrote: >>> There are situations in which you might want to build QEMU without >>> building the full test suite, which in some configurations can take a >>> considerable amount of time to build. This is especially true when using >>> LTO with clang. For example: >>> >>> $ ../configure --cc=clang '--extra-ldflags=-flto=thin -ffat-lto-objects' >>> '--extra-cflags=-flto=thin -ffat-lto-objects' --target-list=x86_64-softmmu >>> [...] >>> $ time make -j8 >>> [...] >>> [3078/3078] Linking target tests/qtest/qos-test >>> real 6m43.250s >>> user 101m15.967s >>> sys 4m3.813s >>> >>> $ ../configure --cc=clang '--extra-ldflags=-flto=thin -ffat-lto-objects' >>> '--extra-cflags=-flto=thin -ffat-lto-objects' --target-list=x86_64- >>> softmmu --disable-tests >>> [...] >>> $ time make -j8 >>> [...] >>> [2024/2024] Linking target qemu-system-x86_64 >>> >>> real 3m14.277s >>> user 33m13.174s >>> sys 1m36.642s >>> >>> Add a toggle to optionally disable building tests. >>> >>> Signed-off-by: Florian Schmidt <flosch@nutanix.com> >>> --- >>> meson.build | 2 +- >>> meson_options.txt | 2 ++ >>> scripts/meson-buildoptions.sh | 3 +++ >>> 3 files changed, 6 insertions(+), 1 deletion(-) >>> >>> diff --git a/meson.build b/meson.build >>> index 49a5baf5b5..ad728c26ec 100644 >>> --- a/meson.build >>> +++ b/meson.build >>> @@ -4605,7 +4605,7 @@ subdir('docs') >>> subdir('pyvenv') >>> # Tests are disabled on emscripten because they rely on host features >>> that aren't >>> # supported by emscripten (e.g. fork and unix socket). >>> -if host_os != 'emscripten' >>> +if get_option('tests').allowed() and host_os != 'emscripten' >>> subdir('tests') >>> endif >>> if gtk.found() >>> diff --git a/meson_options.txt b/meson_options.txt >>> index a07cb47d35..68333ca402 100644 >>> --- a/meson_options.txt >>> +++ b/meson_options.txt >>> @@ -43,6 +43,8 @@ option('gdb', type: 'string', value: '', >>> # on the configure script command line. After adding an option >>> # here make sure to run "make update-buildoptions". >>> +option('tests', type: 'feature', value: 'auto', >>> + description: 'Build the test suite') >>> option('docs', type : 'feature', value : 'auto', >>> description: 'Documentations build support') >>> option('fuzzing', type : 'boolean', value: false, >>> diff --git a/scripts/meson-buildoptions.sh b/scripts/meson-buildoptions.sh >>> index c003985047..3fec13a336 100644 >>> --- a/scripts/meson-buildoptions.sh >>> +++ b/scripts/meson-buildoptions.sh >>> @@ -194,6 +194,7 @@ meson_options_help() { >>> printf "%s\n" ' spice-protocol Spice protocol support' >>> printf "%s\n" ' stack-protector compiler-provided stack protection' >>> printf "%s\n" ' tcg TCG support' >>> + printf "%s\n" ' tests build test suite' >>> printf "%s\n" ' tools build support utilities that come >>> with QEMU' >>> printf "%s\n" ' tpm TPM support' >>> printf "%s\n" ' u2f U2F emulation support' >>> @@ -515,6 +516,8 @@ _meson_option_parse() { >>> --enable-tcg-interpreter) printf "%s" -Dtcg_interpreter=true ;; >>> --disable-tcg-interpreter) printf "%s" -Dtcg_interpreter=false ;; >>> --tls-priority=*) quote_sh "-Dtls_priority=$2" ;; >>> + --enable-tests) printf "%s" -Dtests=enabled ;; >>> + --disable-tests) printf "%s" -Dtests=disabled ;; >>> --enable-tools) printf "%s" -Dtools=enabled ;; >>> --disable-tools) printf "%s" -Dtools=disabled ;; >>> --enable-tpm) printf "%s" -Dtpm=enabled ;; >> >> That's a great addition, including just for speeding up normal builds. >> >> Reviewed-by: Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com> >> Tested-by: Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com> >> >> If we want to overengineer the thing, it could be possible to still >> declare all tests, but not build them by default. However, it's probably >> too error prone and much less simple than this patch. So I don't think >> it's a good idea. >> >> Regards, >> Pierrick >> > > When is it useful to build without the provided test suite? I sometimes wished indeed for a --disable-tests switch in the past already (was just too lazy to contribute a patch): I'm sometimes building QEMU in a separate directory, just for a very special case like testing a patch with an --enable-asan build, or for doing a "git bisect". In such cases, I never want to run the normal tests since it's simply not necessary. I run the tests from my main build directory instead once I have a final patch and want to contribute it to upstream. So IMHO this patch is a good idea. Thomas ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH] Add option to disable building tests 2026-07-27 9:11 ` Thomas Huth @ 2026-07-27 11:19 ` BALATON Zoltan 2026-07-27 14:24 ` Philippe Mathieu-Daudé 0 siblings, 1 reply; 12+ messages in thread From: BALATON Zoltan @ 2026-07-27 11:19 UTC (permalink / raw) To: Thomas Huth Cc: Philippe Mathieu-Daudé, Pierrick Bouvier, Florian Schmidt, Paolo Bonzini, Marc-André Lureau, Daniel P. Berrangé, Philippe Mathieu-Daudé, Alex Bennée, qemu-devel [-- Attachment #1: Type: text/plain, Size: 5347 bytes --] On Mon, 27 Jul 2026, Thomas Huth wrote: > On 27/07/2026 10.12, Philippe Mathieu-Daudé wrote: >> On 24/7/26 18:45, Pierrick Bouvier wrote: >>> On 7/24/2026 6:54 AM, Florian Schmidt wrote: >>>> There are situations in which you might want to build QEMU without >>>> building the full test suite, which in some configurations can take a >>>> considerable amount of time to build. This is especially true when using >>>> LTO with clang. For example: >>>> >>>> $ ../configure --cc=clang '--extra-ldflags=-flto=thin -ffat-lto-objects' >>>> '--extra-cflags=-flto=thin -ffat-lto-objects' >>>> --target-list=x86_64-softmmu >>>> [...] >>>> $ time make -j8 >>>> [...] >>>> [3078/3078] Linking target tests/qtest/qos-test >>>> real 6m43.250s >>>> user 101m15.967s >>>> sys 4m3.813s >>>> >>>> $ ../configure --cc=clang '--extra-ldflags=-flto=thin -ffat-lto-objects' >>>> '--extra-cflags=-flto=thin -ffat-lto-objects' --target-list=x86_64- >>>> softmmu --disable-tests >>>> [...] >>>> $ time make -j8 >>>> [...] >>>> [2024/2024] Linking target qemu-system-x86_64 >>>> >>>> real 3m14.277s >>>> user 33m13.174s >>>> sys 1m36.642s >>>> >>>> Add a toggle to optionally disable building tests. >>>> >>>> Signed-off-by: Florian Schmidt <flosch@nutanix.com> >>>> --- >>>> meson.build | 2 +- >>>> meson_options.txt | 2 ++ >>>> scripts/meson-buildoptions.sh | 3 +++ >>>> 3 files changed, 6 insertions(+), 1 deletion(-) >>>> >>>> diff --git a/meson.build b/meson.build >>>> index 49a5baf5b5..ad728c26ec 100644 >>>> --- a/meson.build >>>> +++ b/meson.build >>>> @@ -4605,7 +4605,7 @@ subdir('docs') >>>> subdir('pyvenv') >>>> # Tests are disabled on emscripten because they rely on host features >>>> that aren't >>>> # supported by emscripten (e.g. fork and unix socket). >>>> -if host_os != 'emscripten' >>>> +if get_option('tests').allowed() and host_os != 'emscripten' >>>> subdir('tests') >>>> endif >>>> if gtk.found() >>>> diff --git a/meson_options.txt b/meson_options.txt >>>> index a07cb47d35..68333ca402 100644 >>>> --- a/meson_options.txt >>>> +++ b/meson_options.txt >>>> @@ -43,6 +43,8 @@ option('gdb', type: 'string', value: '', >>>> # on the configure script command line. After adding an option >>>> # here make sure to run "make update-buildoptions". >>>> +option('tests', type: 'feature', value: 'auto', >>>> + description: 'Build the test suite') >>>> option('docs', type : 'feature', value : 'auto', >>>> description: 'Documentations build support') >>>> option('fuzzing', type : 'boolean', value: false, >>>> diff --git a/scripts/meson-buildoptions.sh >>>> b/scripts/meson-buildoptions.sh >>>> index c003985047..3fec13a336 100644 >>>> --- a/scripts/meson-buildoptions.sh >>>> +++ b/scripts/meson-buildoptions.sh >>>> @@ -194,6 +194,7 @@ meson_options_help() { >>>> printf "%s\n" ' spice-protocol Spice protocol support' >>>> printf "%s\n" ' stack-protector compiler-provided stack protection' >>>> printf "%s\n" ' tcg TCG support' >>>> + printf "%s\n" ' tests build test suite' >>>> printf "%s\n" ' tools build support utilities that come >>>> with QEMU' >>>> printf "%s\n" ' tpm TPM support' >>>> printf "%s\n" ' u2f U2F emulation support' >>>> @@ -515,6 +516,8 @@ _meson_option_parse() { >>>> --enable-tcg-interpreter) printf "%s" -Dtcg_interpreter=true ;; >>>> --disable-tcg-interpreter) printf "%s" -Dtcg_interpreter=false ;; >>>> --tls-priority=*) quote_sh "-Dtls_priority=$2" ;; >>>> + --enable-tests) printf "%s" -Dtests=enabled ;; >>>> + --disable-tests) printf "%s" -Dtests=disabled ;; >>>> --enable-tools) printf "%s" -Dtools=enabled ;; >>>> --disable-tools) printf "%s" -Dtools=disabled ;; >>>> --enable-tpm) printf "%s" -Dtpm=enabled ;; >>> >>> That's a great addition, including just for speeding up normal builds. >>> >>> Reviewed-by: Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com> >>> Tested-by: Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com> >>> >>> If we want to overengineer the thing, it could be possible to still >>> declare all tests, but not build them by default. However, it's probably >>> too error prone and much less simple than this patch. So I don't think >>> it's a good idea. >>> >>> Regards, >>> Pierrick >>> >> >> When is it useful to build without the provided test suite? > I sometimes wished indeed for a --disable-tests switch in the past already > (was just too lazy to contribute a patch): I'm sometimes building QEMU in a > separate directory, just for a very special case like testing a patch with an > --enable-asan build, or for doing a "git bisect". In such cases, I never want > to run the normal tests since it's simply not necessary. I run the tests from > my main build directory instead once I have a final patch and want to > contribute it to upstream. So IMHO this patch is a good idea. I similarly have a local patch for this for such usage, that I never cleaned up to submit but I think it's a good idea. Regards, BALATON Zoltan ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH] Add option to disable building tests 2026-07-27 11:19 ` BALATON Zoltan @ 2026-07-27 14:24 ` Philippe Mathieu-Daudé 2026-07-27 15:15 ` Fabiano Rosas 0 siblings, 1 reply; 12+ messages in thread From: Philippe Mathieu-Daudé @ 2026-07-27 14:24 UTC (permalink / raw) To: BALATON Zoltan, Thomas Huth Cc: Pierrick Bouvier, Florian Schmidt, Paolo Bonzini, Marc-André Lureau, Daniel P. Berrangé, Philippe Mathieu-Daudé, Alex Bennée, qemu-devel On 27/7/26 13:19, BALATON Zoltan wrote: > On Mon, 27 Jul 2026, Thomas Huth wrote: >> On 27/07/2026 10.12, Philippe Mathieu-Daudé wrote: >>> On 24/7/26 18:45, Pierrick Bouvier wrote: >>>> On 7/24/2026 6:54 AM, Florian Schmidt wrote: >>>>> There are situations in which you might want to build QEMU without >>>>> building the full test suite, which in some configurations can take a >>>>> considerable amount of time to build. This is especially true when >>>>> using >>>>> LTO with clang. For example: >>>>> >>>>> $ ../configure --cc=clang '--extra-ldflags=-flto=thin -ffat-lto- >>>>> objects' '--extra-cflags=-flto=thin -ffat-lto-objects' --target- >>>>> list=x86_64-softmmu >>>>> [...] >>>>> $ time make -j8 >>>>> [...] >>>>> [3078/3078] Linking target tests/qtest/qos-test >>>>> real 6m43.250s >>>>> user 101m15.967s >>>>> sys 4m3.813s >>>>> >>>>> $ ../configure --cc=clang '--extra-ldflags=-flto=thin -ffat-lto- >>>>> objects' '--extra-cflags=-flto=thin -ffat-lto-objects' --target- >>>>> list=x86_64- softmmu --disable-tests >>>>> [...] >>>>> $ time make -j8 >>>>> [...] >>>>> [2024/2024] Linking target qemu-system-x86_64 >>>>> >>>>> real 3m14.277s >>>>> user 33m13.174s >>>>> sys 1m36.642s >>>>> >>>>> Add a toggle to optionally disable building tests. >>>>> >>>>> Signed-off-by: Florian Schmidt <flosch@nutanix.com> >>>>> --- >>>>> meson.build | 2 +- >>>>> meson_options.txt | 2 ++ >>>>> scripts/meson-buildoptions.sh | 3 +++ >>>>> 3 files changed, 6 insertions(+), 1 deletion(-) >>>>> >>>>> diff --git a/meson.build b/meson.build >>>>> index 49a5baf5b5..ad728c26ec 100644 >>>>> --- a/meson.build >>>>> +++ b/meson.build >>>>> @@ -4605,7 +4605,7 @@ subdir('docs') >>>>> subdir('pyvenv') >>>>> # Tests are disabled on emscripten because they rely on host >>>>> features that aren't >>>>> # supported by emscripten (e.g. fork and unix socket). >>>>> -if host_os != 'emscripten' >>>>> +if get_option('tests').allowed() and host_os != 'emscripten' >>>>> subdir('tests') >>>>> endif >>>>> if gtk.found() >>>>> diff --git a/meson_options.txt b/meson_options.txt >>>>> index a07cb47d35..68333ca402 100644 >>>>> --- a/meson_options.txt >>>>> +++ b/meson_options.txt >>>>> @@ -43,6 +43,8 @@ option('gdb', type: 'string', value: '', >>>>> # on the configure script command line. After adding an option >>>>> # here make sure to run "make update-buildoptions". >>>>> +option('tests', type: 'feature', value: 'auto', >>>>> + description: 'Build the test suite') >>>>> option('docs', type : 'feature', value : 'auto', >>>>> description: 'Documentations build support') >>>>> option('fuzzing', type : 'boolean', value: false, >>>>> diff --git a/scripts/meson-buildoptions.sh b/scripts/meson- >>>>> buildoptions.sh >>>>> index c003985047..3fec13a336 100644 >>>>> --- a/scripts/meson-buildoptions.sh >>>>> +++ b/scripts/meson-buildoptions.sh >>>>> @@ -194,6 +194,7 @@ meson_options_help() { >>>>> printf "%s\n" ' spice-protocol Spice protocol support' >>>>> printf "%s\n" ' stack-protector compiler-provided stack >>>>> protection' >>>>> printf "%s\n" ' tcg TCG support' >>>>> + printf "%s\n" ' tests build test suite' >>>>> printf "%s\n" ' tools build support utilities that >>>>> come with QEMU' >>>>> printf "%s\n" ' tpm TPM support' >>>>> printf "%s\n" ' u2f U2F emulation support' >>>>> @@ -515,6 +516,8 @@ _meson_option_parse() { >>>>> --enable-tcg-interpreter) printf "%s" -Dtcg_interpreter=true ;; >>>>> --disable-tcg-interpreter) printf "%s" - >>>>> Dtcg_interpreter=false ;; >>>>> --tls-priority=*) quote_sh "-Dtls_priority=$2" ;; >>>>> + --enable-tests) printf "%s" -Dtests=enabled ;; >>>>> + --disable-tests) printf "%s" -Dtests=disabled ;; >>>>> --enable-tools) printf "%s" -Dtools=enabled ;; >>>>> --disable-tools) printf "%s" -Dtools=disabled ;; >>>>> --enable-tpm) printf "%s" -Dtpm=enabled ;; >>>> >>>> That's a great addition, including just for speeding up normal builds. >>>> >>>> Reviewed-by: Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com> >>>> Tested-by: Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com> >>>> >>>> If we want to overengineer the thing, it could be possible to still >>>> declare all tests, but not build them by default. However, it's >>>> probably >>>> too error prone and much less simple than this patch. So I don't think >>>> it's a good idea. >>>> >>>> Regards, >>>> Pierrick >>>> >>> >>> When is it useful to build without the provided test suite? >> I sometimes wished indeed for a --disable-tests switch in the past >> already (was just too lazy to contribute a patch): I'm sometimes >> building QEMU in a separate directory, just for a very special case >> like testing a patch with an --enable-asan build, or for doing a "git >> bisect". In such cases, I never want to run the normal tests since >> it's simply not necessary. I run the tests from my main build >> directory instead once I have a final patch and want to contribute it >> to upstream. So IMHO this patch is a good idea. > > I similarly have a local patch for this for such usage, that I never > cleaned up to submit but I think it's a good idea. I'm not saying this patch is a bad idea, I'll likely use it too; I want to clarify what are the valid use cases the community sees here. Building pointless things clearly has a negative impact on resources and our time, but not testing changes also has. IOW in somes cases this change is acceptable, but I'm a little wary on massive use by default. Anyway I didn't wanted to start yet another endless discussion so I won't intervene further in this thread, sorry for the usual noise. ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH] Add option to disable building tests 2026-07-27 14:24 ` Philippe Mathieu-Daudé @ 2026-07-27 15:15 ` Fabiano Rosas 2026-07-27 15:23 ` Peter Maydell 0 siblings, 1 reply; 12+ messages in thread From: Fabiano Rosas @ 2026-07-27 15:15 UTC (permalink / raw) To: Philippe Mathieu-Daudé, BALATON Zoltan, Thomas Huth Cc: Pierrick Bouvier, Florian Schmidt, Paolo Bonzini, Marc-André Lureau, Daniel P. Berrangé, Philippe Mathieu-Daudé, Alex Bennée, qemu-devel Philippe Mathieu-Daudé <philmd@oss.qualcomm.com> writes: > On 27/7/26 13:19, BALATON Zoltan wrote: >> On Mon, 27 Jul 2026, Thomas Huth wrote: >>> On 27/07/2026 10.12, Philippe Mathieu-Daudé wrote: >>>> On 24/7/26 18:45, Pierrick Bouvier wrote: >>>>> On 7/24/2026 6:54 AM, Florian Schmidt wrote: >>>>>> There are situations in which you might want to build QEMU without >>>>>> building the full test suite, which in some configurations can take a >>>>>> considerable amount of time to build. This is especially true when >>>>>> using >>>>>> LTO with clang. For example: >>>>>> >>>>>> $ ../configure --cc=clang '--extra-ldflags=-flto=thin -ffat-lto- >>>>>> objects' '--extra-cflags=-flto=thin -ffat-lto-objects' --target- >>>>>> list=x86_64-softmmu >>>>>> [...] >>>>>> $ time make -j8 >>>>>> [...] >>>>>> [3078/3078] Linking target tests/qtest/qos-test >>>>>> real 6m43.250s >>>>>> user 101m15.967s >>>>>> sys 4m3.813s >>>>>> >>>>>> $ ../configure --cc=clang '--extra-ldflags=-flto=thin -ffat-lto- >>>>>> objects' '--extra-cflags=-flto=thin -ffat-lto-objects' --target- >>>>>> list=x86_64- softmmu --disable-tests >>>>>> [...] >>>>>> $ time make -j8 >>>>>> [...] >>>>>> [2024/2024] Linking target qemu-system-x86_64 >>>>>> >>>>>> real 3m14.277s >>>>>> user 33m13.174s >>>>>> sys 1m36.642s >>>>>> >>>>>> Add a toggle to optionally disable building tests. >>>>>> >>>>>> Signed-off-by: Florian Schmidt <flosch@nutanix.com> >>>>>> --- >>>>>> meson.build | 2 +- >>>>>> meson_options.txt | 2 ++ >>>>>> scripts/meson-buildoptions.sh | 3 +++ >>>>>> 3 files changed, 6 insertions(+), 1 deletion(-) >>>>>> >>>>>> diff --git a/meson.build b/meson.build >>>>>> index 49a5baf5b5..ad728c26ec 100644 >>>>>> --- a/meson.build >>>>>> +++ b/meson.build >>>>>> @@ -4605,7 +4605,7 @@ subdir('docs') >>>>>> subdir('pyvenv') >>>>>> # Tests are disabled on emscripten because they rely on host >>>>>> features that aren't >>>>>> # supported by emscripten (e.g. fork and unix socket). >>>>>> -if host_os != 'emscripten' >>>>>> +if get_option('tests').allowed() and host_os != 'emscripten' >>>>>> subdir('tests') >>>>>> endif >>>>>> if gtk.found() >>>>>> diff --git a/meson_options.txt b/meson_options.txt >>>>>> index a07cb47d35..68333ca402 100644 >>>>>> --- a/meson_options.txt >>>>>> +++ b/meson_options.txt >>>>>> @@ -43,6 +43,8 @@ option('gdb', type: 'string', value: '', >>>>>> # on the configure script command line. After adding an option >>>>>> # here make sure to run "make update-buildoptions". >>>>>> +option('tests', type: 'feature', value: 'auto', >>>>>> + description: 'Build the test suite') >>>>>> option('docs', type : 'feature', value : 'auto', >>>>>> description: 'Documentations build support') >>>>>> option('fuzzing', type : 'boolean', value: false, >>>>>> diff --git a/scripts/meson-buildoptions.sh b/scripts/meson- >>>>>> buildoptions.sh >>>>>> index c003985047..3fec13a336 100644 >>>>>> --- a/scripts/meson-buildoptions.sh >>>>>> +++ b/scripts/meson-buildoptions.sh >>>>>> @@ -194,6 +194,7 @@ meson_options_help() { >>>>>> printf "%s\n" ' spice-protocol Spice protocol support' >>>>>> printf "%s\n" ' stack-protector compiler-provided stack >>>>>> protection' >>>>>> printf "%s\n" ' tcg TCG support' >>>>>> + printf "%s\n" ' tests build test suite' >>>>>> printf "%s\n" ' tools build support utilities that >>>>>> come with QEMU' >>>>>> printf "%s\n" ' tpm TPM support' >>>>>> printf "%s\n" ' u2f U2F emulation support' >>>>>> @@ -515,6 +516,8 @@ _meson_option_parse() { >>>>>> --enable-tcg-interpreter) printf "%s" -Dtcg_interpreter=true ;; >>>>>> --disable-tcg-interpreter) printf "%s" - >>>>>> Dtcg_interpreter=false ;; >>>>>> --tls-priority=*) quote_sh "-Dtls_priority=$2" ;; >>>>>> + --enable-tests) printf "%s" -Dtests=enabled ;; >>>>>> + --disable-tests) printf "%s" -Dtests=disabled ;; >>>>>> --enable-tools) printf "%s" -Dtools=enabled ;; >>>>>> --disable-tools) printf "%s" -Dtools=disabled ;; >>>>>> --enable-tpm) printf "%s" -Dtpm=enabled ;; >>>>> >>>>> That's a great addition, including just for speeding up normal builds. >>>>> >>>>> Reviewed-by: Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com> >>>>> Tested-by: Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com> >>>>> >>>>> If we want to overengineer the thing, it could be possible to still >>>>> declare all tests, but not build them by default. However, it's >>>>> probably >>>>> too error prone and much less simple than this patch. So I don't think >>>>> it's a good idea. >>>>> >>>>> Regards, >>>>> Pierrick >>>>> >>>> >>>> When is it useful to build without the provided test suite? >>> I sometimes wished indeed for a --disable-tests switch in the past >>> already (was just too lazy to contribute a patch): I'm sometimes >>> building QEMU in a separate directory, just for a very special case >>> like testing a patch with an --enable-asan build, or for doing a "git >>> bisect". In such cases, I never want to run the normal tests since >>> it's simply not necessary. I run the tests from my main build >>> directory instead once I have a final patch and want to contribute it >>> to upstream. So IMHO this patch is a good idea. >> >> I similarly have a local patch for this for such usage, that I never >> cleaned up to submit but I think it's a good idea. > > I'm not saying this patch is a bad idea, I'll likely use it too; > I want to clarify what are the valid use cases the community sees > here. Building pointless things clearly has a negative impact on > resources and our time, but not testing changes also has. Perhaps we could add something to checkpatch that emits an error if config-status has --disable-tests. > IOW in somes cases this change is acceptable, but I'm a little wary > on massive use by default. > > Anyway I didn't wanted to start yet another endless discussion so I > won't intervene further in this thread, sorry for the usual noise. I think we'd rather have your comments and everyone else's, there's no deadline for anything. ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH] Add option to disable building tests 2026-07-27 15:15 ` Fabiano Rosas @ 2026-07-27 15:23 ` Peter Maydell 2026-07-27 16:29 ` Helge Deller 0 siblings, 1 reply; 12+ messages in thread From: Peter Maydell @ 2026-07-27 15:23 UTC (permalink / raw) To: Fabiano Rosas Cc: Philippe Mathieu-Daudé, BALATON Zoltan, Thomas Huth, Pierrick Bouvier, Florian Schmidt, Paolo Bonzini, Marc-André Lureau, Daniel P. Berrangé, Philippe Mathieu-Daudé, Alex Bennée, qemu-devel On Mon, 27 Jul 2026 at 16:16, Fabiano Rosas <farosas@suse.de> wrote: > > Philippe Mathieu-Daudé <philmd@oss.qualcomm.com> writes: > > I'm not saying this patch is a bad idea, I'll likely use it too; > > I want to clarify what are the valid use cases the community sees > > here. Building pointless things clearly has a negative impact on > > resources and our time, but not testing changes also has. > > Perhaps we could add something to checkpatch that emits an error if > config-status has --disable-tests. I think that's probably overkill. People who don't run tests are much more likely to be doing it by simply not running "make check" and "make check-functional" than by using this new --disable-tests configure option :-) I think if --disable-tests isn't the default then that's enough to mean that it only gets used for the situations where it matters to cut down that build time (like the bisection-test cases etc). (Also, checkpatch runs in a source tree and can't know about configure options, which are per-build-tree.) thanks -- PMM ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH] Add option to disable building tests 2026-07-27 15:23 ` Peter Maydell @ 2026-07-27 16:29 ` Helge Deller 0 siblings, 0 replies; 12+ messages in thread From: Helge Deller @ 2026-07-27 16:29 UTC (permalink / raw) To: Peter Maydell, Fabiano Rosas Cc: Philippe Mathieu-Daudé, BALATON Zoltan, Thomas Huth, Pierrick Bouvier, Florian Schmidt, Paolo Bonzini, Marc-André Lureau, Daniel P. Berrangé, Philippe Mathieu-Daudé, Alex Bennée, qemu-devel On 7/27/26 17:23, Peter Maydell wrote: > On Mon, 27 Jul 2026 at 16:16, Fabiano Rosas <farosas@suse.de> wrote: >> >> Philippe Mathieu-Daudé <philmd@oss.qualcomm.com> writes: >>> I'm not saying this patch is a bad idea, I'll likely use it too; >>> I want to clarify what are the valid use cases the community sees >>> here. Building pointless things clearly has a negative impact on >>> resources and our time, but not testing changes also has. >> >> Perhaps we could add something to checkpatch that emits an error if >> config-status has --disable-tests. > > I think that's probably overkill. People who don't run tests > are much more likely to be doing it by simply not running > "make check" and "make check-functional" than by using this new > --disable-tests configure option :-) > > I think if --disable-tests isn't the default then that's enough > to mean that it only gets used for the situations where it matters > to cut down that build time (like the bisection-test cases etc). +1 from me: Add "--disable-tests", but don't make it default. Those tests just stole lots of my time while running git-bisect..... Helge ^ permalink raw reply [flat|nested] 12+ messages in thread
end of thread, other threads:[~2026-07-27 16:30 UTC | newest] Thread overview: 12+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2026-07-24 13:54 [PATCH] Add option to disable building tests Florian Schmidt 2026-07-24 16:45 ` Pierrick Bouvier 2026-07-27 8:12 ` Philippe Mathieu-Daudé 2026-07-27 8:46 ` Florian Schmidt 2026-07-27 8:50 ` Daniel P. Berrangé 2026-07-27 9:05 ` Florian Schmidt 2026-07-27 9:11 ` Thomas Huth 2026-07-27 11:19 ` BALATON Zoltan 2026-07-27 14:24 ` Philippe Mathieu-Daudé 2026-07-27 15:15 ` Fabiano Rosas 2026-07-27 15:23 ` Peter Maydell 2026-07-27 16:29 ` Helge Deller
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.