Repository : ssh://darcs.haskell.org//srv/darcs/packages/Cabal On branch : master
http://hackage.haskell.org/trac/ghc/changeset/8f3cc663be9ce7acdfc1107b3e95f9eca4804a3e >--------------------------------------------------------------- commit 8f3cc663be9ce7acdfc1107b3e95f9eca4804a3e Author: bjorn <[email protected]> Date: Thu Oct 4 17:50:47 2007 +0000 Refactor getBuildDeps and redefine flattenDepList in terms of it. >--------------------------------------------------------------- .../src/Network/Hackage/CabalInstall/Dependency.hs | 26 ++++++++----------- 1 files changed, 11 insertions(+), 15 deletions(-) diff --git a/cabal-install/src/Network/Hackage/CabalInstall/Dependency.hs b/cabal-install/src/Network/Hackage/CabalInstall/Dependency.hs index 5b18d3b..64c7ca4 100644 --- a/cabal-install/src/Network/Hackage/CabalInstall/Dependency.hs +++ b/cabal-install/src/Network/Hackage/CabalInstall/Dependency.hs @@ -49,24 +49,20 @@ flattenDepList :: [PackageIdentifier] -- ^List of installed packages. -> [ResolvedPackage] flattenDepList ps = nub . filter (not . isInstalled ps . fulfilling) . concatMap flatten - where flatten pkgInfo = subs ++ [pkgInfo] - where subs = case resolvedData pkgInfo of - Just (_,_,subDeps) -> concatMap flatten subDeps - Nothing -> [] + where flatten pkgInfo = getBuildDeps ps [pkgInfo] ++ [pkgInfo] --- |Flattens a dependency list while only keeping the dependencies of the packages. --- This is used for installing all the dependencies of a package but not the package itself. +-- | Flattens a dependency list, keeping only the transitive closure of the +-- dependencies of the top-level packages. +-- This is used for installing all the dependencies of set of packages but not the packages +-- themselves. Filters out installed packages and duplicates. getBuildDeps :: [PackageIdentifier] -> [ResolvedPackage] -> [ResolvedPackage] -getBuildDeps ps deps - = nub $ concatMap worker deps - where worker pkgInfo - = case getLatestPkg ps (fulfilling pkgInfo) of - Just _pkg -> [] - Nothing -> case resolvedData pkgInfo of - Just (_pkg,_location,subDeps) - -> flattenDepList ps subDeps - Nothing -> [] +getBuildDeps ps + = nub . filter (not . isInstalled ps . fulfilling) . concatMap flattenDeps + where flattenDeps pkgInfo + = case resolvedData pkgInfo of + Just (_,_,subDeps) -> flattenDepList ps subDeps + Nothing -> [] {- getReverseDeps :: [PackageIdentifier] -- All installed packages. _______________________________________________ Cvs-libraries mailing list [email protected] http://www.haskell.org/mailman/listinfo/cvs-libraries
