Skip to content

Hadrian: Fix untracked dependencies

Andrey Mokhov requested to merge wip/andrey/cached-hadrian into master

This is a preparation for #16295: https://ghc.haskell.org/trac/ghc/ticket/16295

This commit mostly focuses on getting rid of untracked dependencies, which prevent Shake's new --shared feature from appropriately caching build rules.

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:

#16271 (closed): ​https://ghc.haskell.org/trac/ghc/ticket/16271 #16272 (closed): ​https://ghc.haskell.org/trac/ghc/ticket/16272 (this one is fixed only partially: we correctly record the dependency, but we still copy files into the RTS build tree).

Edited by Andrey Mokhov

Merge request reports