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

On branch  : master

http://hackage.haskell.org/trac/ghc/changeset/280b20a122bd31df43d30b4a6e9458c571b3d098

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

commit 280b20a122bd31df43d30b4a6e9458c571b3d098
Author: Duncan Coutts <[email protected]>
Date:   Tue Jun 3 00:23:37 2008 +0000

    Make the 'upgrade' command take optional deps
    Up to now 'upgrade' took no args and tried to upgrade all installed
    packages to the latest versions. It retains that mode but also has
    a new mode rather like 'cabal install'. The difference is that with
    $ cabal install foo
    it means install latest version of foo but otherwise prefer the
    installed versions of deps of foo, while
    $ cabal upgrade foo
    means install the latest version of foo and also the latest
    versions of all the dependencies of foo.

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

 cabal-install/Hackage/Install.hs |   45 ++++++++++++++++++-------------------
 cabal-install/Main.hs            |    5 ++-
 2 files changed, 25 insertions(+), 25 deletions(-)

diff --git a/cabal-install/Hackage/Install.hs b/cabal-install/Hackage/Install.hs
index b966bdf..338bdf5 100644
--- a/cabal-install/Hackage/Install.hs
+++ b/cabal-install/Hackage/Install.hs
@@ -85,33 +85,31 @@ data InstallMisc = InstallMisc {
   }
 
 -- |Installs the packages needed to satisfy a list of dependencies.
-install :: Verbosity
-        -> PackageDB
-        -> [Repo]
-        -> Compiler
-        -> ProgramConfiguration
-        -> Cabal.ConfigFlags
-        -> InstallFlags
-        -> [UnresolvedDependency]
-        -> IO ()
+install, upgrade
+  :: Verbosity
+  -> PackageDB
+  -> [Repo]
+  -> Compiler
+  -> ProgramConfiguration
+  -> Cabal.ConfigFlags
+  -> InstallFlags
+  -> [UnresolvedDependency]
+  -> IO ()
 install verbosity packageDB repos comp conf configFlags installFlags deps =
   installWithPlanner planner
         verbosity packageDB repos comp conf configFlags installFlags
   where
     planner :: Planner
     planner | null deps = planLocalPackage verbosity comp configFlags
-            | otherwise = planRepoPackages           comp deps
+            | otherwise = planRepoPackages PreferLatestForSelected comp deps
 
-upgrade :: Verbosity
-        -> PackageDB
-        -> [Repo]
-        -> Compiler
-        -> ProgramConfiguration
-        -> Cabal.ConfigFlags
-        -> InstallFlags
-        -> IO ()
-upgrade verbosity packageDB repos comp =
-  installWithPlanner (planUpgradePackages comp) verbosity packageDB repos comp
+upgrade verbosity packageDB repos comp conf configFlags installFlags deps =
+  installWithPlanner planner
+        verbosity packageDB repos comp conf configFlags installFlags
+  where
+    planner :: Planner
+    planner | null deps = planUpgradePackages comp
+            | otherwise = planRepoPackages PreferAllLatest comp deps
 
 type Planner = Maybe (PackageIndex InstalledPackageInfo)
             -> PackageIndex AvailablePackage
@@ -198,11 +196,12 @@ planLocalPackage verbosity comp configFlags installed 
available = do
 
 -- | Make an 'InstallPlan' for the given dependencies.
 --
-planRepoPackages :: Compiler -> [UnresolvedDependency] -> Planner
-planRepoPackages comp deps installed available = do
+planRepoPackages :: PackagesVersionPreference -> Compiler
+                 -> [UnresolvedDependency] -> Planner
+planRepoPackages pref comp deps installed available = do
   deps' <- IndexUtils.disambiguateDependencies available deps
   return $ resolveDependenciesWithProgress buildOS buildArch (compilerId comp)
-             installed available PreferLatestForSelected deps'
+             installed available pref deps'
 
 planUpgradePackages :: Compiler -> Planner
 planUpgradePackages comp (Just installed) available = return $
diff --git a/cabal-install/Main.hs b/cabal-install/Main.hs
index fd89041..6bb6578 100644
--- a/cabal-install/Main.hs
+++ b/cabal-install/Main.hs
@@ -183,7 +183,8 @@ updateAction verbosityFlag _extraArgs = do
   update verbosity (configRepos config)
 
 upgradeAction :: (Cabal.ConfigFlags, InstallFlags) -> [String] -> IO ()
-upgradeAction (cflags,iflags) _extraArgs = do
+upgradeAction (cflags,iflags) extraArgs = do
+  pkgs <- either die return (parsePackageArgs extraArgs)
   configFile <- defaultConfigFile --FIXME
   let verbosity = fromFlagOrDefault normal (Cabal.configVerbosity cflags)
   config <- loadConfig verbosity configFile
@@ -192,7 +193,7 @@ upgradeAction (cflags,iflags) _extraArgs = do
   (comp, conf) <- configCompilerAux cflags'
   upgrade verbosity
           (configPackageDB cflags') (configRepos config)
-          comp conf cflags' iflags
+          comp conf cflags' iflags pkgs
 
 fetchAction :: Flag Verbosity -> [String] -> IO ()
 fetchAction verbosityFlag extraArgs = do



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

Reply via email to