[commit: Cabal] master: Rearrange dependency resolver code slightly (3729ca2)
Ian Lynagh
igloo at earth.li
Fri Jun 24 02:06:25 CEST 2011
Repository : ssh://darcs.haskell.org//srv/darcs/packages/Cabal
On branch : master
http://hackage.haskell.org/trac/ghc/changeset/3729ca23a7ccf226eb1662cb4205f8784d40eecd
>---------------------------------------------------------------
commit 3729ca23a7ccf226eb1662cb4205f8784d40eecd
Author: Duncan Coutts <duncan at haskell.org>
Date: Mon May 17 11:16:24 2010 +0000
Rearrange dependency resolver code slightly
>---------------------------------------------------------------
cabal-install/Distribution/Client/Dependency.hs | 45 +++++++++--------------
cabal-install/Distribution/Client/Install.hs | 8 ++---
2 files changed, 20 insertions(+), 33 deletions(-)
diff --git a/cabal-install/Distribution/Client/Dependency.hs b/cabal-install/Distribution/Client/Dependency.hs
index 0d74d95..b0dad9c 100644
--- a/cabal-install/Distribution/Client/Dependency.hs
+++ b/cabal-install/Distribution/Client/Dependency.hs
@@ -119,8 +119,9 @@ resolveDependencies :: Platform
resolveDependencies platform comp installed available
preferences constraints targets =
foldProgress (flip const) Left Right $
- resolveDependenciesWithProgress platform comp installed available
- preferences constraints targets
+ resolveDependenciesWithProgress
+ platform comp installed available
+ preferences constraints targets
resolveDependenciesWithProgress :: Platform
-> CompilerId
@@ -130,30 +131,8 @@ resolveDependenciesWithProgress :: Platform
-> [PackageConstraint]
-> [PackageName]
-> Progress String String InstallPlan
-resolveDependenciesWithProgress platform comp installed =
- dependencyResolver defaultResolver platform comp installed
-
-hideBrokenPackages :: PackageFixedDeps p => PackageIndex p -> PackageIndex p
-hideBrokenPackages index =
- check (null . PackageIndex.brokenPackages)
- . foldr (PackageIndex.deletePackageId . packageId) index
- . PackageIndex.reverseDependencyClosure index
- . map (packageId . fst)
- $ PackageIndex.brokenPackages index
- where
- check p x = assert (p x) x
-
-dependencyResolver
- :: DependencyResolver
- -> Platform -> CompilerId
- -> PackageIndex InstalledPackage
- -> PackageIndex AvailablePackage
- -> PackagesPreference
- -> [PackageConstraint]
- -> [PackageName]
- -> Progress String String InstallPlan
-dependencyResolver resolver platform comp installed available
- pref constraints targets
+resolveDependenciesWithProgress platform comp installed available
+ pref constraints targets
-- TODO: the top down resolver chokes on the base constraints
-- below when there are no targets and thus no dep on base.
-- Need to refactor contraints separate from needing packages.
@@ -171,8 +150,8 @@ dependencyResolver resolver platform comp installed available
, not (null (PackageIndex.lookupPackageName installed pkgname)) ]
preferences = interpretPackagesPreference (Set.fromList targets) pref
in fmap toPlan
- $ resolver platform comp installed' available
- preferences (extraConstraints ++ constraints) targets
+ $ defaultResolver platform comp installed' available
+ preferences (extraConstraints ++ constraints) targets
where
toPlan pkgs =
@@ -183,6 +162,16 @@ dependencyResolver resolver platform comp installed available
: "The proposed (invalid) plan contained the following problems:"
: map InstallPlan.showPlanProblem problems
+hideBrokenPackages :: PackageFixedDeps p => PackageIndex p -> PackageIndex p
+hideBrokenPackages index =
+ check (null . PackageIndex.brokenPackages)
+ . foldr (PackageIndex.deletePackageId . packageId) index
+ . PackageIndex.reverseDependencyClosure index
+ . map (packageId . fst)
+ $ PackageIndex.brokenPackages index
+ where
+ check p x = assert (p x) x
+
-- | Give an interpretation to the global 'PackagesPreference' as
-- specific per-package 'PackageVersionPreference'.
--
diff --git a/cabal-install/Distribution/Client/Install.hs b/cabal-install/Distribution/Client/Install.hs
index 6fc4a38..b75be4a 100644
--- a/cabal-install/Distribution/Client/Install.hs
+++ b/cabal-install/Distribution/Client/Install.hs
@@ -237,11 +237,9 @@ installWithPlanner verbosity
installed <- getInstalledPackages verbosity comp packageDBs conf
available <- getAvailablePackages verbosity repos
- progress <- planner installed available
notice verbosity "Resolving dependencies..."
- installPlan <- either die return
- =<< foldProgress (\message rest -> info verbosity message >> rest)
- (return . Left) (return . Right) progress
+ installPlan <- foldProgress logMsg die return =<< planner installed available
+
printPlanMessages verbosity installed installPlan dryRun
unless dryRun $
@@ -250,7 +248,7 @@ installWithPlanner verbosity
where
dryRun = fromFlag (installDryRun installFlags)
-
+ logMsg message rest = info verbosity message >> rest
-- ------------------------------------------------------------
-- * Installation planning
More information about the Cvs-libraries
mailing list