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 coexist 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 processing - 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). Cheers! -- Guillaume Quintard
_______________________________________________ varnish-misc mailing list [email protected] https://www.varnish-cache.org/lists/mailman/listinfo/varnish-misc
