Skip to content
  • Edward Z. Yang's avatar
    Refactor LocalBuildInfo interface. · d94ddc0e
    Edward Z. Yang authored
    
    
    This is an omnibus patch, with the overall goal of making
    LocalBuildInfo Great Again.  The essential ideas:
    
    * New type 'TargetInfo' which bundles together 'ComponentLocalBuildInfo'
      and 'Component'.  Eventually, it will also record file paths / module
      targets.  This data structure is basically what you want; a lot of
      old Cabal code did lots of gyrations converting from
      'ComponentLocalBuildInfo' to 'Component' and vice versa, now
      it's all centralized.
    
    * The "new" API for 'LocalBuildInfo' is in
      "Distribution.Types.LocalBuildInfo".  The general principle
      is, where we previous dealt in 'ComponentLocalBuildInfo',
      we now deal in 'TargetInfo'.  There are shockingly few
      functions we need!
    
    * I've restored 'componentsConfigs' to its Cabal 1.24 signature
      for BC.
    
    * I killed a number of unused functions from "Distribution.Simple.LocalBuildInfo":
      'getLocalComponent', 'maybeGetDefaultLibraryLocalBuildInfo',
      'maybeGetComponentLocalBuildInfo', 'checkComponentsCyclic' and
      'enabledComponents'.  For each I checked on Hackage that they were
      not used.
    
    * 'getComponentLocalBuildInfo', 'withComponentsInBuildOrder' and
      'componentsInBuildOrder' are deprecated to encourage people
      to instead use the 'TargetInfo's to finger which components
      they want built.
    
    * 'ComponentLocalBuildInfo' now stores internally the computed
      'componentInternalDeps', so that 'LocalBuildInfo' can simply store
      a graph of 'ComponentLocalBuildInfo'.
    
    * The code in Configure has been streamlined to use our new Graph
      data type to great success.
    
    * The type of 'runTest' changed to take a 'ComponentLocalBuildInfo',
      bringing it more in line with everything else.
    
    * New function 'readTargetInfos' which combines 'readBuildTargets'
      and 'checkBuildTargets', which is what you really wanted anyway.
    
    Signed-off-by: default avatarEdward Z. Yang <ezyang@cs.stanford.edu>
    d94ddc0e