[commit: Cabal] master: resolveDependencies does not need a list of installed packages as argument. (7e5135d)
Ian Lynagh
igloo at earth.li
Fri Jun 24 01:46:27 CEST 2011
Repository : ssh://darcs.haskell.org//srv/darcs/packages/Cabal
On branch : master
http://hackage.haskell.org/trac/ghc/changeset/7e5135df9b6e008854fd21181ee93c420ffa14ce
>---------------------------------------------------------------
commit 7e5135df9b6e008854fd21181ee93c420ffa14ce
Author: bjorn <bjorn at bringert.net>
Date: Sun Oct 7 12:35:22 2007 +0000
resolveDependencies does not need a list of installed packages as argument.
>---------------------------------------------------------------
.../src/Network/Hackage/CabalInstall/Dependency.hs | 14 ++++++--------
.../src/Network/Hackage/CabalInstall/Fetch.hs | 2 +-
.../src/Network/Hackage/CabalInstall/Info.hs | 2 +-
.../src/Network/Hackage/CabalInstall/Install.hs | 11 +++++------
4 files changed, 13 insertions(+), 16 deletions(-)
diff --git a/cabal-install/src/Network/Hackage/CabalInstall/Dependency.hs b/cabal-install/src/Network/Hackage/CabalInstall/Dependency.hs
index d2d158d..eb1fdcd 100644
--- a/cabal-install/src/Network/Hackage/CabalInstall/Dependency.hs
+++ b/cabal-install/src/Network/Hackage/CabalInstall/Dependency.hs
@@ -176,27 +176,25 @@ resolveDependenciesAux :: ConfigFlags
-> [PackageIdentifier] -- ^Installed packages.
-> [UnresolvedDependency] -- ^Dependencies in need of resolution.
-> IO [ResolvedPackage]
-resolveDependenciesAux cfg comp conf ps deps
- = do installed <- listInstalledPackages cfg comp conf
- knownPkgs <- getKnownPackages cfg
+resolveDependenciesAux cfg comp conf installed deps
+ = do knownPkgs <- getKnownPackages cfg
let resolve dep
= let rDep = getDependency comp installed knownPkgs dep
in case resolvedData rDep of
Nothing -> resolvedDepToResolvedPkg (dependency dep,Nothing)
_ -> rDep
- return $ map resolve (filter (not . isInstalled ps . dependency) deps)
+ return $ map resolve (filter (not . isInstalled installed . dependency) deps)
-- |Resolve some dependencies from the known packages while filtering out installed packages.
-- The result has been modified to put the dependencies in front of the packages.
resolveDependencies :: ConfigFlags
-> Compiler
-> ProgramConfiguration
- -> [PackageIdentifier] -- ^Installed packages.
-> [UnresolvedDependency] -- ^Dependencies in need of resolution.
-> IO [ResolvedPackage]
-resolveDependencies cfg comp conf ps deps
- = fmap (flattenDepList ps) (resolveDependenciesAux cfg comp conf ps deps)
-
+resolveDependencies cfg comp conf deps
+ = do installed <- listInstalledPackages cfg comp conf
+ fmap (flattenDepList installed) (resolveDependenciesAux cfg comp conf installed deps)
listInstalledPackages :: ConfigFlags -> Compiler -> ProgramConfiguration -> IO [PackageIdentifier]
listInstalledPackages cfg comp conf =
diff --git a/cabal-install/src/Network/Hackage/CabalInstall/Fetch.hs b/cabal-install/src/Network/Hackage/CabalInstall/Fetch.hs
index 27ae78d..67622db 100644
--- a/cabal-install/src/Network/Hackage/CabalInstall/Fetch.hs
+++ b/cabal-install/src/Network/Hackage/CabalInstall/Fetch.hs
@@ -127,7 +127,7 @@ fetchPackage cfg pkg repo
fetch :: ConfigFlags -> [String] -> IO ()
fetch cfg pkgs
= do (comp,conf) <- findCompiler cfg
- apkgs <- fmap filterFetchables (resolveDependencies cfg comp conf [] (map parseDep pkgs))
+ apkgs <- fmap filterFetchables (resolveDependencies cfg comp conf (map parseDep pkgs))
mapM_ (\(pkg,repo)
-> fetchPackage cfg pkg repo
) =<< filterM isNotFetched apkgs
diff --git a/cabal-install/src/Network/Hackage/CabalInstall/Info.hs b/cabal-install/src/Network/Hackage/CabalInstall/Info.hs
index d7dd63c..59b1c0c 100644
--- a/cabal-install/src/Network/Hackage/CabalInstall/Info.hs
+++ b/cabal-install/src/Network/Hackage/CabalInstall/Info.hs
@@ -29,7 +29,7 @@ info :: ConfigFlags -> [String] -> [UnresolvedDependency] -> IO ()
info cfg globalArgs deps
= do (comp,conf) <- findCompiler cfg
ipkgs <- listInstalledPackages cfg comp conf
- apkgs <- resolveDependencies cfg comp conf [] deps
+ apkgs <- resolveDependencies cfg comp conf deps
mapM_ (infoPkg cfg ipkgs globalArgs) apkgs
{-|
diff --git a/cabal-install/src/Network/Hackage/CabalInstall/Install.hs b/cabal-install/src/Network/Hackage/CabalInstall/Install.hs
index daf6697..18cfeb5 100644
--- a/cabal-install/src/Network/Hackage/CabalInstall/Install.hs
+++ b/cabal-install/src/Network/Hackage/CabalInstall/Install.hs
@@ -17,16 +17,16 @@ module Network.Hackage.CabalInstall.Install
) where
import Control.Exception (bracket_)
+import Control.Monad (when)
import System.Directory (getTemporaryDirectory, createDirectoryIfMissing
- ,removeDirectoryRecursive)
-import System.FilePath ((</>))
+ ,removeDirectoryRecursive, doesFileExist)
+import System.FilePath ((</>),(<.>))
import Text.Printf (printf)
import Network.Hackage.CabalInstall.Config (findCompiler, message)
-import Network.Hackage.CabalInstall.Dependency (getPackages, resolveDependencies
- , listInstalledPackages)
+import Network.Hackage.CabalInstall.Dependency (getPackages, resolveDependencies)
import Network.Hackage.CabalInstall.Fetch (isFetched, packageFile, fetchPackage)
import Network.Hackage.CabalInstall.Tar (extractTarGzFile)
import Network.Hackage.CabalInstall.Types (ConfigFlags(..), UnresolvedDependency(..)
@@ -46,8 +46,7 @@ import Distribution.Verbosity
install :: ConfigFlags -> [String] -> [UnresolvedDependency] -> IO ()
install cfg globalArgs deps
= do (comp,conf) <- findCompiler cfg
- ipkgs <- listInstalledPackages cfg comp conf
- resolvedDeps <- resolveDependencies cfg comp conf ipkgs deps
+ resolvedDeps <- resolveDependencies cfg comp conf deps
let apkgs = getPackages resolvedDeps
if null apkgs
then putStrLn "All requested packages already installed. Nothing to do."
More information about the Cvs-libraries
mailing list