[commit: Cabal] : Add DownloadFailed as a possible failure for installation (cd00bf2)
Ian Lynagh
igloo at earth.li
Fri Jun 24 02:00:01 CEST 2011
Repository : ssh://darcs.haskell.org//srv/darcs/packages/Cabal
On branch :
http://hackage.haskell.org/trac/ghc/changeset/cd00bf27940e413e61a7c531b3ec92a0fd2d8865
>---------------------------------------------------------------
commit cd00bf27940e413e61a7c531b3ec92a0fd2d8865
Author: Duncan Coutts <duncan at haskell.org>
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
More information about the Cvs-libraries
mailing list