Repository : ssh://darcs.haskell.org//srv/darcs/packages/Cabal

On branch  : master

http://hackage.haskell.org/trac/ghc/changeset/8ea46d28944c48581d02071f2242ba7c1ba646f2

>---------------------------------------------------------------

commit 8ea46d28944c48581d02071f2242ba7c1ba646f2
Author: Duncan Coutts <[email protected]>
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  :  [email protected]
--- 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
 



_______________________________________________
Cvs-libraries mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/cvs-libraries

Reply via email to