[libvirt PATCH 000/351] port libvirt to Meson build system

Pavel Hrdina phrdina at redhat.com
Thu Jul 16 13:44:25 UTC 2020

On Thu, Jul 16, 2020 at 01:59:00PM +0100, Daniel P. Berrangé wrote:
> On Thu, Jul 16, 2020 at 11:53:56AM +0200, Pavel Hrdina wrote:
> > So I was finally able to produce the patches to port libvirt to Meson.
> > Obviously, it is a lot of changes. It might look that some of the
> > patches could be squashed together but I would rather have it as
> > separated as possible to make the review not that difficult.
> > 
> > Once we are done with review I suggest to squash all patches to single
> > patch as it doesn't make sense to keep them separated as it will not be
> > possible to build complete libvirt code by any of the build systems.
> > Trying to achieve that would be even more challenging and the review
> > would me more difficult.
> > 
> > The reasoning behind taking this approach is to have 1:1 conversion from
> > autotools to Meson where each patch removes that part from autotools. It
> > serves as a check that nothing is skipped and to make sure that the
> > conversion is complete.
> Can you clarify a bit more what the expected behaviour is for the
> intermediate patches in the series ? eg if I was to "git bisect"
> across this series, how much will work vs break ?  I'm not fussed
> if stuff like "make dist" breaks, but does the basic "make" and
> "make check" (or meson equivalent) work ?  I'm also not fussed if
> the intermediate stages require running *both* make and meson
> as separate commands in order to full build.

The way how the patches are done will mean that autotools will not work
or randomly fail and things like that. I was not basically paying any
attention to not breaking autotools. Some of the bits removed from
autotools throughout the series will definitely break even simple make

Running both to fully build libvirt would be IMHO insane and complicated
so I was not even considering that option.

I tried it and the current state is that make will break with patch

    [PATCH 002/351] meson: remove automake specific directives

it complains a lot about incompatible endif reminder where deleted the
else branch of the if-else-endif structure.

Invoking meson will work since patch:

    [PATCH 010/351] meson: introduce meson build files

But it will not do any actual build until patch:

    [PATCH 129/351] meson: src: build dtrace files

I also tried running git rebase with:

    --exec='git clean -dfx && meson build && ninja -C build'

and discovered that I would have to move patch

    [PATCH 080/351] meson: add driver_remote build option

before patch that requires 'driver_remote' option:

    [PATCH 058/351] meson: add libssh build dependency

otherwise running meson between patches 58 and 80 will fail.

> Personally I'd really like to avoid squashing them, because splitting
> up big patches is not merely to benefit the initial pre-merge review,
> but to also benefit people who need to debug stuff that's already
> merged and understand the scope of the intended change. So being able
> to look back at the changes in isolation after commit is still a big
> plus point.

I would like to avoid squashing the patches as well and in most cases I
would object to it as well. I only suggested that to not break git

If we don't care about git bisect and the fact that we would not be able
to build libvirt correctly within these patches I'm OK with pushing it
without squashing.

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 833 bytes
Desc: not available
URL: <http://listman.redhat.com/archives/libvir-list/attachments/20200716/d728b9ea/attachment-0001.sig>

More information about the libvir-list mailing list