[commit: Cabal] master: Store detailed build logs. (29306b1)
Ian Lynagh
igloo at earth.li
Fri Jun 24 01:57:44 CEST 2011
Repository : ssh://darcs.haskell.org//srv/darcs/packages/Cabal
On branch : master
http://hackage.haskell.org/trac/ghc/changeset/29306b1d3e57bef4cf2df99cc532795d6cd7637a
>---------------------------------------------------------------
commit 29306b1d3e57bef4cf2df99cc532795d6cd7637a
Author: Lemmih <lemmih at gmail.com>
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.
--
More information about the Cvs-libraries
mailing list