5 ms·
Rust/Cargo has adopted this protocol: https://lib.rs/jobserver https://lib.rs/jobserver
by pornel 2y ago
Rust/Cargo has adopted this protocol: https://lib.rs/jobserver https://lib.rs/jobserver
- ajross 2y agoFrustrating that almost nothing else has. In particular Ninja has been dragging its feet on this for most of a decade (they have an epic GitHub feature request and like six submitted attempts, none merged). All the "build system" components in the ecosystem want to be the Root of all Execution and don't feel like they should have to play in a sandbox with their competitors. Really, the older I get and the more I see of the cmake/ninja/Bazel/whatever world... GNU Make was a better tool even 20 years ago.
- rout39574 2y agoEveryone wants to write the build tool in their favorite language, and then stops when the work gets hard. :)
- danudey 2y agoThere's a lot to hate about make, but looking for good alternatives there are very, very few out there and none of them provided anything extra I was looking for. The one thing I wish were possible (trivially) in make, and I understand why it's not, is the ability to define a dependency not on whether a file exists or not but on the result of executing a process. For example, do I need to rebuild this docker container? The current method to determine that is to create a stamp file; create the docker container then `touch .docker-image-created.stamp`. Unfortunately, those stamps can become out of date if the docker container is removed (or old, etc.) so it leads to confusing situations where make's interpretation of the current state is separate from the reality, and in large complex projects where there are lots of interconnected parts, sometimes your only feasible route is to remove everything and completely rebuild from scratch. There's also an inexplicable lack of debugging output insofar as printing what target make is currently running. It has a ton of debug output, but no option I can find that says "I am running this target right now", "okay I'm done this target now" without manually adding $(info ...) statements to your makefile.
- oso2k 2y agoHave you seen this debugging output doc? https://www.gnu.org/software/make/manual/html_node/Parallel-Output.html https://www.gnu.org/software/make/manual/html_node/Parallel-...