[commit: Cabal] master: Handle unpacking failures slightly more gracefully (bd54816)
Ian Lynagh
igloo at earth.li
Fri Jun 24 01:50:44 CEST 2011
Repository : ssh://darcs.haskell.org//srv/darcs/packages/Cabal
On branch : master
http://hackage.haskell.org/trac/ghc/changeset/bd548169d790714348901791bf7a94b0496e264a
>---------------------------------------------------------------
commit bd548169d790714348901791bf7a94b0496e264a
Author: Duncan Coutts <duncan at haskell.org>
Date: Fri Feb 22 00:27:48 2008 +0000
Handle unpacking failures slightly more gracefully
And note problem #246 about unpacking tar files with links
>---------------------------------------------------------------
cabal-install/Hackage/Install.hs | 3 +++
cabal-install/Hackage/Tar.hs | 4 +++-
2 files changed, 6 insertions(+), 1 deletions(-)
diff --git a/cabal-install/Hackage/Install.hs b/cabal-install/Hackage/Install.hs
index a392e79..334cb17 100644
--- a/cabal-install/Hackage/Install.hs
+++ b/cabal-install/Hackage/Install.hs
@@ -44,6 +44,7 @@ import Distribution.Simple.Utils as Utils (notice, info, debug, die)
import Distribution.Verbosity (Verbosity)
data BuildResult = DependentFailed PackageIdentifier
+ | UnpackFailed
| ConfigureFailed
| BuildFailed
| InstallFailed
@@ -69,6 +70,7 @@ install verbosity packageDB repos comp conf configFlags deps = do
[ showPackageId pkgid ++ case reason of
DependentFailed pkgid' -> " depends on " ++ showPackageId pkgid'
++ " which failed to install."
+ UnpackFailed -> " failed while unpacking the package."
ConfigureFailed -> " failed during the configure step."
BuildFailed -> " failed during the building phase."
InstallFailed -> " failed during the final install step."
@@ -194,6 +196,7 @@ installPkg verbosity configFlags pkg flags
Cabal.configConfigurationsFlags =
Cabal.configConfigurationsFlags configFlags ++ flags }
installUnpackedPkg verbosity configFlags' (Just path))
+ `catch` \_ -> return UnpackFailed
installUnpackedPkg :: Verbosity
-> Cabal.ConfigFlags -- ^ Arguments for this package
diff --git a/cabal-install/Hackage/Tar.hs b/cabal-install/Hackage/Tar.hs
index a7ab5e1..3420eb1 100644
--- a/cabal-install/Hackage/Tar.hs
+++ b/cabal-install/Hackage/Tar.hs
@@ -63,7 +63,9 @@ extractEntry mdir hdr cnt
case tarFileType hdr of
TarNormalFile -> BS.writeFile path cnt >> setPerms
TarHardLink -> copyLinked >> setPerms
- TarSymbolicLink -> copyLinked
+ TarSymbolicLink -> copyLinked --FIXME: what if the other file has not
+ --been unpacked yet? Perhaps collect all
+ --links and do them at the end.
TarDirectory -> createDirectoryIfMissing False path >> setPerms
TarOther _ -> return () -- FIXME: warning?
More information about the Cvs-libraries
mailing list