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
