[commit: Cabal] master: Pull the planners out of install and pass them as parameters (c4eae64)
Paolo Capriotti
p.capriotti at gmail.com
Tue May 8 00:02:34 CEST 2012
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 <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