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 <[email protected]> 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 _______________________________________________ Cvs-libraries mailing list [email protected] http://www.haskell.org/mailman/listinfo/cvs-libraries
