3 ms·
Some more: * Change tracking entirely depends on modified timestamps instead of something more robust like checksums. * Makefiles are always platform specific
by snarfy 9y ago
Some more:
* Change tracking entirely depends on modified timestamps instead of something more robust like checksums.
* Makefiles are always platform specific. Make executes commands based on a dependency graph, but it has no commands of its own. You either write multiple makefiles or you build everything in a bash environment.
- qznc 9y agoDo you have a good link/example, why timestamps are bad? I think in the context of Make it is ok. If you rely on checksums, you must implicitly assume that all commands you execute are idempotent. That assumption easily breaks.
- snarfy 9y agoI don't have a link, but one reason to prefer checksums is if you have intermediary steps that produce artifacts, possibly binary input to another step, that may or may not need to actually be built.
- oriolid 9y agoWhen I worked with Clearcase (which is terrible in many ways, this is just one), one of its nice features was that it changed file timestamp to the timestamp of commit, not the timestamp it was changed on developer's machine. The commit timestamp may be after previous commit but also before the compiled object file. Because of this, the only way to do a reliable build was to start from scratch. Which took 45 minutes. Ceterum censeo, Clearcase must be destroyed.