[PATCH 17/22] tests: forcibly run 'make check-venv' for crash tests

John Snow posted 22 patches 2 days, 17 hours ago
Maintainers: "Alex Bennée" <alex.bennee@linaro.org>, "Philippe Mathieu-Daudé" <philmd@linaro.org>, Thomas Huth <thuth@redhat.com>, Paolo Bonzini <pbonzini@redhat.com>, "Marc-André Lureau" <marcandre.lureau@redhat.com>, "Daniel P. Berrangé" <berrange@redhat.com>, John Snow <jsnow@redhat.com>, Cleber Rosa <crosa@redhat.com>, Markus Armbruster <armbru@redhat.com>, Michael Roth <michael.roth@amd.com>, Kevin Wolf <kwolf@redhat.com>, Hanna Reitz <hreitz@redhat.com>
[PATCH 17/22] tests: forcibly run 'make check-venv' for crash tests
Posted by John Snow 2 days, 17 hours ago
In order to convert the existing Makefile target from a manual
invocation of mkvenv to one that uses the meson dependency system, we
need to not suppress ninja here.

I'm not sure if this creates problems I am not aware of; but invoking
ninja here is no longer spurious but will become necessary.

Signed-off-by: John Snow <jsnow@redhat.com>
---
 .gitlab-ci.d/buildtest.yml | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/.gitlab-ci.d/buildtest.yml b/.gitlab-ci.d/buildtest.yml
index 18d72d3058b..2cb2cf25b4a 100644
--- a/.gitlab-ci.d/buildtest.yml
+++ b/.gitlab-ci.d/buildtest.yml
@@ -101,7 +101,7 @@ crash-test-debian:
     IMAGE: debian
   script:
     - cd build
-    - make NINJA=":" check-venv
+    - make check-venv
     - pyvenv/bin/python3 scripts/device-crash-test -q --tcg-only ./qemu-system-i386
 
 build-system-fedora:
@@ -158,7 +158,7 @@ crash-test-fedora:
     IMAGE: fedora
   script:
     - cd build
-    - make NINJA=":" check-venv
+    - make check-venv
     - pyvenv/bin/python3 scripts/device-crash-test -q ./qemu-system-ppc
     - pyvenv/bin/python3 scripts/device-crash-test -q ./qemu-system-riscv32
 
-- 
2.51.1
Re: [PATCH 17/22] tests: forcibly run 'make check-venv' for crash tests
Posted by Daniel P. Berrangé 2 days, 17 hours ago
On Mon, Nov 17, 2025 at 01:51:25PM -0500, John Snow wrote:
> In order to convert the existing Makefile target from a manual
> invocation of mkvenv to one that uses the meson dependency system, we
> need to not suppress ninja here.
> 
> I'm not sure if this creates problems I am not aware of; but invoking
> ninja here is no longer spurious but will become necessary.

Yes, this will likely create problems. From the commit message that
introduced NINJA=":"...

  commit 4d3bd91b26a69b39a178744d3d6e5f23050afb23
  Author: Thomas Huth <thuth@redhat.com>
  Date:   Mon Apr 24 10:22:35 2023 +0100

    gitlab-ci: Avoid to re-run "configure" in the device-crash-test jobs
    
    After "make check-venv" had been added to these jobs, they started
    to re-run "configure" each time since our logic in the makefile
    thinks that some files are out of date here. Avoid it with the same
    trick that we are using in buildtest-template.yml already by disabling
    the up-to-date check via NINJA=":".



> 
> Signed-off-by: John Snow <jsnow@redhat.com>
> ---
>  .gitlab-ci.d/buildtest.yml | 4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)
> 
> diff --git a/.gitlab-ci.d/buildtest.yml b/.gitlab-ci.d/buildtest.yml
> index 18d72d3058b..2cb2cf25b4a 100644
> --- a/.gitlab-ci.d/buildtest.yml
> +++ b/.gitlab-ci.d/buildtest.yml
> @@ -101,7 +101,7 @@ crash-test-debian:
>      IMAGE: debian
>    script:
>      - cd build
> -    - make NINJA=":" check-venv
> +    - make check-venv
>      - pyvenv/bin/python3 scripts/device-crash-test -q --tcg-only ./qemu-system-i386
>  
>  build-system-fedora:
> @@ -158,7 +158,7 @@ crash-test-fedora:
>      IMAGE: fedora
>    script:
>      - cd build
> -    - make NINJA=":" check-venv
> +    - make check-venv
>      - pyvenv/bin/python3 scripts/device-crash-test -q ./qemu-system-ppc
>      - pyvenv/bin/python3 scripts/device-crash-test -q ./qemu-system-riscv32
>  
> -- 
> 2.51.1
> 

With 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 :|
Re: [PATCH 17/22] tests: forcibly run 'make check-venv' for crash tests
Posted by Paolo Bonzini 2 days, 15 hours ago
Il lun 17 nov 2025, 20:07 Daniel P. Berrangé <berrange@redhat.com> ha
scritto:

> On Mon, Nov 17, 2025 at 01:51:25PM -0500, John Snow wrote:
> > In order to convert the existing Makefile target from a manual
> > invocation of mkvenv to one that uses the meson dependency system, we
> > need to not suppress ninja here.
> >
> > I'm not sure if this creates problems I am not aware of; but invoking
> > ninja here is no longer spurious but will become necessary.
>
> Yes, this will likely create problems. From the commit message that
> introduced NINJA=":"...
>
>  Avoid it with the same
>     trick that we are using in buildtest-template.yml already by disabling
>     the up-to-date check via NINJA=":".
>

Move the check-venv call to buildtest-template.yml, right after configure?
It's cheap enough.

Paolo


>
> >
> > Signed-off-by: John Snow <jsnow@redhat.com>
> > ---
> >  .gitlab-ci.d/buildtest.yml | 4 ++--
> >  1 file changed, 2 insertions(+), 2 deletions(-)
> >
> > diff --git a/.gitlab-ci.d/buildtest.yml b/.gitlab-ci.d/buildtest.yml
> > index 18d72d3058b..2cb2cf25b4a 100644
> > --- a/.gitlab-ci.d/buildtest.yml
> > +++ b/.gitlab-ci.d/buildtest.yml
> > @@ -101,7 +101,7 @@ crash-test-debian:
> >      IMAGE: debian
> >    script:
> >      - cd build
> > -    - make NINJA=":" check-venv
> > +    - make check-venv
> >      - pyvenv/bin/python3 scripts/device-crash-test -q --tcg-only
> ./qemu-system-i386
> >
> >  build-system-fedora:
> > @@ -158,7 +158,7 @@ crash-test-fedora:
> >      IMAGE: fedora
> >    script:
> >      - cd build
> > -    - make NINJA=":" check-venv
> > +    - make check-venv
> >      - pyvenv/bin/python3 scripts/device-crash-test -q ./qemu-system-ppc
> >      - pyvenv/bin/python3 scripts/device-crash-test -q
> ./qemu-system-riscv32
> >
> > --
> > 2.51.1
> >
>
> With 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 :|
>
>
Re: [PATCH 17/22] tests: forcibly run 'make check-venv' for crash tests
Posted by John Snow 1 day, 14 hours ago
On Mon, Nov 17, 2025, 3:47 PM Paolo Bonzini <pbonzini@redhat.com> wrote:

>
>
> Il lun 17 nov 2025, 20:07 Daniel P. Berrangé <berrange@redhat.com> ha
> scritto:
>
>> On Mon, Nov 17, 2025 at 01:51:25PM -0500, John Snow wrote:
>> > In order to convert the existing Makefile target from a manual
>> > invocation of mkvenv to one that uses the meson dependency system, we
>> > need to not suppress ninja here.
>> >
>> > I'm not sure if this creates problems I am not aware of; but invoking
>> > ninja here is no longer spurious but will become necessary.
>>
>> Yes, this will likely create problems. From the commit message that
>> introduced NINJA=":"...
>>
>>  Avoid it with the same
>>     trick that we are using in buildtest-template.yml already by disabling
>>     the up-to-date check via NINJA=":".
>>
>
> Move the check-venv call to buildtest-template.yml, right after configure?
> It's cheap enough.
>
> Paolo
>

What's the root issue here? That there's enough of a time delay between the
actual configure and the test running that it re-runs configure?

(And presumably this is bad mostly for wasted CI time...?)



>
>>
>> >
>> > Signed-off-by: John Snow <jsnow@redhat.com>
>> > ---
>> >  .gitlab-ci.d/buildtest.yml | 4 ++--
>> >  1 file changed, 2 insertions(+), 2 deletions(-)
>> >
>> > diff --git a/.gitlab-ci.d/buildtest.yml b/.gitlab-ci.d/buildtest.yml
>> > index 18d72d3058b..2cb2cf25b4a 100644
>> > --- a/.gitlab-ci.d/buildtest.yml
>> > +++ b/.gitlab-ci.d/buildtest.yml
>> > @@ -101,7 +101,7 @@ crash-test-debian:
>> >      IMAGE: debian
>> >    script:
>> >      - cd build
>> > -    - make NINJA=":" check-venv
>> > +    - make check-venv
>> >      - pyvenv/bin/python3 scripts/device-crash-test -q --tcg-only
>> ./qemu-system-i386
>> >
>> >  build-system-fedora:
>> > @@ -158,7 +158,7 @@ crash-test-fedora:
>> >      IMAGE: fedora
>> >    script:
>> >      - cd build
>> > -    - make NINJA=":" check-venv
>> > +    - make check-venv
>> >      - pyvenv/bin/python3 scripts/device-crash-test -q ./qemu-system-ppc
>> >      - pyvenv/bin/python3 scripts/device-crash-test -q
>> ./qemu-system-riscv32
>> >
>> > --
>> > 2.51.1
>> >
>>
>> With 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 :|
>>
>>
Re: [PATCH 17/22] tests: forcibly run 'make check-venv' for crash tests
Posted by Paolo Bonzini 1 day, 4 hours ago
Il mar 18 nov 2025, 22:50 John Snow <jsnow@redhat.com> ha scritto:

>
>
> On Mon, Nov 17, 2025, 3:47 PM Paolo Bonzini <pbonzini@redhat.com> wrote:
>
>>
>>
>> Il lun 17 nov 2025, 20:07 Daniel P. Berrangé <berrange@redhat.com> ha
>> scritto:
>>
>>> On Mon, Nov 17, 2025 at 01:51:25PM -0500, John Snow wrote:
>>> > In order to convert the existing Makefile target from a manual
>>> > invocation of mkvenv to one that uses the meson dependency system, we
>>> > need to not suppress ninja here.
>>> >
>>> > I'm not sure if this creates problems I am not aware of; but invoking
>>> > ninja here is no longer spurious but will become necessary.
>>>
>>> Yes, this will likely create problems. From the commit message that
>>> introduced NINJA=":"...
>>>
>>>  Avoid it with the same
>>>     trick that we are using in buildtest-template.yml already by
>>> disabling
>>>     the up-to-date check via NINJA=":".
>>>
>>
>> Move the check-venv call to buildtest-template.yml, right after
>> configure? It's cheap enough.
>>
>> Paolo
>>
>
> What's the root issue here? That there's enough of a time delay between
> the actual configure and the test running that it re-runs configure?
>

That the git repo is cloned again and is therefore newer than the
artifacts. That triggers a full rebuild.


> (And presumably this is bad mostly for wasted CI time...?)
>
>
>
>>
>>>
>>> >
>>> > Signed-off-by: John Snow <jsnow@redhat.com>
>>> > ---
>>> >  .gitlab-ci.d/buildtest.yml | 4 ++--
>>> >  1 file changed, 2 insertions(+), 2 deletions(-)
>>> >
>>> > diff --git a/.gitlab-ci.d/buildtest.yml b/.gitlab-ci.d/buildtest.yml
>>> > index 18d72d3058b..2cb2cf25b4a 100644
>>> > --- a/.gitlab-ci.d/buildtest.yml
>>> > +++ b/.gitlab-ci.d/buildtest.yml
>>> > @@ -101,7 +101,7 @@ crash-test-debian:
>>> >      IMAGE: debian
>>> >    script:
>>> >      - cd build
>>> > -    - make NINJA=":" check-venv
>>> > +    - make check-venv
>>> >      - pyvenv/bin/python3 scripts/device-crash-test -q --tcg-only
>>> ./qemu-system-i386
>>> >
>>> >  build-system-fedora:
>>> > @@ -158,7 +158,7 @@ crash-test-fedora:
>>> >      IMAGE: fedora
>>> >    script:
>>> >      - cd build
>>> > -    - make NINJA=":" check-venv
>>> > +    - make check-venv
>>> >      - pyvenv/bin/python3 scripts/device-crash-test -q
>>> ./qemu-system-ppc
>>> >      - pyvenv/bin/python3 scripts/device-crash-test -q
>>> ./qemu-system-riscv32
>>> >
>>> > --
>>> > 2.51.1
>>> >
>>>
>>> With 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 :|
>>>
>>>
Re: [PATCH 17/22] tests: forcibly run 'make check-venv' for crash tests
Posted by Thomas Huth 22 hours ago
On 19/11/2025 09.05, Paolo Bonzini wrote:
> 
> 
> Il mar 18 nov 2025, 22:50 John Snow <jsnow@redhat.com 
> <mailto:jsnow@redhat.com>> ha scritto:
> 
> 
> 
>     On Mon, Nov 17, 2025, 3:47 PM Paolo Bonzini <pbonzini@redhat.com
>     <mailto:pbonzini@redhat.com>> wrote:
> 
> 
> 
>         Il lun 17 nov 2025, 20:07 Daniel P. Berrangé <berrange@redhat.com
>         <mailto:berrange@redhat.com>> ha scritto:
> 
>             On Mon, Nov 17, 2025 at 01:51:25PM -0500, John Snow wrote:
>              > In order to convert the existing Makefile target from a manual
>              > invocation of mkvenv to one that uses the meson dependency
>             system, we
>              > need to not suppress ninja here.
>              >
>              > I'm not sure if this creates problems I am not aware of; but
>             invoking
>              > ninja here is no longer spurious but will become necessary.
> 
>             Yes, this will likely create problems. From the commit message that
>             introduced NINJA=":"...
> 
>               Avoid it with the same
>                  trick that we are using in buildtest-template.yml already
>             by disabling
>                  the up-to-date check via NINJA=":".
> 
> 
>         Move the check-venv call to buildtest-template.yml, right after
>         configure? It's cheap enough.
> 
>         Paolo
> 
> 
>     What's the root issue here? That there's enough of a time delay between
>     the actual configure and the test running that it re-runs configure?
> 
> 
> That the git repo is cloned again and is therefore newer than the artifacts. 
> That triggers a full rebuild.

Right. At least for the other "functional" and "check-system" jobs in our 
CI, this was a big issue, calling "make check-functional/qtest/iotest" there 
triggered a rebuild of all binaries, increasing our CI runtime significantly.

For the "crash test" jobs, it was mainly about avoiding to rerun the 
"configure" step for cosmetical reasons each time the job runs. The rebuild 
of the qemu binaries is triggered by "make check-iotests/qtests/function" in 
the other jobs, and not by "make check-venv" alone, so it's not as bad as in 
the other jobs here:
Without your patch, the jobs take about 16 minutes (crash-test-debian) and 
10 minutes (crash-test-fedora):

  https://gitlab.com/thuth/qemu/-/jobs/12138792667
  https://gitlab.com/thuth/qemu/-/jobs/12138792674

With your patch applied:

  https://gitlab.com/thuth/qemu/-/jobs/12139438583
  https://gitlab.com/thuth/qemu/-/jobs/12139438599

the jobs take approx. the same amount of time, so I think it's OK here to 
drop the NINJA=":" again.

But I think we should give Paolo's idea a try and move the "make check-venv" 
to buildtest-template.yml instead. In fact, that might even help to slightly 
decrease the total runtime of the jobs since all the other "check" jobs 
don't have to do this again (for example the check-functional jobs are 
running it, too, see: 
https://gitlab.com/qemu-project/qemu/-/jobs/12139584312#L1051).

  Thomas


Re: [PATCH 17/22] tests: forcibly run 'make check-venv' for crash tests
Posted by John Snow 13 hours ago
On Wed, Nov 19, 2025, 9:15 AM Thomas Huth <thuth@redhat.com> wrote:

> On 19/11/2025 09.05, Paolo Bonzini wrote:
> >
> >
> > Il mar 18 nov 2025, 22:50 John Snow <jsnow@redhat.com
> > <mailto:jsnow@redhat.com>> ha scritto:
> >
> >
> >
> >     On Mon, Nov 17, 2025, 3:47 PM Paolo Bonzini <pbonzini@redhat.com
> >     <mailto:pbonzini@redhat.com>> wrote:
> >
> >
> >
> >         Il lun 17 nov 2025, 20:07 Daniel P. Berrangé <
> berrange@redhat.com
> >         <mailto:berrange@redhat.com>> ha scritto:
> >
> >             On Mon, Nov 17, 2025 at 01:51:25PM -0500, John Snow wrote:
> >              > In order to convert the existing Makefile target from a
> manual
> >              > invocation of mkvenv to one that uses the meson dependency
> >             system, we
> >              > need to not suppress ninja here.
> >              >
> >              > I'm not sure if this creates problems I am not aware of;
> but
> >             invoking
> >              > ninja here is no longer spurious but will become
> necessary.
> >
> >             Yes, this will likely create problems. From the commit
> message that
> >             introduced NINJA=":"...
> >
> >               Avoid it with the same
> >                  trick that we are using in buildtest-template.yml
> already
> >             by disabling
> >                  the up-to-date check via NINJA=":".
> >
> >
> >         Move the check-venv call to buildtest-template.yml, right after
> >         configure? It's cheap enough.
> >
> >         Paolo
> >
> >
> >     What's the root issue here? That there's enough of a time delay
> between
> >     the actual configure and the test running that it re-runs configure?
> >
> >
> > That the git repo is cloned again and is therefore newer than the
> artifacts.
> > That triggers a full rebuild.
>
> Right. At least for the other "functional" and "check-system" jobs in our
> CI, this was a big issue, calling "make check-functional/qtest/iotest"
> there
> triggered a rebuild of all binaries, increasing our CI runtime
> significantly.
>
> For the "crash test" jobs, it was mainly about avoiding to rerun the
> "configure" step for cosmetical reasons each time the job runs. The
> rebuild
> of the qemu binaries is triggered by "make check-iotests/qtests/function"
> in
> the other jobs, and not by "make check-venv" alone, so it's not as bad as
> in
> the other jobs here:
> Without your patch, the jobs take about 16 minutes (crash-test-debian) and
> 10 minutes (crash-test-fedora):
>
>   https://gitlab.com/thuth/qemu/-/jobs/12138792667
>   https://gitlab.com/thuth/qemu/-/jobs/12138792674
>
> With your patch applied:
>
>   https://gitlab.com/thuth/qemu/-/jobs/12139438583
>   https://gitlab.com/thuth/qemu/-/jobs/12139438599
>
> the jobs take approx. the same amount of time, so I think it's OK here to
> drop the NINJA=":" again.
>
> But I think we should give Paolo's idea a try and move the "make
> check-venv"
> to buildtest-template.yml instead. In fact, that might even help to
> slightly
> decrease the total runtime of the jobs since all the other "check" jobs
> don't have to do this again (for example the check-functional jobs are
> running it, too, see:
> https://gitlab.com/qemu-project/qemu/-/jobs/12139584312#L1051).
>
>   Thomas
>

Ah, I see now, thanks! I can think of some remedies for this. No problem.