[commit: Cabal] master: Move the upgrade action into the Install module (63bc12b)
Ian Lynagh
igloo at earth.li
Fri Jun 24 01:54:03 CEST 2011
Repository : ssh://darcs.haskell.org//srv/darcs/packages/Cabal
On branch : master
http://hackage.haskell.org/trac/ghc/changeset/63bc12b3e6cdf6016e323f8b3f8432d19b29613c
>---------------------------------------------------------------
commit 63bc12b3e6cdf6016e323f8b3f8432d19b29613c
Author: Duncan Coutts <duncan at haskell.org>
Date: Sat May 10 18:59:20 2008 +0000
Move the upgrade action into the Install module
It shares most code anyway.
Also fixes ticket #260 becuase we use the right entry point now.
>---------------------------------------------------------------
cabal-install/Hackage/Install.hs | 33 +++++++++++++++++++++++---
cabal-install/Hackage/Upgrade.hs | 45 -------------------------------------
cabal-install/Main.hs | 3 +-
cabal-install/cabal-install.cabal | 1 -
4 files changed, 30 insertions(+), 52 deletions(-)
diff --git a/cabal-install/Hackage/Install.hs b/cabal-install/Hackage/Install.hs
index ca2091e..ccc53de 100644
--- a/cabal-install/Hackage/Install.hs
+++ b/cabal-install/Hackage/Install.hs
@@ -10,9 +10,10 @@
--
-- High level interface to package installation.
-----------------------------------------------------------------------------
-module Hackage.Install
- ( install
- ) where
+module Hackage.Install (
+ install,
+ upgrade,
+ ) where
import Data.List
( unfoldr )
@@ -25,7 +26,7 @@ import System.Directory
( getTemporaryDirectory, doesFileExist )
import System.FilePath ((</>),(<.>))
-import Hackage.Dependency (resolveDependencies)
+import Hackage.Dependency (resolveDependencies, upgradableDependencies)
import Hackage.Fetch (fetchPackage)
-- import qualified Hackage.Info as Info
import qualified Hackage.IndexUtils as IndexUtils
@@ -99,6 +100,17 @@ install verbosity packageDB repos comp conf configFlags installFlags deps =
planner | null deps = planLocalPackage verbosity comp configFlags
| otherwise = planRepoPackages comp deps
+upgrade :: Verbosity
+ -> PackageDB
+ -> [Repo]
+ -> Compiler
+ -> ProgramConfiguration
+ -> Cabal.ConfigFlags
+ -> InstallFlags
+ -> IO ()
+upgrade verbosity packageDB repos comp =
+ installWithPlanner (planUpgradePackages comp) verbosity packageDB repos comp
+
type Planner = Maybe (PackageIndex InstalledPackageInfo)
-> PackageIndex AvailablePackage
-> IO (Either [Dependency] (InstallPlan BuildResult))
@@ -194,6 +206,19 @@ planRepoPackages comp deps installed available = do
return $ resolveDependencies buildOS buildArch (compilerId comp)
installed available deps'
+planUpgradePackages :: Compiler
+ -> Maybe (PackageIndex InstalledPackageInfo)
+ -> PackageIndex AvailablePackage
+ -> IO (Either [Dependency] (InstallPlan BuildResult))
+planUpgradePackages comp (Just installed) available = return $
+ resolveDependencies buildOS buildArch (compilerId comp) (Just installed) available
+ [ UnresolvedDependency dep []
+ | dep <- upgradableDependencies installed available ]
+planUpgradePackages comp _ _ =
+ die $ display (compilerId comp)
+ ++ " does not track installed packages so cabal cannot figure out what"
+ ++ " packages need to be upgraded."
+
printDryRun :: Verbosity -> InstallPlan BuildResult -> IO ()
printDryRun verbosity plan = case unfoldr next plan of
[] -> notice verbosity "No packages to be installed."
diff --git a/cabal-install/Hackage/Upgrade.hs b/cabal-install/Hackage/Upgrade.hs
deleted file mode 100644
index 9dafed1..0000000
--- a/cabal-install/Hackage/Upgrade.hs
+++ /dev/null
@@ -1,45 +0,0 @@
------------------------------------------------------------------------------
--- |
--- Module : Hackage.Upgrade
--- Copyright : (c) Isaac Potoczny-Jones 2007
--- License : BSD-like
>---------------------------------------------------------------
--- Maintainer : ijones at syntaxpolice.org
--- Stability : provisional
--- Portability : portable
>---------------------------------------------------------------
--- High level interface to package upgrade. Gets list of installed packages
--- and if there are any newer versions available, upgrades them.
-
------------------------------------------------------------------------------
-module Hackage.Upgrade
- ( upgrade
- ) where
-
-import qualified Hackage.IndexUtils as IndexUtils
-import Hackage.Dependency (upgradableDependencies)
-import Hackage.Install (install)
-import Hackage.Types (UnresolvedDependency(..), Repo)
-import Hackage.Setup (InstallFlags(..))
-
-import Distribution.Simple.Program (ProgramConfiguration)
-import Distribution.Simple.Compiler (Compiler, PackageDB)
-import Distribution.Simple.Configure (getInstalledPackages)
-import Distribution.Verbosity (Verbosity)
-import qualified Distribution.Simple.Setup as Cabal
-
-import Data.Monoid (Monoid(..))
-
-upgrade :: Verbosity
- -> PackageDB -> [Repo]
- -> Compiler
- -> ProgramConfiguration
- -> Cabal.ConfigFlags
- -> InstallFlags
- -> IO ()
-upgrade verbosity packageDB repos comp conf configFlags installFlags = do
- Just installed <- getInstalledPackages verbosity comp packageDB conf
- available <- fmap mconcat (mapM (IndexUtils.readRepoIndex verbosity) repos)
- let upgradable = upgradableDependencies installed available
- install verbosity packageDB repos comp conf configFlags installFlags
- [ UnresolvedDependency dep [] | dep <- upgradable ]
diff --git a/cabal-install/Main.hs b/cabal-install/Main.hs
index c20a843..31f15d5 100644
--- a/cabal-install/Main.hs
+++ b/cabal-install/Main.hs
@@ -30,9 +30,8 @@ import Hackage.Config (SavedConfig(..), savedConfigToConfigFlags,
defaultConfigFile, loadConfig, configRepos,
configPackageDB)
import Hackage.List (list)
-import Hackage.Install (install)
+import Hackage.Install (install, upgrade)
import Hackage.Update (update)
-import Hackage.Upgrade (upgrade)
import Hackage.Fetch (fetch)
import Hackage.Check as Check (check)
--import Hackage.Clean (clean)
diff --git a/cabal-install/cabal-install.cabal b/cabal-install/cabal-install.cabal
index 7d4f621..f508a08 100644
--- a/cabal-install/cabal-install.cabal
+++ b/cabal-install/cabal-install.cabal
@@ -55,7 +55,6 @@ Executable cabal
Hackage.Tar
Hackage.Types
Hackage.Update
- Hackage.Upgrade
Hackage.Upload
Hackage.Utils
More information about the Cvs-libraries
mailing list