[commit: Cabal] master: Move getAvailablePackages into IndexUtils module (1b524a3)
Ian Lynagh
igloo at earth.li
Fri Jun 24 01:56:10 CEST 2011
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 <duncan at haskell.org>
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 =
More information about the Cvs-libraries
mailing list