Let's look at another build system

Guillaume Quintard guillaume at varnish-software.com
Thu May 14 02:00:44 UTC 2020

Hello everyone,

We have been ranting at autotools for years now, and it's been a couple of
years since we tried to get rid of them, so, let's try again, this time
with the "new" kid on the block: meson (https://mesonbuild.com/)

Some expectation management first:
- I'm not touching varnish-cache at the moment (but yes, eventually, that'd
be the plan)
- instead, I tried my hand at vmod_digest and varnish-modules to collect
feedback first
- I'm not here to take away your beloved build system, the two options can

For the eager and curious, here's what it would entail code-wise:
- https://github.com/varnish/varnish-modules/compare/master...meson
- https://github.com/varnish/libvmod-digest/compare/master...meson

So, let's start with the cons I found first:
- the syntax is not amazing, and feels a bit clunky at times
- it has some weird opinions about some apparently non-consequential stuff,
but you can work around it if you really need to
- it's "not like autotools", but you don't make progress without breaking a
few habits, or something like that

And that's about it. On the other hand, I saw quite a few benefits
- it's super boring, with very few install targets (build, test, install,
clean, and that's about it)
- about test: they can be tagged so you can run a subset of them
- it's fast: varnish-modules goes from zero to everything build in less
than seconds
- it's pretty complete and I was able to easily implement the vsc/vcc
- on that note, it support recipes with multiple outputs, unlike make
- while we can use subdir, it understand the full project as a whole, which
would speed things up in varnish-cache
- there are only two dependencies: python that we need anyway, and ninja
that doesn't need anything help
- the amount of "code" to write is way smaller than the
autogen+configure+Makefile combo from autotools
- out-of tree builds are the default and only option, keeping the source
tree pristin
- no need for "dist" tarballs, we can just do "git archive" and be done
with it
- it's terse and doesn't bore you with pages of logs
- but the "-t graph" option creates a graphviz dependency graph, nice!
- it's only to commands: "meson yourdir" and "ninja -C yourdir"
- if you touch the meson.build file, no need to re-run the meson command,
it's the same thing as if you edited a source file

Honestly, I'm sold, and I'm possibly seeing this with rosy glasses, so feel
free to bring me back down to earth. I plan on merging the two PRs above
soon, and to try to get some mileage from users (*cough* OpenSolaris
*cough*) and maintainers both, but keeping autotools around for now.

If there's not too much outcry, I'd like to have a go at varnish-cache some
time later (and if you are interested in helping with that fun little
project, let me know).


Guillaume Quintard
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://www.varnish-cache.org/lists/pipermail/varnish-misc/attachments/20200513/e4f16ff5/attachment.html>

More information about the varnish-misc mailing list