Repository : ssh://darcs.haskell.org//srv/darcs/packages/Cabal On branch :
http://hackage.haskell.org/trac/ghc/changeset/cd00bf27940e413e61a7c531b3ec92a0fd2d8865 >--------------------------------------------------------------- commit cd00bf27940e413e61a7c531b3ec92a0fd2d8865 Author: Duncan Coutts <[email protected]> Date: Tue Oct 7 23:04:18 2008 +0000 Add DownloadFailed as a possible failure for installation Should now be caught during installing a bunch of packages and not cause immediate overall failure. It should instead be treated like any other package build failure and be reported at the end and only affect other dependent builds. >--------------------------------------------------------------- .../Distribution/Client/BuildReports/Anonymous.hs | 1 + cabal-install/Distribution/Client/Install.hs | 31 +++++++++++--------- cabal-install/Distribution/Client/Types.hs | 1 + 3 files changed, 19 insertions(+), 14 deletions(-) diff --git a/cabal-install/Distribution/Client/BuildReports/Anonymous.hs b/cabal-install/Distribution/Client/BuildReports/Anonymous.hs index 0c934f7..28f4b93 100644 --- a/cabal-install/Distribution/Client/BuildReports/Anonymous.hs +++ b/cabal-install/Distribution/Client/BuildReports/Anonymous.hs @@ -137,6 +137,7 @@ new os' arch' comp (ConfiguredPackage pkg flags deps) result = where convertInstallOutcome = case result of Left (BR.DependentFailed p) -> DependencyFailed p + Left (BR.DownloadFailed _) -> DownloadFailed Left (BR.UnpackFailed _) -> UnpackFailed Left (BR.ConfigureFailed _) -> ConfigureFailed Left (BR.BuildFailed _) -> BuildFailed diff --git a/cabal-install/Distribution/Client/Install.hs b/cabal-install/Distribution/Client/Install.hs index b5b69ec..6d9ce58 100644 --- a/cabal-install/Distribution/Client/Install.hs +++ b/cabal-install/Distribution/Client/Install.hs @@ -385,6 +385,7 @@ printBuildFailures plan = printFailureReason reason = case reason of DependentFailed pkgid -> " depends on " ++ display pkgid ++ " which failed to install." + DownloadFailed _ -> " failed while downloading the package." UnpackFailed e -> " failed while unpacking the package." ++ " The exception was:\n " ++ show e ConfigureFailed e -> " failed during the configure step." @@ -447,20 +448,22 @@ installAvailablePackage installAvailablePackage _ _ LocalUnpackedPackage installPkg = installPkg Nothing -installAvailablePackage verbosity pkgid (RepoTarballPackage repo) installPkg = do - pkgPath <- fetchPackage verbosity repo pkgid - tmp <- getTemporaryDirectory - let tmpDirPath = tmp </> ("TMP" ++ display pkgid) - path = tmpDirPath </> display pkgid - onFailure UnpackFailed $ withTempDirectory verbosity tmpDirPath $ do - info verbosity $ "Extracting " ++ pkgPath ++ " to " ++ tmpDirPath ++ "..." - extractTarGzFile tmpDirPath pkgPath - let descFilePath = tmpDirPath </> display pkgid - </> display (packageName pkgid) <.> "cabal" - exists <- doesFileExist descFilePath - when (not exists) $ - die $ "Package .cabal file not found: " ++ show descFilePath - installPkg (Just path) +installAvailablePackage verbosity pkgid (RepoTarballPackage repo) installPkg = + onFailure DownloadFailed $ do + pkgPath <- fetchPackage verbosity repo pkgid + tmp <- getTemporaryDirectory + let tmpDirPath = tmp </> ("TMP" ++ display pkgid) + path = tmpDirPath </> display pkgid + onFailure UnpackFailed $ withTempDirectory verbosity tmpDirPath $ do + info verbosity $ "Extracting " ++ pkgPath + ++ " to " ++ tmpDirPath ++ "..." + extractTarGzFile tmpDirPath pkgPath + let descFilePath = tmpDirPath </> display pkgid + </> display (packageName pkgid) <.> "cabal" + exists <- doesFileExist descFilePath + when (not exists) $ + die $ "Package .cabal file not found: " ++ show descFilePath + installPkg (Just path) installUnpackedPackage :: Verbosity -> SetupScriptOptions diff --git a/cabal-install/Distribution/Client/Types.hs b/cabal-install/Distribution/Client/Types.hs index 7d84061..cce2346 100644 --- a/cabal-install/Distribution/Client/Types.hs +++ b/cabal-install/Distribution/Client/Types.hs @@ -112,6 +112,7 @@ data UnresolvedDependency type BuildResult = Either BuildFailure BuildSuccess data BuildFailure = DependentFailed PackageIdentifier + | DownloadFailed Exception | UnpackFailed Exception | ConfigureFailed Exception | BuildFailed Exception _______________________________________________ Cvs-libraries mailing list [email protected] http://www.haskell.org/mailman/listinfo/cvs-libraries
