Per-component new-build support (no Custom support yet).
A bit of a megapatch. Here's what's in it:
* First, a few miscellaneous utility functions and reexports
in Cabal. I could have split these into a separate commit
but I was too lazy to.
* Distribution.Client.Install got refactored:
instead of using PackageFixedDeps, it uses IsUnit
instead. This is because we weren't using ComponentDeps
in a nontrivial way; we just need some graph structure
and IsNode (with UnitId keys) fulfills that. I also removed the
invariant checking and error reporting because it was
being annoying (we check the invariants already in
SolverInstallPlan).
* Look at Distribution.Client.ProjectPlanning.Types.
This contains the primary type change: ElaboratedConfiguredPackage
is now EITHER a monolithic ElaboratedPackage, or a per-component
ElaboratedComponent (it should get renamed but I didn't do that
in this patch.) These are what we're going to store in our
plans: if a package we're building has a Setup script which supports
per-component builds, we'll explode it into a component. Otherwise
we'll keep it as a package. We'll see codepaths for both
throughout.
* OK, so the expansion happens in ProjectPlanning, mostly in
'elaborateAndExpandSolverPackage'. You should review the
package hash computation code closely. When we can separate
components, we compute a hash for each INDEPENDENTLY. This
is good: we get more sharing.
* We need to adjust the target resolution and pruning code
in ProjectOrchestration and ProjectPlanning. I did a dumb
but easy idea: if a user mentions 'packagename' in a
target name, I spray the PackageTarget on every
possibly relevant IPID in buildTargets', and then pare
it down later.
* And of course there's code in ProjectBuilding to actual
do a configure and then build.
* We change the layout of build directories so that we can
track each component separately. While I was doing that,
I also added compiler and platform information.
Custom doesn't work yet because I need to give them their own
separate component, and teach Cabal how to build them specially.
Signed-off-by:
Edward Z. Yang <ezyang@cs.stanford.edu>
Showing
- Cabal/Distribution/Package.hs 5 additions, 0 deletionsCabal/Distribution/Package.hs
- Cabal/Distribution/Simple/Configure.hs 2 additions, 0 deletionsCabal/Distribution/Simple/Configure.hs
- Cabal/Distribution/Types/ComponentEnabledSpec.hs 1 addition, 1 deletionCabal/Distribution/Types/ComponentEnabledSpec.hs
- Cabal/Distribution/Types/PackageDescription.hs 9 additions, 0 deletionsCabal/Distribution/Types/PackageDescription.hs
- cabal-install/Distribution/Client/CmdBuild.hs 1 addition, 0 deletionscabal-install/Distribution/Client/CmdBuild.hs
- cabal-install/Distribution/Client/CmdFreeze.hs 5 additions, 5 deletionscabal-install/Distribution/Client/CmdFreeze.hs
- cabal-install/Distribution/Client/CmdRepl.hs 1 addition, 0 deletionscabal-install/Distribution/Client/CmdRepl.hs
- cabal-install/Distribution/Client/DistDirLayout.hs 45 additions, 9 deletionscabal-install/Distribution/Client/DistDirLayout.hs
- cabal-install/Distribution/Client/Install.hs 2 additions, 3 deletionscabal-install/Distribution/Client/Install.hs
- cabal-install/Distribution/Client/InstallPlan.hs 102 additions, 173 deletionscabal-install/Distribution/Client/InstallPlan.hs
- cabal-install/Distribution/Client/PackageHash.hs 5 additions, 0 deletionscabal-install/Distribution/Client/PackageHash.hs
- cabal-install/Distribution/Client/ProjectBuilding.hs 130 additions, 86 deletionscabal-install/Distribution/Client/ProjectBuilding.hs
- cabal-install/Distribution/Client/ProjectOrchestration.hs 55 additions, 20 deletionscabal-install/Distribution/Client/ProjectOrchestration.hs
- cabal-install/Distribution/Client/ProjectPlanOutput.hs 26 additions, 9 deletionscabal-install/Distribution/Client/ProjectPlanOutput.hs
- cabal-install/Distribution/Client/ProjectPlanning.hs 326 additions, 135 deletionscabal-install/Distribution/Client/ProjectPlanning.hs
- cabal-install/Distribution/Client/ProjectPlanning/Types.hs 174 additions, 10 deletionscabal-install/Distribution/Client/ProjectPlanning/Types.hs
- cabal-install/Distribution/Client/Types.hs 39 additions, 5 deletionscabal-install/Distribution/Client/Types.hs
- cabal-install/Distribution/Solver/Types/ComponentDeps.hs 10 additions, 0 deletionscabal-install/Distribution/Solver/Types/ComponentDeps.hs
- cabal-install/cabal-install.cabal 5 additions, 0 deletionscabal-install/cabal-install.cabal
- cabal-install/tests/IntegrationTests/internal-libs/new_build.sh 1 addition, 2 deletions...install/tests/IntegrationTests/internal-libs/new_build.sh
Loading
Please register or sign in to comment