Subject: Re: [PATCH v11 25/26] meson: fix conflicts with in-flight topics

From: Junio C Hamano <[email-masked]>
Date: Mon, 09 Dec 2024 16:58:59 +0900

Patrick Steinhardt <[email-masked]> writes:

> I have the following change queued up in a local patch series:
> ...
> What it does is to verify that test suites wired up in Meson are
> up-to-date, and if they aren't `meson setup` will fail and print all
> missing or extraneous test suites. For code it's a bit harder to do as a
> lot of it only compiles conditionally, so I don't have a solution for
> that yet.

It would certaionly help those who build work "meson" to remind
themselves that they need to make matching changes to Makefile world
when they update their meson.build files.

> It also doesn't execute as part of `make test` -- if we want that I'd
> have to implement it via a separate shell script instead. Which isn't
> too bad, we'll simply have to agree on a direction. But the logic will
> execute as part of CI so that any discrepancies will be flagged.

And catching a breakage as part of CI is a good first step
nevertheless.

Having said all that, with a longer term evolution of the build
systems in mind:

 - Currently, anybody who is working on our codebase is expected to
   make "make all doc test" succeed before even running format-patch
   and/or send-email.  But unless you are testing with ps/build
   topic, you won't be checking "meson test".  The same is likely be
   true for CMake (I am not encouraging folks to send a change that
   is OK only for "make" and deliberatly breaks "meson" and "cmake";
   but for those who are used to build with "make", having to _also_
   check with "meson" and "cmake" is additional barriers.

 - The ideal world, at least from the point of view of those
   advocate ps/build topic, should be that "meson" is treated at
   least as another build system with equal footing as "make".  With
   even longer timeframe, the effort may even aim to supersede and
   deprecate "make", but before that happens, it has to at least
   become build system with equal importance.

 - In the longer timeframe where many more folks work with "meson"
   than "make", check implemented on the "meson" side to make sure
   that "make" world will not left rotting would be helpful before
   we finally kill off "make" support (if that is what we are aiming
   for).  But until then, I think the pay off would be larger if we
   helped "make" population to avoid leaving "meson" and "cmake"
   builds out of sync when they update Makefile.

And that is why I suggested "make test" as that is currently what is
run by everybody.  It is like &&-check that helps individual developers
with their test before even submitting their changes.

I am unlikely to run the check locally before pushing them out,
simply because meson build is not yet part of my everyday workflow,
but even after I made it part of my workflow to check, in a sense,
it it too late.  Once we adopt ps/build~1 as a part of our official
world, if a developer, who builds on top of the 'master' in the not
so distant future, does not pay attention when they touch Makefile
without making matching changes to meson.build files, I'd want to be
able to scold them for not running "make test"; otherwise the
process will not scale.

I also had to wonder if we can share the common list of files and
have both make and meson worlds include them from the same source,
but if the eventual goal is to migrate into a single system, it is
not all that great an idea.  After giving up on one of the systems,
we would not want to keep a system where we keep a list of source
files in a separate file (possibly in a separate syntax), which is
not how either world would normally work.

Thanks.