Let's look at another build system

Guillaume Quintard guillaume at varnish-software.com
Thu May 14 23:19:42 UTC 2020


> The FreeBSD graph is a fully recursive "all dependencies" graph, both for
> building and running, the debian graph seems to be truncated somehow,
> because otherwise that would be a very handicapped py3 instance.

My bad, I was only considering the run dependencies, the build+run
dependency list is bigger.

BUT! I dug a bit, and the insanity is really only introduced by the test
dependency on devel/py-pytest-xdist, snip it and meson+ninja only need 33
ports, which isn't that crazy when compared with the 20 items in the
automake+autotools+autoconf+libtool case.
Now, I have now idea if that detail matters or not, as I'm not a freeBSD,
but hopefully that number isn't as shocking anymore.

> If all you use make(1) for is running processes, it's as good as anything
> (except maybe jam(1)).  The hard part about make(1) is getting _all_
> your dependencies recorded _correctly_ in the makefile.

That's the biggest footgun of make because it doesn't know about recipes
producing multiple files (and we do love those), so you have to bend over
backwards to teach it how to do it correctly. Add to this the dumb
recursive mode, its lack of dependency regarding the build commands and all
the dark magic it *tries* to accomplish to handle C compilation correctly
(I'd rather have something truly dumb that doesn't get in the way) and you
get a nice recipe (pun intended) for disaster.

I don't know jam and so have no problem with it. Since you talked about the
generator+builder pattern, I feel like i need to link to this very recent
post: http://neugierig.org/software/blog/2020/05/ninja.html It's from the
ninja creator, where he writes about it a bit (and also apologies for the
terrible name).

-- 
Guillaume Quintard


On Thu, May 14, 2020 at 9:25 AM Poul-Henning Kamp <phk at phk.freebsd.dk>
wrote:

> --------
> In message <
> CAJ6ZYQxTCZO7gS0_o7iehr2gYOJ58XKheOaPxW1zSRO68hfK9w at mail.gmail.com>
> , Guillaume Quintard writes:
>
> >I'm going to vote for "that freeBSD port is absolutely bonkers and
> probably
> >deserves the behind-the-barn treatment", specially considering the debian
> >dependency graph: https://ibb.co/YdXMHRZ
>
> The FreeBSD graph is a fully recursive "all dependencies" graph, both for
> building and running, the debian graph seems to be truncated somehow,
> because otherwise that would be a very handicapped py3 instance.
>
> And as I said: meson is probably not to blame, I just wanted to illustrate
> my concern.
>
> >I'm not fully against rolling out our own system, but for the love of all
> >that is holy, let's not base it on Make.
>
> If all you use make(1) for is running processes, it's as good as anything
> (except maybe jam(1)).  The hard part about make(1) is getting _all_
> your dependencies recorded _correctly_ in the makefile.
>
> --
> Poul-Henning Kamp       | UNIX since Zilog Zeus 3.20
> phk at FreeBSD.ORG         | TCP/IP since RFC 956
> FreeBSD committer       | BSD since 4.3-tahoe
> Never attribute to malice what can adequately be explained by incompetence.
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://www.varnish-cache.org/lists/pipermail/varnish-misc/attachments/20200514/ceac55e7/attachment.html>


More information about the varnish-misc mailing list