[commit: Cabal] master: Make the 'upgrade' command take optional deps (280b20a)
Paolo Capriotti
p.capriotti at gmail.com
Tue May 8 00:15:24 CEST 2012
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 <duncan at haskell.org>
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
More information about the Cvs-libraries
mailing list