From: Paolo Bonzini <pbonzini@redhat.com>
To: qemu-devel@nongnu.org
Subject: [PATCH for-8.0 00/30] Meson changes for QEMU 8.0
Date: Fri, 9 Dec 2022 12:23:39 +0100 [thread overview]
Message-ID: <20221209112409.184703-1-pbonzini@redhat.com> (raw)
The final bout of conversions removes the remaining compiler tests
for emulators, applies a few cleanups that are enabled by version 0.63
of Meson, and updates the documentation.
Committing this however requires first a libvirt-ci update, in order to
enable using Python 3.8/3.9 on CentOS 8 and SLES 15. I am still working
on it but the review can start early for these patches.
A final comparison for the effort has a net negative of around 4000
lines of code, despite the growth of QEMU itself in the meanwhile:
before after
--------------------------------------------------------------------------
8647 configure 4240 meson.build
1296 Makefile 1970 configure
985 tests/Makefile.include 337 Makefile
440 rules.mak 224 scripts/meson-buildoptions.py
379 scripts/tap-driver.pl 171 tests/Makefile.include
287 Makefile.target 129 scripts/nsis.py
263 tests/tcg/configure.sh 113 scripts/mtest2make.py
129 scripts/create_config 48 scripts/undefsym.py
~5500 various Makefile fragments ~6500 various meson.build files
--------------------------------------------------------------------------
17926 total 13732 total
Completing the conversion took roughly two years and a lot of the complexity
in how QEMU is built is indeed essential, but I think it's agreed that:
- the disruption to the developers was minimal, and even Windows only took
a month or so to solidify;
- there is overall feature parity for both configure/Makefile<->meson and for
tap-driver.pl<->"meson test", but with fewer bugs and fewer (though not zero)
workarounds required. For Meson, the main recurring issue is probably the
gnutls headers issue on Homebrew; see for example commit 76f67bac79f6,
"meson: Propagate gnutls dependency to migration", 2021-04-01)
- the original target of the conversion ("make it trivial to do trivial
things; easy to extend existing things; possible to do everything else")
has been achieved. New dependencies such as ninja, were introduced in
such a way as to make them familiar to shell/Make users, and did
provide subtle quality of life improvements (e.g. rebuild targets
on command line changes)
New build system features since the introduction of Meson include switching
to config/targets files, custom device configuration (--with-devices-ARCH=),
the modinfo mechanism for module loading, entitlement support for
Hypervisor.framework, the preinstall tree, autogenerated parsing of the
configure command line, and cross-compilation of pc-bios/ (admittedly
not done by Meson, but not hindered either).
Big thanks to Akihiko, Alex, Daniel, Marc-André, Richard, Thomas and
everybody else that shared the work and the reviews!
Thanks,
Paolo
Paolo Bonzini (30):
configure: remove useless write_c_skeleton
configure: remove dead function
configure: remove useless test
configure: preserve qemu-ga variables
configure: remove backwards-compatibility and obsolete options
meson: tweak hardening options for Windows
meson: support meson 0.64 -Doptimization=plain
meson: require 0.63.0
meson: use prefer_static option
meson: remove static_kwargs
meson: cleanup dummy-cpus.c rules
modinfo: lookup compile_commands.json by object
configure: remove backwards-compatibility code
configure: test all warnings
meson: cleanup compiler detection
build: move glib detection and workarounds to meson
configure: remove pkg-config functions
configure, meson: move --enable-modules to Meson
configure, meson: move --enable-debug-info to Meson
meson: prepare move of QEMU_CFLAGS to meson
build: move sanitizer tests to meson
build: move SafeStack tests to meson
build: move coroutine backend selection to meson
build: move stack protector flag selection to meson
build: move warning flag selection to meson
build: move remaining compiler flag tests to meson
build: move compiler version check to meson
docs: update build system docs
configure: do not rerun the tests with -Werror
meson: always log qemu-iotests verbosely
accel/meson.build | 9 +-
block/meson.build | 1 +
configure | 760 +-----------------
contrib/plugins/Makefile | 7 +-
docs/devel/build-system.rst | 286 ++++---
meson | 2 +-
meson.build | 684 +++++++++++-----
meson_options.txt | 13 +
plugins/meson.build | 2 +-
qga/meson.build | 2 +-
scripts/meson-buildoptions.py | 3 +
scripts/meson-buildoptions.sh | 22 +
scripts/modinfo-collect.py | 23 +-
tcg/meson.build | 2 +-
tests/qemu-iotests/meson.build | 3 +-
tests/unit/meson.build | 2 +-
...{coroutine-win32.c => coroutine-windows.c} | 0
util/meson.build | 2 +-
18 files changed, 716 insertions(+), 1107 deletions(-)
rename util/{coroutine-win32.c => coroutine-windows.c} (100%)
--
2.38.1
next reply other threads:[~2022-12-09 11:25 UTC|newest]
Thread overview: 92+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-12-09 11:23 Paolo Bonzini [this message]
2022-12-09 11:23 ` [PATCH 01/30] configure: remove useless write_c_skeleton Paolo Bonzini
2022-12-09 11:38 ` Peter Maydell
2022-12-16 14:33 ` Daniel P. Berrangé
2022-12-09 11:23 ` [PATCH 02/30] configure: remove dead function Paolo Bonzini
2022-12-09 11:36 ` Peter Maydell
2022-12-16 14:33 ` Daniel P. Berrangé
2022-12-09 11:23 ` [PATCH 03/30] configure: remove useless test Paolo Bonzini
2022-12-09 11:34 ` Peter Maydell
2022-12-09 16:35 ` Paolo Bonzini
2022-12-16 14:35 ` Daniel P. Berrangé
2022-12-09 11:23 ` [PATCH 04/30] configure: preserve qemu-ga variables Paolo Bonzini
2022-12-12 7:52 ` Marc-André Lureau
2022-12-16 14:39 ` Daniel P. Berrangé
2022-12-09 11:23 ` [PATCH 05/30] configure: remove backwards-compatibility and obsolete options Paolo Bonzini
2022-12-12 7:57 ` Marc-André Lureau
2022-12-16 14:40 ` Daniel P. Berrangé
2022-12-09 11:23 ` [PATCH 06/30] meson: tweak hardening options for Windows Paolo Bonzini
2022-12-12 8:18 ` Marc-André Lureau
2022-12-12 8:52 ` Paolo Bonzini
2022-12-16 14:42 ` Daniel P. Berrangé
2022-12-09 11:23 ` [PATCH 07/30] meson: support meson 0.64 -Doptimization=plain Paolo Bonzini
2022-12-12 8:21 ` Marc-André Lureau
2022-12-16 14:53 ` Daniel P. Berrangé
2022-12-09 11:23 ` [PATCH 08/30] meson: require 0.63.0 Paolo Bonzini
2022-12-09 13:25 ` Thomas Huth
2022-12-09 11:23 ` [PATCH 09/30] meson: use prefer_static option Paolo Bonzini
2022-12-12 8:29 ` Marc-André Lureau
2022-12-16 14:58 ` Daniel P. Berrangé
2022-12-09 11:23 ` [PATCH 10/30] meson: remove static_kwargs Paolo Bonzini
2022-12-12 8:32 ` Marc-André Lureau
2022-12-16 14:59 ` Daniel P. Berrangé
2022-12-09 11:23 ` [PATCH 11/30] meson: cleanup dummy-cpus.c rules Paolo Bonzini
2022-12-12 8:39 ` Marc-André Lureau
2022-12-16 14:59 ` Daniel P. Berrangé
2022-12-09 11:23 ` [PATCH 12/30] modinfo: lookup compile_commands.json by object Paolo Bonzini
2022-12-12 8:47 ` Marc-André Lureau
2022-12-09 11:23 ` [PATCH 13/30] configure: remove backwards-compatibility code Paolo Bonzini
2022-12-12 8:55 ` Marc-André Lureau
2022-12-09 11:23 ` [PATCH 14/30] configure: test all warnings Paolo Bonzini
2022-12-09 12:45 ` Philippe Mathieu-Daudé
2022-12-16 15:01 ` Daniel P. Berrangé
2022-12-09 11:23 ` [PATCH 15/30] meson: cleanup compiler detection Paolo Bonzini
2022-12-12 9:04 ` Marc-André Lureau
2022-12-16 15:03 ` Daniel P. Berrangé
2022-12-09 11:23 ` [PATCH 16/30] build: move glib detection and workarounds to meson Paolo Bonzini
2022-12-09 12:50 ` Philippe Mathieu-Daudé
2022-12-09 11:23 ` [PATCH 17/30] configure: remove pkg-config functions Paolo Bonzini
2022-12-12 9:05 ` Marc-André Lureau
2022-12-16 15:07 ` Daniel P. Berrangé
2022-12-09 11:23 ` [PATCH 18/30] configure, meson: move --enable-modules to Meson Paolo Bonzini
2022-12-12 9:07 ` Marc-André Lureau
2022-12-16 15:09 ` Daniel P. Berrangé
2022-12-09 11:23 ` [PATCH 19/30] configure, meson: move --enable-debug-info " Paolo Bonzini
2022-12-09 12:55 ` Philippe Mathieu-Daudé
2022-12-09 13:54 ` Paolo Bonzini
2022-12-09 14:21 ` Philippe Mathieu-Daudé
2022-12-09 16:21 ` Paolo Bonzini
2022-12-16 15:09 ` Daniel P. Berrangé
2022-12-09 11:23 ` [PATCH 20/30] meson: prepare move of QEMU_CFLAGS to meson Paolo Bonzini
2022-12-12 12:02 ` Marc-André Lureau
2022-12-16 15:11 ` Daniel P. Berrangé
2022-12-09 11:24 ` [PATCH 21/30] build: move sanitizer tests " Paolo Bonzini
2022-12-12 12:16 ` Marc-André Lureau
2022-12-12 17:31 ` Paolo Bonzini
2022-12-12 20:37 ` Paolo Bonzini
2022-12-09 11:24 ` [PATCH 22/30] build: move SafeStack " Paolo Bonzini
2022-12-09 12:57 ` Philippe Mathieu-Daudé
2022-12-09 11:24 ` [PATCH 23/30] build: move coroutine backend selection " Paolo Bonzini
2022-12-12 12:18 ` Marc-André Lureau
2022-12-09 11:24 ` [PATCH 24/30] build: move stack protector flag " Paolo Bonzini
2022-12-12 12:22 ` Marc-André Lureau
2022-12-09 11:24 ` [PATCH 25/30] build: move warning " Paolo Bonzini
2022-12-12 12:58 ` Marc-André Lureau
2022-12-09 11:24 ` [PATCH 26/30] build: move remaining compiler flag tests " Paolo Bonzini
2022-12-12 13:54 ` Marc-André Lureau
2022-12-09 11:24 ` [PATCH 27/30] build: move compiler version check " Paolo Bonzini
2022-12-09 11:52 ` Peter Maydell
2022-12-09 14:09 ` Paolo Bonzini
2022-12-09 14:19 ` Peter Maydell
2022-12-09 16:21 ` Paolo Bonzini
2022-12-09 11:24 ` [PATCH 28/30] docs: update build system docs Paolo Bonzini
2022-12-12 14:00 ` Marc-André Lureau
2022-12-09 11:24 ` [PATCH 29/30] configure: do not rerun the tests with -Werror Paolo Bonzini
2022-12-12 14:00 ` Marc-André Lureau
2022-12-09 11:24 ` [PATCH 30/30] meson: always log qemu-iotests verbosely Paolo Bonzini
2022-12-12 14:02 ` Marc-André Lureau
2022-12-12 16:48 ` Paolo Bonzini
2022-12-12 16:55 ` Peter Maydell
2022-12-12 21:36 ` Paolo Bonzini
2022-12-16 15:35 ` [PATCH for-8.0 00/30] Meson changes for QEMU 8.0 Daniel P. Berrangé
2022-12-17 12:54 ` Paolo Bonzini
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20221209112409.184703-1-pbonzini@redhat.com \
--to=pbonzini@redhat.com \
--cc=qemu-devel@nongnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).