4 ms·
The biggest problem: "it can do everything make can do" This means it cannot enforce pinning-on-a-hash ('hermetic' builds in bazel lingo): if you allow dev tea
by kubanczyk 7y ago
The biggest problem: "it can do everything make can do"
This means it cannot enforce pinning-on-a-hash ('hermetic' builds in bazel lingo): if you allow dev team to say `git clone hxxp://whatever/whatever/master` somewhere in the bowels of the build system, they invariably go for it. It's easy, agile and it works (for months if not years).
Result? On a large project, every week you get a build broken by some third-party change. Because make is too capable.
- EGreg 7y agoOne can say the same thing about C++ ever since 0x version
- kragen 7y agoYou can run the build in a container without network access. Admittedly, neither make nor redo make it any easier to create such a container, but they don't make it harder, either.
- gravypod 7y agoBlaze-like systems offer other benifits over makefiles that are, in their own right, amazing. 1. Distributing modules with BUILD files makes everything just work 2. You don't think at the level of commands/files, you think at the abstraction of targets. How targets happen in an implementation detail. 3. `select` for varying builds in a sane and readable way 4. Shared cache 5. Distributed build and test runner 6. Query language 7. All builds occur out of tree 8. A language for describing builds that doesn't feel obtuse And the list keeps going on. A "new make" is not an improvement. It is likely where the world is going to go it just misses out on obvious benefits of other build systems.
- emmelaich 7y agoAll those things could be done with redo with varying degrees of effort.
- gravypod 7y ago"Varying degrees of effort" and "the default" are very different. Do you have an example of those features that can be demoed in redo?
- kragen 7y agoSome of those sound like the benefits of Makefiles, actually. But if it floats your boat...
- amiga_500 7y agoAny project building against HEAD deserves it. Use a tag, in a config file. Not make's fault.
- theamk 7y agoSegfaults, double-frees and buffer overflows are not C's fault. Any programmer using C deserves them. Right? Happily, not eveyone thinks this way. That's why there is myriad of safe languages -- from Ruby to Rust -- which replaced C in many areas. Sure, C is still around, but many people prefer to give up some control for lots more safety. The same logic applies to build systems. Sure, you can use "low-level" build system to hand-write gcc invocation in each project, but a bigger system makes your build files much safer.
- amiga_500 7y agoThis has got nothing to do with my point of using a changing code base to compile against.
- kubanczyk 7y agoThis has a lot to do with your point that "they deserve it" being not useful to improve things. How about we give that project a tool that just doesn't have this dangerous functionality?