[commit: Cabal] master: New solver now respects preferences. (1eff025)
Ian Lynagh
igloo at earth.li
Fri Nov 4 18:05:47 CET 2011
Repository : ssh://darcs.haskell.org//srv/darcs/packages/Cabal
On branch : master
http://hackage.haskell.org/trac/ghc/changeset/1eff02589d2a5d94e8288d4c3061e4facedc738a
>---------------------------------------------------------------
commit 1eff02589d2a5d94e8288d4c3061e4facedc738a
Author: Andres Loeh <andres at well-typed.com>
Date: Wed Jun 15 07:03:43 2011 +0000
New solver now respects preferences.
>---------------------------------------------------------------
cabal-install/Distribution/Client/Dependency.hs | 2 +-
.../Distribution/Client/Dependency/Modular.hs | 18 +++++++++++-------
2 files changed, 12 insertions(+), 8 deletions(-)
diff --git a/cabal-install/Distribution/Client/Dependency.hs b/cabal-install/Distribution/Client/Dependency.hs
index 57d41c9..953c99b 100644
--- a/cabal-install/Distribution/Client/Dependency.hs
+++ b/cabal-install/Distribution/Client/Dependency.hs
@@ -48,7 +48,7 @@ module Distribution.Client.Dependency (
hideInstalledPackagesAllVersions,
) where
-import Distribution.Client.Dependency.TopDown (topDownResolver)
+-- import Distribution.Client.Dependency.TopDown (topDownResolver)
import Distribution.Client.Dependency.Modular (modularResolver)
import qualified Distribution.Client.PackageIndex as PackageIndex
import qualified Distribution.Simple.PackageIndex as InstalledPackageIndex
diff --git a/cabal-install/Distribution/Client/Dependency/Modular.hs b/cabal-install/Distribution/Client/Dependency/Modular.hs
index 4a0c558..dad9bf6 100644
--- a/cabal-install/Distribution/Client/Dependency/Modular.hs
+++ b/cabal-install/Distribution/Client/Dependency/Modular.hs
@@ -9,7 +9,7 @@ module Distribution.Client.Dependency.Modular where
-- plan.
import Data.Map as M
- ( empty, fromList )
+ ( fromList )
import Distribution.Client.Dependency.Modular.Assignment
( Assignment, toCPs )
import Distribution.Client.Dependency.Modular.Dependency
@@ -31,20 +31,24 @@ import Distribution.Client.InstallPlan
import Distribution.System
( Platform(..) )
+-- | Ties the two worlds together: classic cabal-install vs. the modular
+-- solver. Performs the necessary translations before and after.
modularResolver :: DependencyResolver
modularResolver (Platform arch os) cid iidx sidx pprefs pcs pns =
fmap (uncurry postprocess) $ -- convert install plan
- logToProgress $
- defaultSolver idx gprefs uprefs gcs pns gfcs
+ logToProgress $ -- convert log format into progress format
+ defaultSolver idx pprefs gcs pns
where
+ -- Indices have to be converted into solver-specific uniform index.
idx = convPIs os arch cid iidx sidx
- gprefs = M.empty -- global preferences
- uprefs = M.empty -- user preferences
+ -- Constraints have to be converted into a finite map indexed by PN.
gcs = M.fromList (map (\ pc -> (pcName pc, pc)) pcs)
- -- user constraints
- gfcs = M.empty -- global flag choices
+
+ -- Results have to be converted into an install plan.
postprocess :: Assignment -> RevDepMap -> [PlanPackage]
postprocess a rdm = map (convCP iidx sidx) (toCPs a rdm)
+
+ -- Helper function to extract the PN from a constraint.
pcName :: PackageConstraint -> PN
pcName (PackageConstraintVersion pn _) = pn
pcName (PackageConstraintInstalled pn ) = pn
More information about the Cvs-libraries
mailing list