2 ms·
Fixing missing dependencies in build systems (2014)
- jwmerrill 11y agoThere are many, many alternatives to make, with new ones popping up roughly every month. They mostly seem to differentiate themselves by offering tighter integration with a particular language, or by having a friendlier configuration syntax. tup is the only new build system I'm aware of that successfully innovates on build correctness. It snoops file system calls while running your build commands, so it can tell if your declared dependency structure doesn't match your actual dependency structure. It also notices when you change your build commands, and will delete old build objects that would no longer be produced by the new commands. We used it to replace gulp in a medium size node/javascript project, and it absolutely destroys gulp in terms of efficiency and correctness. The only downside is the lack of more community resources describing how to configure tup for non C projects.
- vezzy-fnord 11y agoDon't forget redo. The idea of enumerating build-time dependencies by tracing dynamic loader activity I recall was famously done by memoize.py, which comes from before or around the same time as tup's initial bare-bones commit was made. It's doubtlessly much older, of course. I've read that a SunOS component or some other Sun product related to build infrastructure did the same, but I cannot find any references.