News for hackers. Stuff that matters.
Re:Why Not Make? by dahart on Thursday November 08, 2018 @10:02AM (#18406661)
I feel like every single point against make in this article is considered a feature of make by many other people. But I guess more than why not, I’d like to hear more about what the alternatives are. I see this is an ad, and it implies but doesn’t say explicitly whether this product fixes all these issues, or what it actually does at all. People have been trying to redo make for decades, and despite all its warts (and it does have warts) so far it seems like nobody has been able to supplant it.

No sandboxing? This complaint amounts to “it isn’t pure”. There are reasons to allow reading a file in a build rule that isn’t a dependency. Allowing temp files in a multi-step rule without complicating or obfuscating the dependency graph is one of them. You can do anything you want in a build rule. How often is this flexibility actually a problem? If someone is reading from a file dependency without using make to depend on it, they already know they’ll get the expected behavior; failure to rebuild when the dependency changes.

Unportable caches is asking make to solve a problem that make wasn’t built to solve. And one could argue this isn’t technically a build system problem at all. Wanting network caching for multiple hardware configurations is reasonable, but isn’t what make is for.

No language abstraction is something I like about make. I use make for automating analytics and image resizing and all kinds of things that aren’t C++ specific. Adding language abstractions would bloat and complicate make.

Timestamps are faster to compute than hashes. Occasionally this matters a lot.

Re:Why Not Make? by loa-in-backup on Friday November 09, 2018 @09:34AM (#18414608)
Sandboxing issue can be solved by extending cmake with a directive specifying which paths are accessible up front.

I might be willing to do a PR soon

Re:Why Not Make? by dahart on Tuesday November 13, 2018 @11:07AM (#18441988)
Yes. This isn’t quite what the author was talking about though. They used the term “sandboxing” to mean that dependency rules in the build system can act on things that they don’t depend on. You’re talking about a higher level sandboxed view of the file system.

The kind of sandboxing you’re talking about can be mostly solved for any build system with some wrapper shell scripts, or an environment shell script. That’s how most people are doing it.

At my work, there’s a crazy sandboxing system for Linux written as a C program that actually creates an environment with a modified file system, and access to certain paths is strictly enforced... no process launched from inside this environment can access anything but the whitelisted paths, by any means. This is a very heavy hammer, and I suspect over the top and unnecessary. OTOH, this definitely prevents mistakes, and my company is large. I don’t know the history here, but the existence of a system like this leads me to assume there must have been some large and real pains that lead to the development of a heavy-handed sandbox.