Hadrian: Fix untracked dependencies
This commit mostly focuses on getting rid of untracked dependencies,
which prevent Shake's new --shared feature from appropriately caching
There are three different solutions to untracked dependencies:
- Track them! This is the obvious and the best approach, but in some situations we cannot use it, for example, because a build rule creates files whose names are not known statically and hence cannot be specified as the rule's outputs.
- Use Shake's produces to record outputs dynamically, within the rule.
- Use Shake's historyDisable to disable caching for a particular build rule. We currently use this approach only for ghc-pkg which mutates the package database and the file package.cache.
These two tickets are fixed as the result: