Refactor ProjectBuilding into Package Phases
This refactor of Distribution.Client.ProjectBuilding does the following: * Moves package file monitoring logic to Distribution.Client.ProjectBuilding.PackageFileMonitor * Moves the `buildInplaceUnpackedPackage` and `buildAndInstallUnpackedPackage` with auxiliary functions to Distribution.Client.ProjectBuilding.UnpackedPackage * Refactors the common bits of `buildInplaceUnpackedPackage` and `buildAndInstallUnpackedPackage` to remove considerable code duplication while simplifying and making both functions more structured. Namely, to better structure build inplace vs build and install, I've introduced: * `PackageBuildingPhase` describes the various phases of processing the unpacked package both inplace and on install * Configure * Build * Install (copy + register) * Test * Bench * Repl * Haddock * Then, `buildAndRegisterUnpackedPackage` implements the common logic between the two functions (such as calls to ./Setup and the order of the phases) but delegates the logic specific to each phase to an argument function which maps `PackageBuildingPhase` to `IO` actions. * Now, build inplace and build and install functions are comprised as: * A wrapper around `buildAndRegisterUnpackedPackage` which does things specific to each before and after the main phases are processed * A delegate function which maps an action to each package processing phase Fixes #9499
Showing
- cabal-install/cabal-install.cabal 2 additions, 0 deletionscabal-install/cabal-install.cabal
- cabal-install/src/Distribution/Client/ProjectBuilding.hs 7 additions, 1061 deletionscabal-install/src/Distribution/Client/ProjectBuilding.hs
- cabal-install/src/Distribution/Client/ProjectBuilding/PackageFileMonitor.hs 294 additions, 0 deletions...Distribution/Client/ProjectBuilding/PackageFileMonitor.hs
- cabal-install/src/Distribution/Client/ProjectBuilding/UnpackedPackage.hs 921 additions, 0 deletions...rc/Distribution/Client/ProjectBuilding/UnpackedPackage.hs
Loading