Repository : ssh://darcs.haskell.org//srv/darcs/packages/Cabal On branch : master
http://hackage.haskell.org/trac/ghc/changeset/dad5a1a6aa32bdef9f41cf5c39cc3aa67bf7070f >--------------------------------------------------------------- commit dad5a1a6aa32bdef9f41cf5c39cc3aa67bf7070f Author: Duncan Coutts <[email protected]> Date: Fri Feb 29 14:03:00 2008 +0000 Remove 'info' command, make --dry-run cover that feature In -v mode info produced a detailed tree explaining the dependency resolution. That feature has been moved into 'install --dry-run -v'. >--------------------------------------------------------------- cabal-install/Hackage/Info.hs | 41 +++---------------------------------- cabal-install/Hackage/Install.hs | 19 +++++++++++------ cabal-install/Main.hs | 14 ------------- 3 files changed, 16 insertions(+), 58 deletions(-) diff --git a/cabal-install/Hackage/Info.hs b/cabal-install/Hackage/Info.hs index dfea310..57772b9 100644 --- a/cabal-install/Hackage/Info.hs +++ b/cabal-install/Hackage/Info.hs @@ -10,52 +10,19 @@ -- -- High level interface to a dry-run package installation. ----------------------------------------------------------------------------- -module Hackage.Info where +module Hackage.Info ( + flattenResolvedDependencies, + infoPkg + ) where -import qualified Hackage.IndexUtils as IndexUtils -import qualified Hackage.DepGraph as DepGraph -import Hackage.Dependency import Hackage.Fetch import Hackage.Types import Hackage.Utils (showDependencies) import Distribution.Package (showPackageId, Package(..)) import Distribution.ParseUtils (showDependency) -import Distribution.Simple.Compiler (Compiler, PackageDB) -import Distribution.Simple.Configure (getInstalledPackages) -import Distribution.Simple.Program (ProgramConfiguration) -import Distribution.Simple.Utils as Utils (notice, info) -import Distribution.Verbosity (Verbosity) import Data.List (nubBy) -import Data.Monoid (Monoid(mconcat)) - -info :: Verbosity - -> PackageDB - -> [Repo] - -> Compiler - -> ProgramConfiguration - -> [UnresolvedDependency] - -> IO () -info verbosity packageDB repos comp conf deps - = do Just installed <- getInstalledPackages verbosity comp packageDB conf - available <- fmap mconcat (mapM (IndexUtils.readRepoIndex verbosity) repos) - deps' <- IndexUtils.disambiguateDependencies available deps - let apkgs = resolveDependencies comp installed available deps' - details <- mapM infoPkg (flattenResolvedDependencies apkgs) - Utils.info verbosity $ unlines (map (" "++) (concat details)) - case packagesToInstall apkgs of - Left missing -> notice verbosity $ - "The requested packages cannot be installed, because of missing dependencies:\n" - ++ showDependencies missing - - Right pkgs | DepGraph.empty pkgs -> notice verbosity $ - "All requested packages already installed. Nothing to do." - - Right pkgs -> notice verbosity $ - "These packages would be installed:\n" - ++ unlines [ showPackageId (packageId pkg) - | (DepGraph.ResolvedPackage pkg _ _) <- DepGraph.toList pkgs] flattenResolvedDependencies :: [ResolvedDependency] -> [ResolvedDependency] flattenResolvedDependencies = nubBy fulfillSame. concatMap flatten diff --git a/cabal-install/Hackage/Install.hs b/cabal-install/Hackage/Install.hs index 6047d51..d24d490 100644 --- a/cabal-install/Hackage/Install.hs +++ b/cabal-install/Hackage/Install.hs @@ -23,6 +23,7 @@ import System.FilePath ((</>),(<.>)) import Hackage.Dependency (resolveDependencies, resolveDependenciesLocal, packagesToInstall) import Hackage.Fetch (fetchPackage) +import qualified Hackage.Info as Info import qualified Hackage.IndexUtils as IndexUtils import qualified Hackage.DepGraph as DepGraph import Hackage.Setup (InstallFlags(..)) @@ -99,11 +100,13 @@ installLocalPackage verbosity packageDB repos comp conf configFlags dryRun = available <- fmap mconcat (mapM (IndexUtils.readRepoIndex verbosity) repos) let resolvedDeps = resolveDependenciesLocal comp installed available desc (Cabal.configConfigurationsFlags configFlags) + details <- mapM Info.infoPkg (Info.flattenResolvedDependencies resolvedDeps) + info verbosity $ unlines (map (" "++) (concat details)) buildResults <- case packagesToInstall resolvedDeps of Left missing -> die $ "Unresolved dependencies: " ++ showDependencies missing Right pkgs -> do if dryRun - then printDryRun pkgs >> return [] + then printDryRun verbosity pkgs >> return [] else installPackages verbosity configFlags pkgs if dryRun then return [] @@ -125,6 +128,8 @@ installRepoPackages verbosity packageDB repos comp conf configFlags dryRun deps available <- fmap mconcat (mapM (IndexUtils.readRepoIndex verbosity) repos) deps' <- IndexUtils.disambiguateDependencies available deps let resolvedDeps = resolveDependencies comp installed available deps' + details <- mapM Info.infoPkg (Info.flattenResolvedDependencies resolvedDeps) + info verbosity $ unlines (map (" "++) (concat details)) case packagesToInstall resolvedDeps of Left missing -> die $ "Unresolved dependencies: " ++ showDependencies missing Right pkgs @@ -132,16 +137,16 @@ installRepoPackages verbosity packageDB repos comp conf configFlags dryRun deps "All requested packages already installed. Nothing to do." >> return [] | dryRun -> do - printDryRun pkgs + printDryRun verbosity pkgs return [] | otherwise -> installPackages verbosity configFlags pkgs -printDryRun :: DepGraph.DepGraph -> IO () -printDryRun pkgs - | DepGraph.empty pkgs = putStrLn "No packages to be installed." +printDryRun :: Verbosity -> DepGraph.DepGraph -> IO () +printDryRun verbosity pkgs + | DepGraph.empty pkgs = notice verbosity "No packages to be installed." | otherwise = do - putStrLn "In order, the following would be installed:" - mapM_ (putStrLn . showPackageId) (order pkgs) + notice verbosity $ "In order, the following would be installed:\n" + ++ unlines (map showPackageId (order pkgs)) where order ps | DepGraph.empty ps = [] diff --git a/cabal-install/Main.hs b/cabal-install/Main.hs index cf40443..e265f75 100644 --- a/cabal-install/Main.hs +++ b/cabal-install/Main.hs @@ -27,7 +27,6 @@ import Hackage.Config (SavedConfig(..), savedConfigToConfigFlags, configPackageDB) import Hackage.List (list) import Hackage.Install (install) -import Hackage.Info (info) import Hackage.Update (update) import Hackage.Upgrade (upgrade) import Hackage.Fetch (fetch) @@ -81,7 +80,6 @@ mainWorker args = commands = [configureCommand `commandAddAction` configureAction ,installCommand `commandAddAction` installAction - ,infoCommand `commandAddAction` infoAction ,listCommand `commandAddAction` listAction ,updateCommand `commandAddAction` updateAction ,upgradeCommand `commandAddAction` upgradeAction @@ -132,18 +130,6 @@ installAction (cflags,iflags) extraArgs = do (fromFlag $ Cabal.configPackageDB cflags') (configRepos config) comp conf cflags' iflags pkgs -infoAction :: Cabal.Flag Verbosity -> [String] -> IO () -infoAction verbosityFlag extraArgs = do - pkgs <- either die return (parsePackageArgs extraArgs) - configFile <- defaultConfigFile --FIXME - let verbosity = fromFlag verbosityFlag - config <- loadConfig verbosity configFile - let flags = savedConfigToConfigFlags (configPackageDB config) config - (comp, conf) <- configCompilerAux flags - info verbosity - (fromFlag $ Cabal.configPackageDB flags) (configRepos config) - comp conf pkgs - listAction :: Cabal.Flag Verbosity -> [String] -> IO () listAction verbosityFlag extraArgs = do configFile <- defaultConfigFile --FIXME _______________________________________________ Cvs-libraries mailing list [email protected] http://www.haskell.org/mailman/listinfo/cvs-libraries
