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
