@@ -20,58 +20,89 @@ module Stack.Fetch
2020 , withCabalLoader
2121 ) where
2222
23- import qualified Codec.Archive.Tar as Tar
24- import qualified Codec.Archive.Tar.Check as Tar
25- import Codec.Compression.GZip (decompress )
23+ import qualified Codec.Archive.Tar as Tar
24+ import qualified Codec.Archive.Tar.Check as Tar
25+ import Codec.Compression.GZip (decompress )
2626import Control.Applicative
27- import Control.Concurrent.Async (Concurrently (.. ))
27+
28+ import Control.Concurrent.Async (Concurrently (.. ))
2829import Control.Concurrent.STM (TVar , atomically , modifyTVar ,
2930 newTVarIO , readTVar ,
3031 readTVarIO , writeTVar )
31- import Control.Exception ( Exception , SomeException ,
32+
3233 toException)
33- import Control.Monad (liftM , when , join , unless , void )
34- import Control.Monad.Catch (MonadThrow , throwM )
34+
35+
36+ import Control.Monad (liftM , forM )
37+ import Control.Monad (liftM , when , join , unless , void )
38+ import Control.Monad.Catch
39+
3540import Control.Monad.IO.Class
3641import Control.Monad.Logger
42+ import Control.Monad.Reader (asks )
43+ import Control.Monad.Reader (runReaderT ,asks )
44+
45+ put)
46+
3747import Control.Monad.Trans.Control
38- import Control.Monad.Reader (runReaderT ,asks )
39- import Crypto.Hash (SHA512 (.. ))
40- import Data.ByteString (ByteString )
41- import qualified Data.ByteString as S
42- import qualified Data.ByteString.Char8 as C8
43- import qualified Data.ByteString.Lazy as L
44- import Data.Either (partitionEithers )
45- import qualified Data.Foldable as F
46- import Data.Function (fix )
47- import Data.List (intercalate )
48- import Data.Map (Map )
49- import qualified Data.Map as Map
50- import Data.Maybe (maybeToList )
51- import Data.Monoid ((<>) )
52- import Data.Set (Set )
53- import qualified Data.Set as Set
54- import qualified Data.Text as T
55- import qualified Data.Text.IO as T
56- import Data.Text.Encoding (decodeUtf8 )
57- import Data.Typeable (Typeable )
58- import Data.Word (Word64 )
48+
49+ import Crypto.Hash (SHA512 (.. ))
50+
51+
52+
53+ import Data.ByteString (ByteString )
54+ import qualified Data.ByteString as S
55+ import qualified Data.ByteString.Char8 as C8
56+
57+ import qualified Data.ByteString.Lazy as L
58+ import Data.Either (partitionEithers )
59+ import qualified Data.Foldable as F
60+ import Data.Function (fix )
61+
62+
63+
64+ import Data.List (intercalate )
65+
66+ import Data.Map (Map )
67+ import qualified Data.Map as Map
68+
69+ import Data.Maybe (maybeToList )
70+ import Data.Monoid ((<>) )
71+ import Data.Set (Set )
72+ import qualified Data.Set as Set
73+
74+ import qualified Data.Text as T
75+ import Data.Text.Encoding (decodeUtf8 )
76+ import qualified Data.Text.IO as T
77+
78+
79+ import Data.Typeable (Typeable )
80+ import Data.Word (Word64 )
81+
82+
83+ flagDefault, flagManual,
84+ flagName, genPackageFlags,
85+ executables, exeName, library, libBuildInfo, buildable)
5986import Network.HTTP.Download
87+ import Path
6088import Prelude -- Fix AMP warning
89+
90+ import Stack.GhcPkg
91+
6192import Stack.PackageIndex
6293import Stack.Types
63-
64- import Path
6594import System.Directory (canonicalizePath ,
6695 createDirectoryIfMissing ,
6796 doesDirectoryExist ,
6897 renameDirectory )
69- import System.FilePath ((<.>) )
70- import qualified System.FilePath as FP
98+
99+ import System.FilePath ((<.>) )
100+
101+ import qualified System.FilePath as FP
71102import System.IO (IOMode (ReadMode ),
72103 SeekMode (AbsoluteSeek ),
73104 hSeek , withBinaryFile )
74- import System.Process.Read ( EnvOverride )
105+
75106
76107data FetchException
77108 = Couldn'tReadIndexTarball FilePath Tar. FormatError
@@ -338,26 +369,6 @@ fetchPackages mdistDir toFetchAll = do
338369 -- TODO: logInfo
339370 liftIO $ T. putStrLn $ packageIdentifierText ident <> " : downloading"
340371 _ <- verifiedDownload downloadReq destpath progressSink
341- errMay <- liftIO $ do
342- (flip runReaderT man (verifiedDownload downloadReq destpath progressSink) >> return Nothing )
343- `catch` \ e -> case e of
344- WrongContentLength _ actual -> return $ Just $ InvalidDownloadSize
345- { _idsUrl = tfUrl toFetch
346- , _idsExpected = fromMaybe (error " fetchPackagesImpossible cl" ) (tfSize toFetch)
347- , _idsTotalDownloaded = read (show actual) -- TODO(danburton): something better than this
348- }
349- WrongStreamLength _ actual -> return $ Just $ InvalidDownloadSize
350- { _idsUrl = tfUrl toFetch
351- , _idsExpected = fromMaybe (error " fetchPackagesImpossible sl" ) (tfSize toFetch)
352- , _idsTotalDownloaded = fromIntegral actual
353- }
354- WrongDigest _ _ actual -> return $ Just $ InvalidSha512
355- { _ihUrl = tfUrl toFetch
356- , _ihExpected = fromMaybe (error " fetchPackagesImpossible dg" ) (tfSHA512 toFetch)
357- , _ihActual = actual
358- }
359- maybe (return () ) throwM errMay
360- >>>>>>> Simplify output messages, leaving details in - v
361372
362373 let fp = toFilePath destpath
363374 -- unlessM (liftIO (doesFileExist fp)) $ do
0 commit comments