[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: deprecation of in-tree builds

From: BALATON Zoltan
Subject: Re: deprecation of in-tree builds
Date: Tue, 31 Mar 2020 17:04:16 +0200 (CEST)
User-agent: Alpine 2.22 (BSF 395 2020-01-19)

On Tue, 31 Mar 2020, Daniel P. Berrangé wrote:
On Tue, Mar 31, 2020 at 02:33:46PM +0200, BALATON Zoltan wrote:
We will have to ask developers to change habits anyway when we switch to
Meson.  I agree with Daniel's recommendation to delay changes requiring
habit-changes until then.  However, telling people to stay clear of the
unloved and brittle in-tree build is simply good advice we should not

Can someone please explain why is it brittle and cannot be supported? It has
worked well so far apart from some breakage due to being untested which is
also not a techincal necessity just a decision by some maintiners to not
test it. Adding a CI job to keep it working would also not be difficult or
much complexity.

Writing make rules to correctly handle both src-dir and build-dir scenarios
is a non-negligible maint burden. If you look back through QEMU's history
we have a steady stream of patches which have broken one or the other
build scenarios.

That's probably becuase there are no clear rules (such as always prefix files in source dir with $(SRC_PATH), generated files with some BUILDDIR, etc.) and these are not documented so every time someone touches it has to explore and debug it again. This could be avoided if these were written down once but instead of trying to document and clean up the build system the chosen direction is to just throw it out and replace it with something more complex and with more dependencies (Meson) and then to save "additional complexity" it also breaks people's workflow and demand them to adapt themselves. I'm not saying there should be no changes but if there's a way to make them less painful it could be considered if it's not much extra work and in this case it does not seem to be.

Developers will often not test both scenarios, just the one they prefer
to use. This results in a maint burden on the subsystem maintainers who
merge patches and then find they break & have to back them out. Sometimes
even the subsystem maintainer gets it wrong and burden falls on Peter to
find & reject it.

Even if we have CI to test both, it is still a burden on developers to
debug failures reported by the CI and figure out what needs fixing. With
the number of builds we do & the time for a single CI cycle it gets very
time consuming. I've personally wasted many many hours debugging src-dir
vs build-dir problems in QEMU's makefiles - probably more than an entire
day was lost when I did the patches to split the trace.h header file.

This all serves to divert time away from useful work on QEMU. If there
was some critically important functional thing that src-dir builds offer
that can't be achieved by build-dir builds, then the extra maint work
could be justified. I don't think that's the case though.

OK, so then only supporting out-of-tree builds but adding convenience function and Makefile to still allow people to run configure; make from source dir would solve this without also needing people to change what they always did so why is that solution not acceptable?


reply via email to

[Prev in Thread] Current Thread [Next in Thread]