[commit: Cabal] master: Pull the planners out of install and pass them as parameters (2ac033e)
Ian Lynagh
igloo at earth.li
Fri Jun 24 01:54:01 CEST 2011
Repository : ssh://darcs.haskell.org//srv/darcs/packages/Cabal
On branch : master
http://hackage.haskell.org/trac/ghc/changeset/2ac033e1f46171199d687d5597bbc2b513b72e22
>---------------------------------------------------------------
commit 2ac033e1f46171199d687d5597bbc2b513b72e22
Author: Duncan Coutts <duncan at haskell.org>
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'
More information about the Cvs-libraries
mailing list