
Fixing missing dependencies in build systems (2014) - jwmerrill
http://gittup.org/blog/2014/05/7-clobber-builds-part-2---fixing-missing-dependencies/?try=2
======
jwmerrill
There 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
Don'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.

