From: Paolo Bonzini <pbonzini@redhat.com>
To: Markus Armbruster <armbru@redhat.com>
Cc: "Daniel P. Berrangé" <berrange@redhat.com>, qemu-devel@nongnu.org
Subject: Re: [Qemu-devel] [PATCH 3/7] configure: integrate Meson in the build system
Date: Thu, 27 Jun 2019 14:57:11 +0200 [thread overview]
Message-ID: <ef92c495-bb7d-01fb-6c3a-3dd6ae47c46c@redhat.com> (raw)
In-Reply-To: <87blyjfc87.fsf@dusky.pond.sub.org>
On 27/06/19 14:23, Markus Armbruster wrote:
> Paolo Bonzini <pbonzini@redhat.com> writes:
>> On 27/06/19 11:03, Daniel P. Berrangé wrote:
>> There are two parts of this. One is practical and has to do with
>> supporting a step-by-step transition. Using ninja2make makes it trivial
>> to have make build products that depend on meson build products, and
>> this way bottom up is a natural direction to do the conversion, which is
>> bottom up. You'd start from libqemuutil.a and code generators (tracing
>> + QAPI), then go to the tools and the emulators.
>
> *If* the conversion is too big a task to permit doing it all at once,
> then the step by step strategy you describe makes sense to me.
>
> The trouble with step by step is running out of steam before the final
> step. That would leave us worse off. Even an overly protracted
> conversion would be bad.
Agreed. But hey, Makefile.objs is 2000 lines of lists of files, it is
boring but it cannot take that long to convert. So it's not really
about being _possible_ to do it all at once, it's mostly about the
manageability of conflicts.
> Thus, my standard question on any proposed step-by-step conversion:
> commitment to finishing it? I'd be quite happy to take your word for
> it.
I cannot really make such a commitment now, but perhaps I can (or I and
someone else can) once a little more of the conversion is ready.
Especially QAPI and trace generators, since those are where most of the
magic resides. I can try that since your reaction wasn't of total
disgust. :)
>> The second is a design decision that simplifying the Make/meson
>> integration is *not* a goal. Rather the goals are: 1) making the
>> transition easier on developers; 2) avoiding magic in meson.build at all
>> costs. More specifically:
>>
> Your plan confines new magic to "Makefile rules and external scripts".
> We'll get actual reduction only if we can retire or at least radically
> simplify them at some point.
But even before that, we'll get *practical* reduction if it hacking the
Makefile rules and external scripts becomes rare enough. See for
example kconfig, where # of people hacking minikconf.py is much less
than # of people hacking default-configs.
> I'm more ambivalent on (1). Yes, making the transition easier for
> developers is worth hiding a certain amount of magic out of their way.
It's especially worth during the transition. Once Makefile.objs is gone
I agree we can afford more radical changes, but let's cross that bridge
when we get there.
>> I expect testing might also require some hand-holding, because "meson
>> test" does not integrate with "make -j" and to keep supporting our "make
>> check-*" targets. However, until the make->ninja flag day we could
>> generate tap-driver Makefile rules from "meson introspect --tests"
>> output. Basically I'm dropping Makefile magic in favor of build rule
>> generators are written in high-level languages.
>
> A PoC for selected tests would be nice.
Fair enough.
> Ignorant question: could the switch to Meson enable doing less in
> configure? It's big and sloooow.
It would be smaller since the DSL is more compact than shell scripts,
probably not much faster as the same tasks still have to be done. But
perhaps in the future Meson can parallelize them, and then we'd get that
for free.
Paolo
next prev parent reply other threads:[~2019-06-27 13:02 UTC|newest]
Thread overview: 29+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-06-10 11:14 [Qemu-devel] [RFC PATCH 0/7] Proof of concept for Meson integration Paolo Bonzini
2019-06-10 11:14 ` [Qemu-devel] [PATCH 1/7] configure: do not include $(...) variables in config-host.mak Paolo Bonzini
2019-06-10 11:14 ` [Qemu-devel] [PATCH 2/7] configure: set $PYTHON to a full path Paolo Bonzini
2019-06-10 11:14 ` [Qemu-devel] [PATCH 3/7] configure: integrate Meson in the build system Paolo Bonzini
2019-06-26 17:34 ` Markus Armbruster
2019-06-27 8:52 ` Paolo Bonzini
2019-06-27 9:46 ` Christophe de Dinechin
2019-06-27 9:03 ` Daniel P. Berrangé
2019-06-27 10:16 ` Paolo Bonzini
2019-06-27 12:23 ` Markus Armbruster
2019-06-27 12:50 ` Daniel P. Berrangé
2019-06-27 12:57 ` Paolo Bonzini [this message]
2019-06-27 12:55 ` Daniel P. Berrangé
2019-06-27 13:16 ` Gerd Hoffmann
2019-06-27 13:20 ` Paolo Bonzini
2019-06-27 13:27 ` Daniel P. Berrangé
2019-06-10 11:14 ` [Qemu-devel] [PATCH 4/7] libvhost-user: convert to Meson Paolo Bonzini
2019-06-27 9:03 ` Markus Armbruster
2019-06-10 11:14 ` [Qemu-devel] [PATCH 5/7] vhost-user-blk: " Paolo Bonzini
2019-06-10 11:15 ` [Qemu-devel] [PATCH 6/7] vhost-user-scsi: " Paolo Bonzini
2019-06-27 11:23 ` Markus Armbruster
2019-06-27 12:31 ` Paolo Bonzini
2019-06-10 11:15 ` [Qemu-devel] [PATCH 7/7] rdmacm-mux: " Paolo Bonzini
2019-06-27 11:38 ` Markus Armbruster
2019-06-27 12:21 ` Paolo Bonzini
2019-06-10 12:33 ` [Qemu-devel] [RFC PATCH 0/7] Proof of concept for Meson integration no-reply
2019-06-10 12:36 ` no-reply
2019-06-10 12:40 ` no-reply
2019-06-27 12:39 ` Markus Armbruster
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=ef92c495-bb7d-01fb-6c3a-3dd6ae47c46c@redhat.com \
--to=pbonzini@redhat.com \
--cc=armbru@redhat.com \
--cc=berrange@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).