Repository : ssh://darcs.haskell.org//srv/darcs/packages/Cabal On branch : master
http://hackage.haskell.org/trac/ghc/changeset/9b6c8bb220629f002c212c9d0e85325a881b0631 >--------------------------------------------------------------- commit 9b6c8bb220629f002c212c9d0e85325a881b0631 Author: Duncan Coutts <[email protected]> Date: Mon May 10 03:13:28 2010 +0000 Add plumbing in install code for global flags and target list >--------------------------------------------------------------- cabal-install/Distribution/Client/Install.hs | 42 ++++++++++++++++++-------- 1 files changed, 29 insertions(+), 13 deletions(-) diff --git a/cabal-install/Distribution/Client/Install.hs b/cabal-install/Distribution/Client/Install.hs index 5b73545..7b947da 100644 --- a/cabal-install/Distribution/Client/Install.hs +++ b/cabal-install/Distribution/Client/Install.hs @@ -133,6 +133,12 @@ import Distribution.Simple.BuildPaths ( exeExtension ) -- * Top level user actions -- ------------------------------------------------------------ +-- | An installation target given by the user. At the moment this +-- is just a named package, possibly with a version constraint. +-- It should be generalised to handle other targets like http or dirs. +-- +type InstallTarget = UnresolvedDependency + -- | Installs the packages needed to satisfy a list of dependencies. -- install, upgrade @@ -145,12 +151,12 @@ install, upgrade -> ConfigFlags -> ConfigExFlags -> InstallFlags - -> [UnresolvedDependency] + -> [InstallTarget] -> IO () install verbosity packageDB repos comp conf - globalFlags configFlags configExFlags installFlags deps = + globalFlags configFlags configExFlags installFlags targets = - installWithPlanner verbosity context planner + installWithPlanner verbosity context planner targets where context :: InstallContext @@ -158,15 +164,19 @@ install verbosity packageDB repos comp conf globalFlags, configFlags, configExFlags, installFlags) planner :: Planner - planner | null deps = planLocalPackage verbosity - comp configFlags configExFlags - | otherwise = planRepoPackages PreferLatestForSelected - comp configFlags configExFlags installFlags deps + planner + | null targets = planLocalPackage verbosity + comp configFlags configExFlags + + | otherwise = planRepoPackages PreferLatestForSelected + comp globalFlags configFlags configExFlags + installFlags targets + upgrade verbosity packageDB repos comp conf globalFlags configFlags configExFlags installFlags deps = - installWithPlanner verbosity context planner + installWithPlanner verbosity context planner [] where context :: InstallContext @@ -177,7 +187,8 @@ upgrade verbosity packageDB repos comp conf planner | null deps = planUpgradePackages comp configFlags configExFlags | otherwise = planRepoPackages PreferAllLatest - comp configFlags configExFlags installFlags deps + comp globalFlags configFlags configExFlags + installFlags deps type Planner = PackageIndex InstalledPackage -> AvailablePackageDb @@ -197,9 +208,11 @@ type InstallContext = ( PackageDBStack installWithPlanner :: Verbosity -> InstallContext -> Planner + -> [UnresolvedDependency] -> IO () installWithPlanner verbosity - context@(packageDBs, repos, comp, conf, _, _, _, installFlags) planner = do + context@(packageDBs, repos, comp, conf, _, _, _, installFlags) + planner targets = do installed <- getInstalledPackages verbosity comp packageDBs conf available <- getAvailablePackages verbosity repos @@ -213,7 +226,7 @@ installWithPlanner verbosity unless dryRun $ performInstallations verbosity context installed installPlan - >>= postInstallActions verbosity context + >>= postInstallActions verbosity context targets where dryRun = fromFlag (installDryRun installFlags) @@ -263,12 +276,14 @@ planLocalPackage verbosity comp configFlags configExFlags installed -- planRepoPackages :: PackagesPreferenceDefault -> Compiler + -> GlobalFlags -> ConfigFlags -> ConfigExFlags -> InstallFlags -> [UnresolvedDependency] -> Planner -planRepoPackages defaultPref comp configFlags configExFlags installFlags +planRepoPackages defaultPref comp + globalFlags configFlags configExFlags installFlags deps installed (AvailablePackageDb available availablePrefs) = do deps' <- IndexUtils.disambiguateDependencies available deps @@ -412,11 +427,12 @@ printDryRun verbosity installed plan = case unfoldr next plan of -- postInstallActions :: Verbosity -> InstallContext + -> [InstallTarget] -> InstallPlan -> IO () postInstallActions verbosity (packageDBs, _, comp, conf, globalFlags, configFlags, _, installFlags) - installPlan = do + targets installPlan = do let buildReports = BuildReports.fromInstallPlan installPlan BuildReports.storeLocal (installSummaryFile installFlags) buildReports _______________________________________________ Cvs-libraries mailing list [email protected] http://www.haskell.org/mailman/listinfo/cvs-libraries
