News for hackers. Stuff that matters.
Re:Redo: A recursive, general-purpose build system by qbasic_forever on Tuesday December 28, 2021 @05:05PM (#29718833)
Have you given bazel a serious look? It hits quite a few of the points you mention. There's a steep learning curve and you kind of have to go all in with it, but once you're there it's quite nice.
Re:Redo: A recursive, general-purpose build system by dataflow on Tuesday December 28, 2021 @09:36PM (#29721106)
Bazel is alright (read: generally better than the competition) as long as you're not doing something uncommon with your toolchain or hitting one of its many shortcomings, otherwise it can quickly become a nightmare. It doesn't even make it easy to access the darn executable you just compiled (!) which always baffles me—if I compiled a binary I don't want it hidden away in some random folder, I want it right there so I can distribute it. And with Python, etc. you hit more obstacles. Make degrades more "gradually" in a sense: it's easy to do arbitrary things in a 1-line recipe, but then it becomes harder to generalize and make it modular. Overall, Bazel definitely wins as the scale of your project grows, and it has tons of useful features, but it's got some ways to go before I'd regard it as "nice".
Re:Redo: A recursive, general-purpose build system by kylecordes on Tuesday December 28, 2021 @11:09PM (#29721753)
For the sake of readers:

Bazel does not put outputs in random folders, it puts them in folders that are a deterministic mapping from the build target plus relative path to the thing being built in the source directory. It is well-suited if you have a huge amount of source code with things being output, but one among many speed bumps when getting started.

Re:Redo: A recursive, general-purpose build system by joshuamorton on Tuesday December 28, 2021 @11:32PM (#29721892)
(also depending on what you're doing, `bazel run <foo>` will invoke the binary directly, and `bazel build <foo>` will, if there's an output artifact, usually print its location)
Re:Redo: A recursive, general-purpose build system by dataflow on Wednesday December 29, 2021 @12:03AM (#29722084)
I meant random in the colloquial sense (same sense as which a SHA256 is "random"), not a random variable.