• Andrey Mokhov's avatar
    Hadrian: Fix untracked dependencies · 1dad4fc2
    Andrey Mokhov authored and  Marge Bot's avatar Marge Bot committed
    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:
    
    Ticket #16271: ​https://ghc.haskell.org/trac/ghc/ticket/16271
    
    Ticket #16272: ​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).
    1dad4fc2
Builder.hs 13.4 KB