Repository : ssh://darcs.haskell.org//srv/darcs/packages/Cabal On branch : master
http://hackage.haskell.org/trac/ghc/changeset/136b8166577610ee3f96088cd41f15e55a4fba7c >--------------------------------------------------------------- commit 136b8166577610ee3f96088cd41f15e55a4fba7c Author: bjorn <[email protected]> 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) _______________________________________________ Cvs-libraries mailing list [email protected] http://www.haskell.org/mailman/listinfo/cvs-libraries
