Fixing missing dependencies in build systems (2014)
gittup.org
gittup.org
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.
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.