[commit: Cabal] master: Remove 'info' command, make --dry-run cover that feature (4035fde)
Ian Lynagh
igloo at earth.li
Fri Jun 24 01:51:04 CEST 2011
Repository : ssh://darcs.haskell.org//srv/darcs/packages/Cabal
On branch : master
http://hackage.haskell.org/trac/ghc/changeset/4035fdecee8aa8824d2fb9b5292e3765b2eba2d0
>---------------------------------------------------------------
commit 4035fdecee8aa8824d2fb9b5292e3765b2eba2d0
Author: Duncan Coutts <duncan at haskell.org>
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
More information about the Cvs-libraries
mailing list