Repository : ssh://darcs.haskell.org//srv/darcs/packages/Cabal On branch : master
http://hackage.haskell.org/trac/ghc/changeset/0a65d34d6814676cf1571c13f2515231950bbf6a >--------------------------------------------------------------- commit 0a65d34d6814676cf1571c13f2515231950bbf6a Author: Duncan Coutts <[email protected]> Date: Mon Apr 14 14:34:57 2008 +0000 Simplify install --only implementation The install --only doesn't do any planning or build reporting so make it completely separate so we do not have to make up fake build plans or results. >--------------------------------------------------------------- cabal-install/Hackage/Install.hs | 21 +++++---------------- cabal-install/Main.hs | 3 +++ 2 files changed, 8 insertions(+), 16 deletions(-) diff --git a/cabal-install/Hackage/Install.hs b/cabal-install/Hackage/Install.hs index 34bbfac..32c2a17 100644 --- a/cabal-install/Hackage/Install.hs +++ b/cabal-install/Hackage/Install.hs @@ -74,15 +74,14 @@ install :: Verbosity -> IO () install verbosity packageDB repos comp conf configFlags installFlags deps = do let dryRun = Cabal.fromFlag (installDryRun installFlags) - onlyInstall = Cabal.fromFlag (installOnly installFlags) -- ignore --root-cmd if --user. rootCmd | Cabal.fromFlag (Cabal.configUserInstall configFlags) = Nothing | otherwise = Cabal.flagToMaybe (installRootCmd installFlags) buildResults <- if null deps - then if onlyInstall -- used only internally, we assume there's no other interesting flag. - then installLocalPackageOnly verbosity - else installLocalPackage verbosity packageDB repos comp conf configFlags dryRun rootCmd - else installRepoPackages verbosity packageDB repos comp conf configFlags dryRun rootCmd deps + then installLocalPackage verbosity + packageDB repos comp conf configFlags dryRun rootCmd + else installRepoPackages verbosity + packageDB repos comp conf configFlags dryRun rootCmd deps case filter (buildFailed . snd) buildResults of [] -> return () --TODO: return the build results failed -> die $ "Error: some packages failed to install:\n" @@ -119,7 +118,7 @@ installLocalPackage verbosity packageDB repos comp conf configFlags dryRun rootC desc <- readPackageDescription verbosity cabalFile installed <- getInstalledPackages verbosity comp packageDB conf available <- fmap mconcat (mapM (IndexUtils.readRepoIndex verbosity) repos) - --TODO: + --TODO: print the info again -- details <- mapM Info.infoPkg (Info.flattenResolvedDependencies resolvedDeps) -- info verbosity $ unlines (map (" "++) (concat details)) buildResults <- case resolveDependenciesLocal buildOS buildArch @@ -136,16 +135,6 @@ installLocalPackage verbosity packageDB repos comp conf configFlags dryRun rootC else do buildResult <- installUnpackedPkg verbosity configFlags Nothing rootCmd return ((packageId (packageDescription desc), buildResult) : buildResults) --- | Installs the package without also configuring and building. i.e. copy + register -installLocalPackageOnly :: Verbosity -> IO [(PackageIdentifier, BuildResult)] -installLocalPackageOnly verbosity = - do cabalFile <- defaultPackageDesc verbosity - desc <- readPackageDescription verbosity cabalFile - buildResult <- onFailure InstallFailed $ do - setupWrapper ["install"] Nothing - return BuildOk - return [(packageId (packageDescription desc), buildResult)] - installRepoPackages :: Verbosity -> PackageDB -> [Repo] diff --git a/cabal-install/Main.hs b/cabal-install/Main.hs index 17bf8bb..8f5ff5d 100644 --- a/cabal-install/Main.hs +++ b/cabal-install/Main.hs @@ -123,6 +123,9 @@ configureAction flags extraArgs = do setupWrapper args Nothing installAction :: (Cabal.ConfigFlags, InstallFlags) -> [String] -> IO () +installAction (_,iflags) _ + | Cabal.fromFlag (installOnly iflags) = setupWrapper ["install"] Nothing + installAction (cflags,iflags) extraArgs = do pkgs <- either die return (parsePackageArgs extraArgs) configFile <- defaultConfigFile --FIXME _______________________________________________ Cvs-libraries mailing list [email protected] http://www.haskell.org/mailman/listinfo/cvs-libraries
