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

Reply via email to