|
From: | Paolo Bonzini |
Subject: | Re: [RFC PATCH 0/9] tests: run python tests under the build/tests/venv environment |
Date: | Fri, 13 May 2022 11:45:06 +0200 |
User-agent: | Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Thunderbird/91.8.0 |
On 5/13/22 10:35, Daniel P. Berrangé wrote:
The tests is an area where we still have too much taking place in Makefiles, as opposed to meson. Can we put a rule in tests/meson.build to trigger the ven creation ? Gets us closer to being able to run ninja without using make as a wrapper.
I don't think this is or even should be a goal, because we have multiple projects under the QEMU tree:
- the QEMU binaries proper (emulators, tools, etc.)- the firmware (pc-bios/{vof,s390-ccw,optionrom} with sources, the rest as submodules)
- tests/tcgEach of these has its own build system and it's not possible to unify them under a single meson-based build:
- tests/tcg supports cross compilation for a different target, and pc-bios/ firmware will soon follow suit (which is why these directories haven't been converted to Meson, even though patches exist)
- firmware outside pc-bios/ consists of many external projects each with its own build system; right now it is not even buildable except by magic invocations that no one really knows
On top of this, there's support for building Docker images for cross-compilation which obviously doesn't fit the Meson usecases either.
In other words, Meson is the build system for QEMU *executables* (and that's why tests for the QEMU executables are being moved from configure to meson), but not for QEMU as a whole.
So I don't expect configure and Make to disappear. Meson is great at building a C program as big as QEMU; but QEMU is not just a C program, and isolating the C parts into Meson lets Make handle the rest of the complexity better than before, for example with cross compiled firmware support.
Likewise, we're now using "meson test" for "make check" and a custom runner for "make check-block"; but perhaps one day Avocado could replace both runners via custom Avocado resolvers (basically JSON emitters similar to Meson introspection data). That of course depends on whether Avocado has feature parity with "meson test".
Paolo
[Prev in Thread] | Current Thread | [Next in Thread] |