Repository : ssh://darcs.haskell.org//srv/darcs/packages/Cabal On branch : master
http://hackage.haskell.org/trac/ghc/changeset/c4eae6413cd800ddaff7430a5ac6bea64d615148 >--------------------------------------------------------------- commit c4eae6413cd800ddaff7430a5ac6bea64d615148 Author: Duncan Coutts <[email protected]> Date: Sat May 10 12:23:21 2008 +0000 Pull the planners out of install and pass them as parameters >--------------------------------------------------------------- cabal-install/Hackage/Install.hs | 36 ++++++++++++++++++++++++++++-------- 1 files changed, 28 insertions(+), 8 deletions(-) diff --git a/cabal-install/Hackage/Install.hs b/cabal-install/Hackage/Install.hs index 3a245b5..ca2091e 100644 --- a/cabal-install/Hackage/Install.hs +++ b/cabal-install/Hackage/Install.hs @@ -91,13 +91,34 @@ install :: Verbosity -> InstallFlags -> [UnresolvedDependency] -> IO () -install verbosity packageDB repos comp conf configFlags installFlags deps = do +install verbosity packageDB repos comp conf configFlags installFlags deps = + installWithPlanner planner + verbosity packageDB repos comp conf configFlags installFlags + where + planner :: Planner + planner | null deps = planLocalPackage verbosity comp configFlags + | otherwise = planRepoPackages comp deps + +type Planner = Maybe (PackageIndex InstalledPackageInfo) + -> PackageIndex AvailablePackage + -> IO (Either [Dependency] (InstallPlan BuildResult)) + +-- |Installs the packages generated by a planner. +installWithPlanner :: + Planner + -> Verbosity + -> PackageDB + -> [Repo] + -> Compiler + -> ProgramConfiguration + -> Cabal.ConfigFlags + -> InstallFlags + -> IO () +installWithPlanner planner verbosity packageDB repos comp conf configFlags installFlags = do installed <- getInstalledPackages verbosity comp packageDB conf available <- fmap mconcat (mapM (IndexUtils.readRepoIndex verbosity) repos) - maybePlan <- if null deps - then planLocalPackage verbosity comp configFlags installed available - else planRepoPackages verbosity comp installed available deps + maybePlan <- planner installed available info verbosity "Resolving dependencies..." case maybePlan of @@ -163,13 +184,12 @@ planLocalPackage verbosity comp configFlags installed available = do -- | Make an 'InstallPlan' for the given dependencies. -- -planRepoPackages :: Verbosity - -> Compiler +planRepoPackages :: Compiler + -> [UnresolvedDependency] -> Maybe (PackageIndex InstalledPackageInfo) -> PackageIndex AvailablePackage - -> [UnresolvedDependency] -> IO (Either [Dependency] (InstallPlan BuildResult)) -planRepoPackages _verbosity comp installed available deps = do +planRepoPackages comp deps installed available = do deps' <- IndexUtils.disambiguateDependencies available deps return $ resolveDependencies buildOS buildArch (compilerId comp) installed available deps' _______________________________________________ Cvs-libraries mailing list [email protected] http://www.haskell.org/mailman/listinfo/cvs-libraries
