[commit: Cabal] master: Refactoring: add Dependency.isInstalled and use it. (136b816)
Ian Lynagh
igloo at earth.li
Fri Jun 24 01:45:05 CEST 2011
Repository : ssh://darcs.haskell.org//srv/darcs/packages/Cabal
On branch : master
http://hackage.haskell.org/trac/ghc/changeset/136b8166577610ee3f96088cd41f15e55a4fba7c
>---------------------------------------------------------------
commit 136b8166577610ee3f96088cd41f15e55a4fba7c
Author: bjorn <bjorn at bringert.net>
Date: Thu Oct 4 16:13:53 2007 +0000
Refactoring: add Dependency.isInstalled and use it.
>---------------------------------------------------------------
.../src/Network/Hackage/CabalInstall/Dependency.hs | 12 +++++++++---
1 files changed, 9 insertions(+), 3 deletions(-)
diff --git a/cabal-install/src/Network/Hackage/CabalInstall/Dependency.hs b/cabal-install/src/Network/Hackage/CabalInstall/Dependency.hs
index af7544b..298ba8f 100644
--- a/cabal-install/src/Network/Hackage/CabalInstall/Dependency.hs
+++ b/cabal-install/src/Network/Hackage/CabalInstall/Dependency.hs
@@ -139,6 +139,13 @@ fulfillDependency :: Dependency -> PackageIdentifier -> Bool
fulfillDependency (Dependency depName vrange) pkg
= pkgName pkg == depName && pkgVersion pkg `withinRange` vrange
+-- | Checks whether there is an installed package that satisfies the
+-- given dependency.
+isInstalled :: [PackageIdentifier] -- ^Installed packages.
+ -> Dependency -> Bool
+isInstalled ps dep = any (fulfillDependency dep) ps
+
+
getDependency :: [PkgInfo]
-> UnresolvedDependency -> ResolvedPackage
getDependency ps (UnresolvedDependency { dependency=dep, depOptions=opts})
@@ -180,10 +187,9 @@ resolveDependenciesAux :: ConfigFlags
-> IO [ResolvedPackage]
resolveDependenciesAux cfg ps deps
= do knownPkgs <- getKnownPackages cfg
- let resolved = map (resolve knownPkgs) (filter isNotInstalled deps)
+ let resolved = map (resolve knownPkgs) (filter (not . isInstalled ps . dependency) deps)
return resolved
- where isNotInstalled pkgDep = not (or (map (fulfillDependency (dependency pkgDep)) ps))
- resolve pkgs dep
+ where resolve pkgs dep
= let rDep = getDependency pkgs dep
in case resolvedData rDep of
Nothing -> resolvedDepToResolvedPkg (dependency dep,Nothing)
More information about the Cvs-libraries
mailing list