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

Reply via email to