Repository : ssh://darcs.haskell.org//srv/darcs/packages/Cabal

On branch  : master

http://hackage.haskell.org/trac/ghc/changeset/1b524a31b475aa2d75e8bdecce11e9860f4d2317

>---------------------------------------------------------------

commit 1b524a31b475aa2d75e8bdecce11e9860f4d2317
Author: Duncan Coutts <[email protected]>
Date:   Mon Jun 16 17:12:55 2008 +0000

    Move getAvailablePackages into IndexUtils module

>---------------------------------------------------------------

 cabal-install/Hackage/Fetch.hs      |    6 +++---
 cabal-install/Hackage/IndexUtils.hs |   14 ++++++++++++--
 cabal-install/Hackage/Install.hs    |    6 +++---
 cabal-install/Hackage/List.hs       |    5 ++---
 4 files changed, 20 insertions(+), 11 deletions(-)

diff --git a/cabal-install/Hackage/Fetch.hs b/cabal-install/Hackage/Fetch.hs
index b4bc110..78ec9e8 100644
--- a/cabal-install/Hackage/Fetch.hs
+++ b/cabal-install/Hackage/Fetch.hs
@@ -29,7 +29,8 @@ import Hackage.Types
          , AvailablePackageSource(..), Repo(..), repoURI )
 import Hackage.Dependency
          ( resolveDependencies, PackagesVersionPreference(..) )
-import qualified Hackage.IndexUtils as IndexUtils
+import Hackage.IndexUtils as IndexUtils
+         ( getAvailablePackages, disambiguateDependencies )
 import qualified Hackage.InstallPlan as InstallPlan
 import Hackage.HttpUtils (getHTTP)
 
@@ -47,7 +48,6 @@ import Distribution.Text
          ( display )
 import Distribution.Verbosity (Verbosity)
 
-import Data.Monoid (Monoid(mconcat))
 import Control.Exception (bracket)
 import Control.Monad (filterM)
 import System.Directory (doesFileExist, createDirectoryIfMissing)
@@ -125,7 +125,7 @@ fetch :: Verbosity
       -> IO ()
 fetch verbosity packageDB repos comp conf deps
     = do installed <- getInstalledPackages verbosity comp packageDB conf
-         available <- fmap mconcat (mapM (IndexUtils.readRepoIndex verbosity) 
repos)
+         available <- getAvailablePackages verbosity repos
          deps' <- IndexUtils.disambiguateDependencies available deps
          case resolveDependencies buildOS buildArch (compilerId comp)
                 installed available PreferLatestForSelected deps' of
diff --git a/cabal-install/Hackage/IndexUtils.hs 
b/cabal-install/Hackage/IndexUtils.hs
index 1d4cbe6..11e4ba8 100644
--- a/cabal-install/Hackage/IndexUtils.hs
+++ b/cabal-install/Hackage/IndexUtils.hs
@@ -11,6 +11,7 @@
 -- Extra utils related to the package indexes.
 -----------------------------------------------------------------------------
 module Hackage.IndexUtils (
+  getAvailablePackages,
   readRepoIndex,
   disambiguatePackageName,
   disambiguateDependencies
@@ -31,16 +32,25 @@ import Distribution.ParseUtils
 import Distribution.Text
          ( simpleParse )
 import Distribution.Verbosity (Verbosity)
-import Distribution.Simple.Utils (die, warn, intercalate, fromUTF8)
+import Distribution.Simple.Utils (die, warn, info, intercalate, fromUTF8)
 
 import Prelude hiding (catch)
-import Control.Exception (catch, Exception(IOException))
+import Data.Monoid (Monoid(mconcat))
+import Control.Exception (evaluate, catch, Exception(IOException))
 import qualified Data.ByteString.Lazy as BS
 import qualified Data.ByteString.Lazy.Char8 as BS.Char8
 import Data.ByteString.Lazy (ByteString)
 import System.FilePath ((</>), takeExtension, splitDirectories, normalise)
 import System.IO.Error (isDoesNotExistError)
 
+
+getAvailablePackages :: Verbosity -> [Repo]
+                     -> IO (PackageIndex AvailablePackage)
+getAvailablePackages verbosity repos = do
+  info verbosity "Reading available packages..."
+  pkgss <- mapM (readRepoIndex verbosity) repos
+  evaluate (mconcat pkgss)
+
 -- | Read a repository index from disk, from the local file specified by
 -- the 'Repo'.
 --
diff --git a/cabal-install/Hackage/Install.hs b/cabal-install/Hackage/Install.hs
index c9aac16..969ab19 100644
--- a/cabal-install/Hackage/Install.hs
+++ b/cabal-install/Hackage/Install.hs
@@ -17,7 +17,6 @@ module Hackage.Install (
 
 import Data.List
          ( unfoldr )
-import Data.Monoid (Monoid(mconcat))
 import Control.Exception as Exception
          ( handle, Exception )
 import Control.Monad
@@ -32,7 +31,8 @@ import Hackage.Dependency
 import Hackage.Dependency.Types (Progress(..), foldProgress)
 import Hackage.Fetch (fetchPackage)
 -- import qualified Hackage.Info as Info
-import qualified Hackage.IndexUtils as IndexUtils
+import Hackage.IndexUtils as IndexUtils
+         ( getAvailablePackages, disambiguateDependencies )
 import qualified Hackage.InstallPlan as InstallPlan
 import Hackage.InstallPlan (InstallPlan)
 import Hackage.Setup
@@ -125,7 +125,7 @@ installWithPlanner ::
         -> IO ()
 installWithPlanner planner verbosity packageDB repos comp conf configFlags 
installFlags = do
   installed <- getInstalledPackages verbosity comp packageDB conf
-  available <- fmap mconcat (mapM (IndexUtils.readRepoIndex verbosity) repos)
+  available <- getAvailablePackages verbosity repos
 
   progress <- planner installed available
 
diff --git a/cabal-install/Hackage/List.hs b/cabal-install/Hackage/List.hs
index fd5e160..3f3c09e 100644
--- a/cabal-install/Hackage/List.hs
+++ b/cabal-install/Hackage/List.hs
@@ -16,7 +16,6 @@ module Hackage.List (
 
 import Data.List (sortBy, groupBy, sort, nub, intersperse)
 import Data.Maybe (listToMaybe, fromJust)
-import Data.Monoid (Monoid(mconcat))
 import Control.Monad (MonadPlus(mplus))
 import Control.Exception (assert)
 
@@ -33,7 +32,7 @@ import qualified Distribution.Simple.PackageIndex as 
PackageIndex
 import Distribution.Version (Version)
 import Distribution.Verbosity (Verbosity)
 
-import qualified Hackage.IndexUtils as IndexUtils (readRepoIndex)
+import Hackage.IndexUtils (getAvailablePackages)
 import Hackage.Setup (ListFlags(..))
 import Hackage.Types (AvailablePackage(..), Repo)
 import Distribution.Simple.Configure (getInstalledPackages)
@@ -55,7 +54,7 @@ list :: Verbosity
      -> IO ()
 list verbosity packageDB repos comp conf listFlags pats = do
     Just installed <- getInstalledPackages verbosity comp packageDB conf
-    available <- fmap mconcat (mapM (IndexUtils.readRepoIndex verbosity) repos)
+    available <- getAvailablePackages verbosity repos
     let pkgs | null pats = (PackageIndex.allPackages installed
                            ,PackageIndex.allPackages available)
              | otherwise =



_______________________________________________
Cvs-libraries mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/cvs-libraries

Reply via email to