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

Reply via email to