Re: [RFC PATCH v4 00/19] Modernize the build system
- From
Jeff King <peff@peff.net>
- Date
- Nov 11, 2024, 21:06 UTC
- Message-ID
- <20241111210629.GB5019@coredump.intra.peff.net>
- In-Reply-To
- <ZzHeLlYu8Gwk1FPj@pks.im>
On Mon, Nov 11, 2024 at 11:36:30AM +0100, Patrick Steinhardt wrote:
Show 11 quoted lines
> > - Long-time Git contributors are going to be the ones who will most > > frequently use the new build system. I am definitely sympathetic to > > getting too comfortable with our existing tools, but so far in your > > response I have not seen a compelling reason to switch the project > > to use Meson. > > Yes, that's certainly true. And while I think we should optimize more > for newcomers as stated, I still think that Meson is very much > preferable over Makefiles for long-time contributors, as well. The > transition period may take some time, but in the end it just feels > superior to Make from my poin of view.
The number one thing I care about as a developer is that the build is _reliable_. Right now, if I move forwards and backwards in history and type "make" I will almost[1] always get a correct result based on the current tree, with the minimal required amount of building. This is important for bisecting.
When I have worked on other projects, especially those that use autotools, I quite frequently run into cases where building from a dirty state cause bizarre problems that go away with a "git clean && ./configure && make". But then bisection is _much_ slower because we're building from scratch (not to mention that autoconf itself is horrifically slow).
How does the meson build do here? I don't have any reason to think it would be bad, but I am nervous of any change.
[1] I say "almost" because there are one or two spots in our history
where you can run into link errors jumping over them. But for a
20-year project that's not too bad, and they happen infrequently
enough that I don't worry about it.Show 5 quoted lines
> Out of curiosity: did you try the Meson build? I personally have to say > that I already prefer working with it because the workflow with it is so > much nicer. It has nicer output, is faster, has out-of-tree builds, > makes it easier to configure and test execution feels way nicer compared > to my previous workflow with make.
I hadn't tried it. I did now, checking out origin/ps/build^ (to drop the "seen" resolution topic), but it didn't work:
$ meson setup build [...] Program msgfmt found: NO po/meson.build:3: WARNING: Gettext not found, all translation (po) targets will be ignored.
po/meson.build:3:20: ERROR: Can not assign void to variable.
I guess the assignment of "translations" there needs to be made conditional?
-Peff