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

Reply via email to