Repository : ssh://darcs.haskell.org//srv/darcs/packages/Cabal On branch : master
http://hackage.haskell.org/trac/ghc/changeset/6e7e53b833d3af02529b4209907dd3599428735b >--------------------------------------------------------------- commit 6e7e53b833d3af02529b4209907dd3599428735b Author: Duncan Coutts <[email protected]> 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? _______________________________________________ Cvs-libraries mailing list [email protected] http://www.haskell.org/mailman/listinfo/cvs-libraries
