Repository : ssh://darcs.haskell.org//srv/darcs/packages/Cabal On branch : master
http://hackage.haskell.org/trac/ghc/changeset/29306b1d3e57bef4cf2df99cc532795d6cd7637a >--------------------------------------------------------------- commit 29306b1d3e57bef4cf2df99cc532795d6cd7637a Author: Lemmih <[email protected]> Date: Fri Aug 8 15:07:06 2008 +0000 Store detailed build logs. >--------------------------------------------------------------- cabal-install/Distribution/Client/Install.hs | 24 ++++++++++++++++++++---- 1 files changed, 20 insertions(+), 4 deletions(-) diff --git a/cabal-install/Distribution/Client/Install.hs b/cabal-install/Distribution/Client/Install.hs index 6430639..71cb05b 100644 --- a/cabal-install/Distribution/Client/Install.hs +++ b/cabal-install/Distribution/Client/Install.hs @@ -22,7 +22,7 @@ import Data.Maybe import Control.Exception as Exception ( handle, Exception ) import Control.Monad - ( when, unless ) + ( when, unless, forM_ ) import System.Directory ( getTemporaryDirectory, doesFileExist, createDirectoryIfMissing ) import System.FilePath @@ -43,15 +43,16 @@ import Distribution.Client.InstallPlan (InstallPlan) import Distribution.Client.Setup ( InstallFlags(..), configureCommand, filterConfigureFlags ) import Distribution.Client.Config - ( defaultLogsDir ) + ( defaultLogsDir, defaultCabalDir ) import Distribution.Client.Tar (extractTarGzFile) import Distribution.Client.Types as Available ( UnresolvedDependency(..), AvailablePackage(..) - , AvailablePackageSource(..), Repo, ConfiguredPackage(..) + , AvailablePackageSource(..), Repo(..), ConfiguredPackage(..) , BuildResult, BuildFailure(..), BuildSuccess(..) - , DocsResult(..), TestsResult(..) ) + , DocsResult(..), TestsResult(..), RemoteRepo(..) ) import Distribution.Client.SetupWrapper ( setupWrapper, SetupScriptOptions(..), defaultSetupScriptOptions ) +import qualified Distribution.Client.BuildReports.Anonymous as BuildReports import qualified Distribution.Client.BuildReports.Storage as BuildReports ( storeAnonymous, storeLocal, fromInstallPlan ) import qualified Distribution.Client.InstallSymlink as InstallSymlink @@ -166,6 +167,7 @@ installWithPlanner planner verbosity packageDB repos comp conf configFlags insta let buildReports = BuildReports.fromInstallPlan installPlan' BuildReports.storeAnonymous buildReports BuildReports.storeLocal buildReports + storeDetailedBuildReports logsDir buildReports symlinkBinaries verbosity configFlags installFlags installPlan' printBuildFailures installPlan' @@ -201,6 +203,20 @@ installWithPlanner planner verbosity packageDB repos comp conf configFlags insta libVersion = Cabal.flagToMaybe (installCabalVersion installFlags) } +storeDetailedBuildReports :: FilePath -> [(BuildReports.BuildReport, Repo)] -> IO () +storeDetailedBuildReports logsDir reports + = forM_ reports $ \(report,repo) -> + do buildLog <- readFile (logsDir </> display (BuildReports.package report) <.> "log") + case repoKind repo of + Left remoteRepo + -> do dotCabal <- defaultCabalDir + let destDir = dotCabal </> "reports" </> remoteRepoName remoteRepo + dest = destDir </> display (BuildReports.package report) <.> "log" + createDirectoryIfMissing True destDir -- FIXME + writeFile dest (show (BuildReports.show report, buildLog)) + Right{} -> return () + + -- | Make an 'InstallPlan' for the unpacked package in the current directory, -- and all its dependencies. -- _______________________________________________ Cvs-libraries mailing list [email protected] http://www.haskell.org/mailman/listinfo/cvs-libraries
