Repository : ssh://darcs.haskell.org//srv/darcs/packages/Cabal On branch : master
http://hackage.haskell.org/trac/ghc/changeset/ad6b761857274991c52c61ee35f6ea9d22ecc767 >--------------------------------------------------------------- commit ad6b761857274991c52c61ee35f6ea9d22ecc767 Author: Duncan Coutts <[email protected]> Date: Fri May 9 14:28:07 2008 +0000 Change the result type of DependencyResolver and add a wrapper that makes InstallPlans >--------------------------------------------------------------- cabal-install/Hackage/Dependency.hs | 30 ++++++++++++++++++++++-------- 1 files changed, 22 insertions(+), 8 deletions(-) diff --git a/cabal-install/Hackage/Dependency.hs b/cabal-install/Hackage/Dependency.hs index 64c49bf..a147bc7 100644 --- a/cabal-install/Hackage/Dependency.hs +++ b/cabal-install/Hackage/Dependency.hs @@ -81,23 +81,37 @@ hideBrokenPackages index = . map (packageId . fst) $ PackageIndex.brokenPackages index -{- type DependencyResolver a = OS -> Arch -> CompilerId -> PackageIndex InstalledPackageInfo -> PackageIndex AvailablePackage -> [UnresolvedDependency] - -> InstallPlan.InstallPlan a + -> Either [InstallPlan.PlanPackage a] [Dependency] --- | This is an example resolver that produces valid plans but plans where we --- say that every package failed. +dependencyResolver + :: DependencyResolver a + -> OS -> Arch -> CompilerId + -> PackageIndex InstalledPackageInfo + -> PackageIndex AvailablePackage + -> [UnresolvedDependency] + -> Either (InstallPlan a) [Dependency] +dependencyResolver resolver os arch comp installed available deps = + case resolver os arch comp (hideBrokenPackages installed) available deps of + Left pkgs -> + case InstallPlan.new os arch comp (PackageIndex.fromList pkgs) of + Left plan -> Left plan + Right problems -> error $ unlines $ + "internal error: could not construct a valid install plan." + : "The proposed (invalid) plan contained the following problems:" + : map InstallPlan.showPlanProblem problems + Right unresolved -> Right unresolved + +-- | This is an example resolver that says that every package failed. -- failingResolver :: DependencyResolver a -failingResolver os arch compiler _ _ deps = - InstallPlan.new os arch compiler $ - PackageIndex.fromList (map InstallPlan.Unresolved deps) --} +failingResolver _ _ _ _ _ deps = Right + [ dep | UnresolvedDependency dep _ <- deps ] resolveDependency :: OS -> Arch _______________________________________________ Cvs-libraries mailing list [email protected] http://www.haskell.org/mailman/listinfo/cvs-libraries
