mirror of
https://github.com/commercialhaskell/stackage.git
synced 2026-01-26 14:11:57 +01:00
parent
b9dfbd45f0
commit
5d3b6d2d4f
@ -356,33 +356,12 @@ defaultStablePackages ghcVer requireHP = unPackageMap $ execWriter $ do
|
|||||||
-- https://github.com/fpco/stackage/issues/200
|
-- https://github.com/fpco/stackage/issues/200
|
||||||
addRange "Michael Snoyman" "hspec" "< 1.9"
|
addRange "Michael Snoyman" "hspec" "< 1.9"
|
||||||
|
|
||||||
-- https://github.com/fpco/stackage/issues/202
|
|
||||||
addRange "Michael Snoyman" "case-insensitive" "< 1.2"
|
|
||||||
addRange "Michael Snoyman" "xml-conduit" "< 1.2"
|
|
||||||
|
|
||||||
-- https://github.com/fpco/stackage/issues/203
|
|
||||||
addRange "Michael Snoyman" "exceptions" "< 0.4"
|
|
||||||
|
|
||||||
-- https://github.com/fpco/stackage/issues/204
|
-- https://github.com/fpco/stackage/issues/204
|
||||||
addRange "Michael Snoyman" "intervals" "< 0.5"
|
addRange "Michael Snoyman" "intervals" "< 0.5"
|
||||||
|
|
||||||
-- https://github.com/fpco/stackage/issues/205
|
-- https://github.com/fpco/stackage/issues/205
|
||||||
addRange "Michael Snoyman" "hastache" "< 0.6"
|
addRange "Michael Snoyman" "hastache" "< 0.6"
|
||||||
|
|
||||||
-- https://github.com/fpco/stackage/issues/206
|
|
||||||
addRange "Michael Snoyman" "conduit" "< 1.1"
|
|
||||||
addRange "Michael Snoyman" "conduit-extra" "< 1.1"
|
|
||||||
addRange "Michael Snoyman" "attoparsec-conduit" "< 1.1"
|
|
||||||
addRange "Michael Snoyman" "resourcet" "< 1.1"
|
|
||||||
addRange "Michael Snoyman" "blaze-builder-conduit" "< 1.1"
|
|
||||||
addRange "Michael Snoyman" "zlib-conduit" "< 1.1"
|
|
||||||
addRange "Michael Snoyman" "network-conduit" "< 1.1"
|
|
||||||
addRange "Michael Snoyman" "network-conduit-tls" "< 1.1"
|
|
||||||
addRange "Michael Snoyman" "http-conduit" "< 2.1"
|
|
||||||
addRange "Michael Snoyman" "http-client" "< 0.3"
|
|
||||||
addRange "Michael Snoyman" "http-client-conduit" "< 0.3"
|
|
||||||
addRange "Michael Snoyman" "http-client-multipart" "< 0.3"
|
|
||||||
|
|
||||||
-- https://github.com/ozataman/csv-conduit/issues/10
|
-- https://github.com/ozataman/csv-conduit/issues/10
|
||||||
addRange "Michael Snoyman" "csv-conduit" "< 0.6.2 || > 0.6.2"
|
addRange "Michael Snoyman" "csv-conduit" "< 0.6.2 || > 0.6.2"
|
||||||
|
|
||||||
|
|||||||
@ -1,14 +1,635 @@
|
|||||||
|
diff -ru orig/Aws/Aws.hs new/Aws/Aws.hs
|
||||||
|
--- orig/Aws/Aws.hs 2014-04-03 08:17:21.058394778 +0300
|
||||||
|
+++ new/Aws/Aws.hs 2014-04-03 08:17:20.000000000 +0300
|
||||||
|
@@ -33,7 +33,6 @@
|
||||||
|
import Control.Monad.IO.Class
|
||||||
|
import Control.Monad.Trans
|
||||||
|
import Control.Monad.Trans.Resource
|
||||||
|
-import Data.Attempt (Attempt(Success, Failure))
|
||||||
|
import qualified Data.ByteString as B
|
||||||
|
import qualified Data.CaseInsensitive as CI
|
||||||
|
import qualified Data.Conduit as C
|
||||||
|
@@ -185,11 +184,8 @@
|
||||||
|
unsafeAws cfg scfg manager request = do
|
||||||
|
metadataRef <- liftIO $ newIORef mempty
|
||||||
|
|
||||||
|
- let catchAll :: ResourceT IO a -> ResourceT IO (Attempt a)
|
||||||
|
- catchAll = E.handle (return . failure') . fmap Success
|
||||||
|
-
|
||||||
|
- failure' :: E.SomeException -> Attempt a
|
||||||
|
- failure' = Failure
|
||||||
|
+ let catchAll :: ResourceT IO a -> ResourceT IO (Either E.SomeException a)
|
||||||
|
+ catchAll = E.handle (return . Left) . fmap Right
|
||||||
|
|
||||||
|
resp <- catchAll $
|
||||||
|
unsafeAwsRef cfg scfg manager metadataRef request
|
||||||
|
@@ -268,8 +264,8 @@
|
||||||
|
where go request = do resp <- lift $ aws cfg scfg manager request
|
||||||
|
C.yield resp
|
||||||
|
case responseResult resp of
|
||||||
|
- Failure _ -> return ()
|
||||||
|
- Success x ->
|
||||||
|
+ Left _ -> return ()
|
||||||
|
+ Right x ->
|
||||||
|
case nextIteratedRequest request x of
|
||||||
|
Nothing -> return ()
|
||||||
|
Just nextRequest -> go nextRequest
|
||||||
|
diff -ru orig/Aws/Core.hs new/Aws/Core.hs
|
||||||
|
--- orig/Aws/Core.hs 2014-04-03 08:17:21.058394778 +0300
|
||||||
|
+++ new/Aws/Core.hs 2014-04-03 08:17:20.000000000 +0300
|
||||||
|
@@ -89,13 +89,12 @@
|
||||||
|
import Control.Applicative
|
||||||
|
import Control.Arrow
|
||||||
|
import qualified Control.Exception as E
|
||||||
|
-import qualified Control.Failure as F
|
||||||
|
import Control.Monad
|
||||||
|
import Control.Monad.IO.Class
|
||||||
|
+import Control.Monad.Trans.Resource (ResourceT, MonadThrow (throwM))
|
||||||
|
import qualified Crypto.Classes as Crypto
|
||||||
|
import qualified Crypto.HMAC as HMAC
|
||||||
|
import Crypto.Hash.CryptoAPI (MD5, SHA1, SHA256, hash')
|
||||||
|
-import Data.Attempt (Attempt(..), FromAttempt(..))
|
||||||
|
import Data.ByteString (ByteString)
|
||||||
|
import qualified Data.ByteString as B
|
||||||
|
import qualified Data.ByteString.Base16 as Base16
|
||||||
|
@@ -104,7 +103,7 @@
|
||||||
|
import qualified Data.ByteString.Lazy as L
|
||||||
|
import qualified Data.ByteString.UTF8 as BU
|
||||||
|
import Data.Char
|
||||||
|
-import Data.Conduit (ResourceT, ($$+-))
|
||||||
|
+import Data.Conduit (($$+-))
|
||||||
|
import qualified Data.Conduit as C
|
||||||
|
import qualified Data.Conduit.List as CL
|
||||||
|
import Data.Default (def)
|
||||||
|
@@ -137,12 +136,12 @@
|
||||||
|
--
|
||||||
|
-- Response forms a Writer-like monad.
|
||||||
|
data Response m a = Response { responseMetadata :: m
|
||||||
|
- , responseResult :: Attempt a }
|
||||||
|
+ , responseResult :: Either E.SomeException a }
|
||||||
|
deriving (Show, Functor)
|
||||||
|
|
||||||
|
-- | Read a response result (if it's a success response, fail otherwise).
|
||||||
|
-readResponse :: FromAttempt f => Response m a -> f a
|
||||||
|
-readResponse = fromAttempt . responseResult
|
||||||
|
+readResponse :: MonadThrow n => Response m a -> n a
|
||||||
|
+readResponse = either throwM return . responseResult
|
||||||
|
|
||||||
|
-- | Read a response result (if it's a success response, fail otherwise). In MonadIO.
|
||||||
|
readResponseIO :: MonadIO io => Response m a -> io a
|
||||||
|
@@ -159,13 +158,13 @@
|
||||||
|
--multiResponse :: Monoid m => Response m a -> Response [m] a ->
|
||||||
|
|
||||||
|
instance Monoid m => Monad (Response m) where
|
||||||
|
- return x = Response mempty (Success x)
|
||||||
|
- Response m1 (Failure e) >>= _ = Response m1 (Failure e)
|
||||||
|
- Response m1 (Success x) >>= f = let Response m2 y = f x
|
||||||
|
+ return x = Response mempty (Right x)
|
||||||
|
+ Response m1 (Left e) >>= _ = Response m1 (Left e)
|
||||||
|
+ Response m1 (Right x) >>= f = let Response m2 y = f x
|
||||||
|
in Response (m1 `mappend` m2) y -- currently using First-semantics, Last SHOULD work too
|
||||||
|
|
||||||
|
-instance (Monoid m, E.Exception e) => F.Failure e (Response m) where
|
||||||
|
- failure e = Response mempty (F.failure e)
|
||||||
|
+instance Monoid m => MonadThrow (Response m) where
|
||||||
|
+ throwM e = Response mempty (throwM e)
|
||||||
|
|
||||||
|
-- | Add metadata to an 'IORef' (using 'mappend').
|
||||||
|
tellMetadataRef :: Monoid m => IORef m -> m -> IO ()
|
||||||
|
@@ -696,24 +695,24 @@
|
||||||
|
elCont name = laxElement name &/ content &| T.unpack
|
||||||
|
|
||||||
|
-- | Extract the first element from a parser result list, and throw an 'XmlException' if the list is empty.
|
||||||
|
-force :: F.Failure XmlException m => String -> [a] -> m a
|
||||||
|
+force :: MonadThrow m => String -> [a] -> m a
|
||||||
|
force = Cu.force . XmlException
|
||||||
|
|
||||||
|
-- | Extract the first element from a monadic parser result list, and throw an 'XmlException' if the list is empty.
|
||||||
|
-forceM :: F.Failure XmlException m => String -> [m a] -> m a
|
||||||
|
+forceM :: MonadThrow m => String -> [m a] -> m a
|
||||||
|
forceM = Cu.forceM . XmlException
|
||||||
|
|
||||||
|
-- | Read an integer from a 'T.Text', throwing an 'XmlException' on failure.
|
||||||
|
-textReadInt :: (F.Failure XmlException m, Num a) => T.Text -> m a
|
||||||
|
+textReadInt :: (MonadThrow m, Num a) => T.Text -> m a
|
||||||
|
textReadInt s = case reads $ T.unpack s of
|
||||||
|
[(n,"")] -> return $ fromInteger n
|
||||||
|
- _ -> F.failure $ XmlException "Invalid Integer"
|
||||||
|
+ _ -> throwM $ XmlException "Invalid Integer"
|
||||||
|
|
||||||
|
-- | Read an integer from a 'String', throwing an 'XmlException' on failure.
|
||||||
|
-readInt :: (F.Failure XmlException m, Num a) => String -> m a
|
||||||
|
+readInt :: (MonadThrow m, Num a) => String -> m a
|
||||||
|
readInt s = case reads s of
|
||||||
|
[(n,"")] -> return $ fromInteger n
|
||||||
|
- _ -> F.failure $ XmlException "Invalid Integer"
|
||||||
|
+ _ -> throwM $ XmlException "Invalid Integer"
|
||||||
|
|
||||||
|
-- | Create a complete 'HTTPResponseConsumer' from a simple function that takes a 'Cu.Cursor' to XML in the response
|
||||||
|
-- body.
|
||||||
|
@@ -731,5 +730,5 @@
|
||||||
|
let Response metadata x = parse cursor
|
||||||
|
liftIO $ tellMetadataRef metadataRef metadata
|
||||||
|
case x of
|
||||||
|
- Failure err -> liftIO $ C.monadThrow err
|
||||||
|
- Success v -> return v
|
||||||
|
+ Left err -> liftIO $ throwM err
|
||||||
|
+ Right v -> return v
|
||||||
|
diff -ru orig/Aws/DynamoDb/Core.hs new/Aws/DynamoDb/Core.hs
|
||||||
|
--- orig/Aws/DynamoDb/Core.hs 2014-04-03 08:17:21.062394778 +0300
|
||||||
|
+++ new/Aws/DynamoDb/Core.hs 2014-04-03 08:17:20.000000000 +0300
|
||||||
|
@@ -2,6 +2,7 @@
|
||||||
|
|
||||||
|
import Aws.Core
|
||||||
|
import qualified Control.Exception as C
|
||||||
|
+import Control.Monad.Trans.Resource (throwM)
|
||||||
|
import Crypto.Hash.CryptoAPI (SHA256, hash)
|
||||||
|
import qualified Data.Aeson as A
|
||||||
|
import qualified Data.ByteString as B
|
||||||
|
@@ -125,5 +126,5 @@
|
||||||
|
(HTTP.Status{HTTP.statusCode=200}) -> do
|
||||||
|
case A.fromJSON val of
|
||||||
|
A.Success a -> return a
|
||||||
|
- A.Error err -> monadThrow $ DyError (HTTP.responseStatus resp) "" err
|
||||||
|
- _ -> monadThrow $ DyError (HTTP.responseStatus resp) "" (show val)
|
||||||
|
+ A.Error err -> throwM $ DyError (HTTP.responseStatus resp) "" err
|
||||||
|
+ _ -> throwM $ DyError (HTTP.responseStatus resp) "" (show val)
|
||||||
|
diff -ru orig/Aws/Ec2/InstanceMetadata.hs new/Aws/Ec2/InstanceMetadata.hs
|
||||||
|
--- orig/Aws/Ec2/InstanceMetadata.hs 2014-04-03 08:17:21.062394778 +0300
|
||||||
|
+++ new/Aws/Ec2/InstanceMetadata.hs 2014-04-03 08:17:20.000000000 +0300
|
||||||
|
@@ -2,8 +2,7 @@
|
||||||
|
|
||||||
|
import Control.Applicative
|
||||||
|
import Control.Exception
|
||||||
|
-import Control.Failure
|
||||||
|
-import Control.Monad.Trans.Resource
|
||||||
|
+import Control.Monad.Trans.Resource (throwM)
|
||||||
|
import qualified Data.ByteString.Lazy as L
|
||||||
|
import qualified Data.ByteString.Lazy.Char8 as B8
|
||||||
|
import Data.ByteString.Lazy.UTF8 as BU
|
||||||
|
@@ -16,19 +15,19 @@
|
||||||
|
|
||||||
|
instance Exception InstanceMetadataException
|
||||||
|
|
||||||
|
-getInstanceMetadata :: HTTP.Manager -> String -> String -> ResIO L.ByteString
|
||||||
|
+getInstanceMetadata :: HTTP.Manager -> String -> String -> IO L.ByteString
|
||||||
|
getInstanceMetadata mgr p x = do req <- HTTP.parseUrl ("http://169.254.169.254/" ++ p ++ '/' : x)
|
||||||
|
HTTP.responseBody <$> HTTP.httpLbs req mgr
|
||||||
|
|
||||||
|
-getInstanceMetadataListing :: HTTP.Manager -> String -> ResIO [String]
|
||||||
|
+getInstanceMetadataListing :: HTTP.Manager -> String -> IO [String]
|
||||||
|
getInstanceMetadataListing mgr p = map BU.toString . B8.split '\n' <$> getInstanceMetadata mgr p ""
|
||||||
|
|
||||||
|
-getInstanceMetadataFirst :: HTTP.Manager -> String -> ResIO L.ByteString
|
||||||
|
+getInstanceMetadataFirst :: HTTP.Manager -> String -> IO L.ByteString
|
||||||
|
getInstanceMetadataFirst mgr p = do listing <- getInstanceMetadataListing mgr p
|
||||||
|
case listing of
|
||||||
|
- [] -> failure (MetadataNotFound p)
|
||||||
|
+ [] -> throwM (MetadataNotFound p)
|
||||||
|
(x:_) -> getInstanceMetadata mgr p x
|
||||||
|
|
||||||
|
-getInstanceMetadataOrFirst :: HTTP.Manager -> String -> Maybe String -> ResIO L.ByteString
|
||||||
|
+getInstanceMetadataOrFirst :: HTTP.Manager -> String -> Maybe String -> IO L.ByteString
|
||||||
|
getInstanceMetadataOrFirst mgr p (Just x) = getInstanceMetadata mgr p x
|
||||||
|
getInstanceMetadataOrFirst mgr p Nothing = getInstanceMetadataFirst mgr p
|
||||||
|
diff -ru orig/Aws/Iam/Core.hs new/Aws/Iam/Core.hs
|
||||||
|
--- orig/Aws/Iam/Core.hs 2014-04-03 08:17:21.062394778 +0300
|
||||||
|
+++ new/Aws/Iam/Core.hs 2014-04-03 08:17:20.000000000 +0300
|
||||||
|
@@ -19,8 +19,8 @@
|
||||||
|
import qualified Blaze.ByteString.Builder as Blaze
|
||||||
|
import qualified Blaze.ByteString.Builder.Char8 as Blaze8
|
||||||
|
import Control.Exception (Exception)
|
||||||
|
-import qualified Control.Failure as F
|
||||||
|
import Control.Monad
|
||||||
|
+import Control.Monad.Trans.Resource (MonadThrow, throwM)
|
||||||
|
import Data.ByteString (ByteString)
|
||||||
|
import Data.IORef
|
||||||
|
import Data.List (intersperse, sort)
|
||||||
|
@@ -152,13 +152,13 @@
|
||||||
|
fromError cursor = do
|
||||||
|
errCode <- force "Missing Error Code" $ cursor $// elContent "Code"
|
||||||
|
errMsg <- force "Missing Error Message" $ cursor $// elContent "Message"
|
||||||
|
- F.failure $ IamError (HTTP.responseStatus resp) errCode errMsg
|
||||||
|
+ throwM $ IamError (HTTP.responseStatus resp) errCode errMsg
|
||||||
|
|
||||||
|
-- | Parses IAM @DateTime@ data type.
|
||||||
|
-parseDateTime :: (F.Failure XmlException m) => String -> m UTCTime
|
||||||
|
+parseDateTime :: MonadThrow m => String -> m UTCTime
|
||||||
|
parseDateTime x
|
||||||
|
= case parseTime defaultTimeLocale iso8601UtcDate x of
|
||||||
|
- Nothing -> F.failure $ XmlException $ "Invalid DateTime: " ++ x
|
||||||
|
+ Nothing -> throwM $ XmlException $ "Invalid DateTime: " ++ x
|
||||||
|
Just dt -> return dt
|
||||||
|
|
||||||
|
-- | The IAM @User@ data type.
|
||||||
|
@@ -180,7 +180,7 @@
|
||||||
|
deriving (Eq, Ord, Show, Typeable)
|
||||||
|
|
||||||
|
-- | Parses the IAM @User@ data type.
|
||||||
|
-parseUser :: (F.Failure XmlException m) => Cu.Cursor -> m User
|
||||||
|
+parseUser :: MonadThrow m => Cu.Cursor -> m User
|
||||||
|
parseUser cursor = do
|
||||||
|
userArn <- attr "Arn"
|
||||||
|
userCreateDate <- attr "CreateDate" >>= parseDateTime . Text.unpack
|
||||||
|
diff -ru orig/Aws/Iam/Internal.hs new/Aws/Iam/Internal.hs
|
||||||
|
--- orig/Aws/Iam/Internal.hs 2014-04-03 08:17:21.062394778 +0300
|
||||||
|
+++ new/Aws/Iam/Internal.hs 2014-04-03 08:17:20.000000000 +0300
|
||||||
|
@@ -15,8 +15,8 @@
|
||||||
|
import Aws.Iam.Core
|
||||||
|
import Control.Applicative
|
||||||
|
import Control.Arrow (second)
|
||||||
|
-import qualified Control.Failure as F
|
||||||
|
import Control.Monad
|
||||||
|
+import Control.Monad.Trans.Resource (MonadThrow)
|
||||||
|
import Data.ByteString (ByteString)
|
||||||
|
import Data.Maybe
|
||||||
|
import Data.Monoid ((<>))
|
||||||
|
@@ -62,7 +62,7 @@
|
||||||
|
-- | Reads and returns the @IsTruncated@ and @Marker@ attributes present in
|
||||||
|
-- all IAM data pagination responses.
|
||||||
|
markedIterResponse
|
||||||
|
- :: F.Failure XmlException m
|
||||||
|
+ :: MonadThrow m
|
||||||
|
=> Cu.Cursor
|
||||||
|
-> m (Bool, Maybe Text)
|
||||||
|
markedIterResponse cursor = do
|
||||||
|
diff -ru orig/Aws/S3/Commands/CopyObject.hs new/Aws/S3/Commands/CopyObject.hs
|
||||||
|
--- orig/Aws/S3/Commands/CopyObject.hs 2014-04-03 08:17:21.062394778 +0300
|
||||||
|
+++ new/Aws/S3/Commands/CopyObject.hs 2014-04-03 08:17:20.000000000 +0300
|
||||||
|
@@ -5,7 +5,7 @@
|
||||||
|
import Aws.S3.Core
|
||||||
|
import Control.Applicative
|
||||||
|
import Control.Arrow (second)
|
||||||
|
-import Control.Failure
|
||||||
|
+import Control.Monad.Trans.Resource (throwM)
|
||||||
|
import qualified Data.CaseInsensitive as CI
|
||||||
|
import Data.Maybe
|
||||||
|
import qualified Data.Text as T
|
||||||
|
@@ -93,7 +93,7 @@
|
||||||
|
return $ CopyObjectResponse vid lastMod etag
|
||||||
|
where parse el = do
|
||||||
|
let parseHttpDate' x = case parseTime defaultTimeLocale iso8601UtcDate x of
|
||||||
|
- Nothing -> failure $ XmlException ("Invalid Last-Modified " ++ x)
|
||||||
|
+ Nothing -> throwM $ XmlException ("Invalid Last-Modified " ++ x)
|
||||||
|
Just y -> return y
|
||||||
|
lastMod <- forceM "Missing Last-Modified" $ el $/ elContent "LastModified" &| (parseHttpDate' . T.unpack)
|
||||||
|
etag <- force "Missing ETag" $ el $/ elContent "ETag"
|
||||||
|
diff -ru orig/Aws/S3/Core.hs new/Aws/S3/Core.hs
|
||||||
|
--- orig/Aws/S3/Core.hs 2014-04-03 08:17:21.062394778 +0300
|
||||||
|
+++ new/Aws/S3/Core.hs 2014-04-03 08:17:20.000000000 +0300
|
||||||
|
@@ -5,8 +5,8 @@
|
||||||
|
import Control.Arrow ((***))
|
||||||
|
import Control.Monad
|
||||||
|
import Control.Monad.IO.Class
|
||||||
|
+import Control.Monad.Trans.Resource (MonadThrow, throwM)
|
||||||
|
import Crypto.Hash.CryptoAPI (MD5)
|
||||||
|
-import Data.Attempt (Attempt(..))
|
||||||
|
import Data.Conduit (($$+-))
|
||||||
|
import Data.Function
|
||||||
|
import Data.IORef
|
||||||
|
@@ -20,12 +20,10 @@
|
||||||
|
import qualified Blaze.ByteString.Builder as Blaze
|
||||||
|
import qualified Blaze.ByteString.Builder.Char8 as Blaze8
|
||||||
|
import qualified Control.Exception as C
|
||||||
|
-import qualified Control.Failure as F
|
||||||
|
import qualified Data.ByteString as B
|
||||||
|
import qualified Data.ByteString.Char8 as B8
|
||||||
|
import qualified Data.ByteString.Base64 as Base64
|
||||||
|
import qualified Data.CaseInsensitive as CI
|
||||||
|
-import qualified Data.Conduit as C
|
||||||
|
import qualified Data.Serialize as Serialize
|
||||||
|
import qualified Data.Text as T
|
||||||
|
import qualified Data.Text.Encoding as T
|
||||||
|
@@ -248,10 +246,10 @@
|
||||||
|
= do doc <- HTTP.responseBody resp $$+- XML.sinkDoc XML.def
|
||||||
|
let cursor = Cu.fromDocument doc
|
||||||
|
liftIO $ case parseError cursor of
|
||||||
|
- Success err -> C.monadThrow err
|
||||||
|
- Failure otherErr -> C.monadThrow otherErr
|
||||||
|
+ Right err -> throwM err
|
||||||
|
+ Left otherErr -> throwM otherErr
|
||||||
|
where
|
||||||
|
- parseError :: Cu.Cursor -> Attempt S3Error
|
||||||
|
+ parseError :: Cu.Cursor -> Either C.SomeException S3Error
|
||||||
|
parseError root = do code <- force "Missing error Code" $ root $/ elContent "Code"
|
||||||
|
message <- force "Missing error Message" $ root $/ elContent "Message"
|
||||||
|
let resource = listToMaybe $ root $/ elContent "Resource"
|
||||||
|
@@ -279,7 +277,7 @@
|
||||||
|
}
|
||||||
|
deriving (Show)
|
||||||
|
|
||||||
|
-parseUserInfo :: F.Failure XmlException m => Cu.Cursor -> m UserInfo
|
||||||
|
+parseUserInfo :: MonadThrow m => Cu.Cursor -> m UserInfo
|
||||||
|
parseUserInfo el = do id_ <- force "Missing user ID" $ el $/ elContent "ID"
|
||||||
|
displayName <- force "Missing user DisplayName" $ el $/ elContent "DisplayName"
|
||||||
|
return UserInfo { userId = id_, userDisplayName = displayName }
|
||||||
|
@@ -308,10 +306,10 @@
|
||||||
|
| ReducedRedundancy
|
||||||
|
deriving (Show)
|
||||||
|
|
||||||
|
-parseStorageClass :: F.Failure XmlException m => T.Text -> m StorageClass
|
||||||
|
+parseStorageClass :: MonadThrow m => T.Text -> m StorageClass
|
||||||
|
parseStorageClass "STANDARD" = return Standard
|
||||||
|
parseStorageClass "REDUCED_REDUNDANCY" = return ReducedRedundancy
|
||||||
|
-parseStorageClass s = F.failure . XmlException $ "Invalid Storage Class: " ++ T.unpack s
|
||||||
|
+parseStorageClass s = throwM . XmlException $ "Invalid Storage Class: " ++ T.unpack s
|
||||||
|
|
||||||
|
writeStorageClass :: StorageClass -> T.Text
|
||||||
|
writeStorageClass Standard = "STANDARD"
|
||||||
|
@@ -321,9 +319,9 @@
|
||||||
|
= AES256
|
||||||
|
deriving (Show)
|
||||||
|
|
||||||
|
-parseServerSideEncryption :: F.Failure XmlException m => T.Text -> m ServerSideEncryption
|
||||||
|
+parseServerSideEncryption :: MonadThrow m => T.Text -> m ServerSideEncryption
|
||||||
|
parseServerSideEncryption "AES256" = return AES256
|
||||||
|
-parseServerSideEncryption s = F.failure . XmlException $ "Invalid Server Side Encryption: " ++ T.unpack s
|
||||||
|
+parseServerSideEncryption s = throwM . XmlException $ "Invalid Server Side Encryption: " ++ T.unpack s
|
||||||
|
|
||||||
|
writeServerSideEncryption :: ServerSideEncryption -> T.Text
|
||||||
|
writeServerSideEncryption AES256 = "AES256"
|
||||||
|
@@ -358,11 +356,11 @@
|
||||||
|
}
|
||||||
|
deriving (Show)
|
||||||
|
|
||||||
|
-parseObjectInfo :: F.Failure XmlException m => Cu.Cursor -> m ObjectInfo
|
||||||
|
+parseObjectInfo :: MonadThrow m => Cu.Cursor -> m ObjectInfo
|
||||||
|
parseObjectInfo el
|
||||||
|
= do key <- force "Missing object Key" $ el $/ elContent "Key"
|
||||||
|
let time s = case parseTime defaultTimeLocale "%Y-%m-%dT%H:%M:%S%QZ" $ T.unpack s of
|
||||||
|
- Nothing -> F.failure $ XmlException "Invalid time"
|
||||||
|
+ Nothing -> throwM $ XmlException "Invalid time"
|
||||||
|
Just v -> return v
|
||||||
|
lastModified <- forceM "Missing object LastModified" $ el $/ elContent "LastModified" &| time
|
||||||
|
eTag <- force "Missing object ETag" $ el $/ elContent "ETag"
|
||||||
|
@@ -392,7 +390,7 @@
|
||||||
|
}
|
||||||
|
deriving (Show)
|
||||||
|
|
||||||
|
-parseObjectMetadata :: F.Failure HeaderException m => HTTP.ResponseHeaders -> m ObjectMetadata
|
||||||
|
+parseObjectMetadata :: MonadThrow m => HTTP.ResponseHeaders -> m ObjectMetadata
|
||||||
|
parseObjectMetadata h = ObjectMetadata
|
||||||
|
`liftM` deleteMarker
|
||||||
|
`ap` etag
|
||||||
|
@@ -406,15 +404,15 @@
|
||||||
|
Nothing -> return False
|
||||||
|
Just "true" -> return True
|
||||||
|
Just "false" -> return False
|
||||||
|
- Just x -> F.failure $ HeaderException ("Invalid x-amz-delete-marker " ++ x)
|
||||||
|
+ Just x -> throwM $ HeaderException ("Invalid x-amz-delete-marker " ++ x)
|
||||||
|
etag = case T.decodeUtf8 `fmap` lookup "ETag" h of
|
||||||
|
Just x -> return x
|
||||||
|
- Nothing -> F.failure $ HeaderException "ETag missing"
|
||||||
|
+ Nothing -> throwM $ HeaderException "ETag missing"
|
||||||
|
lastModified = case B8.unpack `fmap` lookup "Last-Modified" h of
|
||||||
|
Just ts -> case parseHttpDate ts of
|
||||||
|
Just t -> return t
|
||||||
|
- Nothing -> F.failure $ HeaderException ("Invalid Last-Modified: " ++ ts)
|
||||||
|
- Nothing -> F.failure $ HeaderException "Last-Modified missing"
|
||||||
|
+ Nothing -> throwM $ HeaderException ("Invalid Last-Modified: " ++ ts)
|
||||||
|
+ Nothing -> throwM $ HeaderException "Last-Modified missing"
|
||||||
|
versionId = T.decodeUtf8 `fmap` lookup "x-amz-version-id" h
|
||||||
|
-- expiration = return undefined
|
||||||
|
userMetadata = flip mapMaybe ht $
|
||||||
|
diff -ru orig/Aws/Ses/Core.hs new/Aws/Ses/Core.hs
|
||||||
|
--- orig/Aws/Ses/Core.hs 2014-04-03 08:17:21.062394778 +0300
|
||||||
|
+++ new/Aws/Ses/Core.hs 2014-04-03 08:17:20.000000000 +0300
|
||||||
|
@@ -22,8 +22,8 @@
|
||||||
|
import qualified Blaze.ByteString.Builder as Blaze
|
||||||
|
import qualified Blaze.ByteString.Builder.Char8 as Blaze8
|
||||||
|
import qualified Control.Exception as C
|
||||||
|
-import qualified Control.Failure as F
|
||||||
|
import Control.Monad (mplus)
|
||||||
|
+import Control.Monad.Trans.Resource (throwM)
|
||||||
|
import qualified Data.ByteString as B
|
||||||
|
import qualified Data.ByteString.Base64 as B64
|
||||||
|
import Data.ByteString.Char8 ({-IsString-})
|
||||||
|
@@ -128,7 +128,7 @@
|
||||||
|
fromError cursor = do
|
||||||
|
errCode <- force "Missing Error Code" $ cursor $// elContent "Code"
|
||||||
|
errMessage <- force "Missing Error Message" $ cursor $// elContent "Message"
|
||||||
|
- F.failure $ SesError (HTTP.responseStatus resp) errCode errMessage
|
||||||
|
+ throwM $ SesError (HTTP.responseStatus resp) errCode errMessage
|
||||||
|
|
||||||
|
class SesAsQuery a where
|
||||||
|
-- | Write a data type as a list of query parameters.
|
||||||
|
diff -ru orig/Aws/SimpleDb/Core.hs new/Aws/SimpleDb/Core.hs
|
||||||
|
--- orig/Aws/SimpleDb/Core.hs 2014-04-03 08:17:21.066394778 +0300
|
||||||
|
+++ new/Aws/SimpleDb/Core.hs 2014-04-03 08:17:20.000000000 +0300
|
||||||
|
@@ -4,8 +4,8 @@
|
||||||
|
import qualified Blaze.ByteString.Builder as Blaze
|
||||||
|
import qualified Blaze.ByteString.Builder.Char8 as Blaze8
|
||||||
|
import qualified Control.Exception as C
|
||||||
|
-import qualified Control.Failure as F
|
||||||
|
import Control.Monad
|
||||||
|
+import Control.Monad.Trans.Resource (MonadThrow, throwM)
|
||||||
|
import qualified Data.ByteString as B
|
||||||
|
import qualified Data.ByteString.Base64 as Base64
|
||||||
|
import Data.IORef
|
||||||
|
@@ -149,16 +149,16 @@
|
||||||
|
(err:_) -> fromError err
|
||||||
|
fromError cursor = do errCode <- force "Missing Error Code" $ cursor $// elCont "Code"
|
||||||
|
errMessage <- force "Missing Error Message" $ cursor $// elCont "Message"
|
||||||
|
- F.failure $ SdbError (HTTP.responseStatus resp) errCode errMessage
|
||||||
|
+ throwM $ SdbError (HTTP.responseStatus resp) errCode errMessage
|
||||||
|
|
||||||
|
class SdbFromResponse a where
|
||||||
|
sdbFromResponse :: Cu.Cursor -> Response SdbMetadata a
|
||||||
|
|
||||||
|
-sdbCheckResponseType :: F.Failure XmlException m => a -> T.Text -> Cu.Cursor -> m a
|
||||||
|
+sdbCheckResponseType :: MonadThrow m => a -> T.Text -> Cu.Cursor -> m a
|
||||||
|
sdbCheckResponseType a n c = do _ <- force ("Expected response type " ++ T.unpack n) (Cu.laxElement n c)
|
||||||
|
return a
|
||||||
|
|
||||||
|
-decodeBase64 :: F.Failure XmlException m => Cu.Cursor -> m T.Text
|
||||||
|
+decodeBase64 :: MonadThrow m => Cu.Cursor -> m T.Text
|
||||||
|
decodeBase64 cursor =
|
||||||
|
let encoded = T.concat $ cursor $/ Cu.content
|
||||||
|
encoding = listToMaybe $ cursor $| Cu.laxAttribute "encoding" &| T.toCaseFold
|
||||||
|
@@ -166,15 +166,15 @@
|
||||||
|
case encoding of
|
||||||
|
Nothing -> return encoded
|
||||||
|
Just "base64" -> case Base64.decode . T.encodeUtf8 $ encoded of
|
||||||
|
- Left msg -> F.failure $ XmlException ("Invalid Base64 data: " ++ msg)
|
||||||
|
+ Left msg -> throwM $ XmlException ("Invalid Base64 data: " ++ msg)
|
||||||
|
Right x -> return $ T.decodeUtf8 x
|
||||||
|
- Just actual -> F.failure $ XmlException ("Unrecognized encoding " ++ T.unpack actual)
|
||||||
|
+ Just actual -> throwM $ XmlException ("Unrecognized encoding " ++ T.unpack actual)
|
||||||
|
|
||||||
|
data Attribute a
|
||||||
|
= ForAttribute { attributeName :: T.Text, attributeData :: a }
|
||||||
|
deriving (Show)
|
||||||
|
|
||||||
|
-readAttribute :: F.Failure XmlException m => Cu.Cursor -> m (Attribute T.Text)
|
||||||
|
+readAttribute :: MonadThrow m => Cu.Cursor -> m (Attribute T.Text)
|
||||||
|
readAttribute cursor = do
|
||||||
|
name <- forceM "Missing Name" $ cursor $/ Cu.laxElement "Name" &| decodeBase64
|
||||||
|
value <- forceM "Missing Value" $ cursor $/ Cu.laxElement "Value" &| decodeBase64
|
||||||
|
@@ -225,7 +225,7 @@
|
||||||
|
= Item { itemName :: T.Text, itemData :: a }
|
||||||
|
deriving (Show)
|
||||||
|
|
||||||
|
-readItem :: F.Failure XmlException m => Cu.Cursor -> m (Item [Attribute T.Text])
|
||||||
|
+readItem :: MonadThrow m => Cu.Cursor -> m (Item [Attribute T.Text])
|
||||||
|
readItem cursor = do
|
||||||
|
name <- force "Missing Name" <=< sequence $ cursor $/ Cu.laxElement "Name" &| decodeBase64
|
||||||
|
attributes <- sequence $ cursor $/ Cu.laxElement "Attribute" &| readAttribute
|
||||||
|
diff -ru orig/Aws/Sqs/Commands/Message.hs new/Aws/Sqs/Commands/Message.hs
|
||||||
|
--- orig/Aws/Sqs/Commands/Message.hs 2014-04-03 08:17:21.066394778 +0300
|
||||||
|
+++ new/Aws/Sqs/Commands/Message.hs 2014-04-03 08:17:20.000000000 +0300
|
||||||
|
@@ -4,9 +4,9 @@
|
||||||
|
import Aws.Core
|
||||||
|
import Aws.Sqs.Core
|
||||||
|
import Control.Applicative
|
||||||
|
+import Control.Monad.Trans.Resource (MonadThrow)
|
||||||
|
import Data.Maybe
|
||||||
|
import Text.XML.Cursor (($/), ($//), (&/), (&|))
|
||||||
|
-import qualified Control.Failure as F
|
||||||
|
import qualified Data.ByteString.Char8 as B
|
||||||
|
import qualified Data.Text as T
|
||||||
|
import qualified Data.Text.Encoding as TE
|
||||||
|
@@ -98,7 +98,7 @@
|
||||||
|
}
|
||||||
|
deriving (Show)
|
||||||
|
|
||||||
|
-readMessageAttribute :: F.Failure XmlException m => Cu.Cursor -> m (MessageAttribute,T.Text)
|
||||||
|
+readMessageAttribute :: MonadThrow m => Cu.Cursor -> m (MessageAttribute,T.Text)
|
||||||
|
readMessageAttribute cursor = do
|
||||||
|
name <- force "Missing Name" $ cursor $/ Cu.laxElement "Name" &/ Cu.content
|
||||||
|
value <- force "Missing Value" $ cursor $/ Cu.laxElement "Value" &/ Cu.content
|
||||||
|
diff -ru orig/Aws/Sqs/Core.hs new/Aws/Sqs/Core.hs
|
||||||
|
--- orig/Aws/Sqs/Core.hs 2014-04-03 08:17:21.066394778 +0300
|
||||||
|
+++ new/Aws/Sqs/Core.hs 2014-04-03 08:17:20.000000000 +0300
|
||||||
|
@@ -5,14 +5,12 @@
|
||||||
|
import qualified Blaze.ByteString.Builder as Blaze
|
||||||
|
import qualified Blaze.ByteString.Builder.Char8 as Blaze8
|
||||||
|
import qualified Control.Exception as C
|
||||||
|
-import qualified Control.Failure as F
|
||||||
|
import Control.Monad
|
||||||
|
import Control.Monad.IO.Class
|
||||||
|
-import Data.Attempt (Attempt(..))
|
||||||
|
+import Control.Monad.Trans.Resource (MonadThrow, throwM)
|
||||||
|
import qualified Data.ByteString as B
|
||||||
|
import qualified Data.ByteString.Char8 as BC
|
||||||
|
import Data.Conduit (($$+-))
|
||||||
|
-import qualified Data.Conduit as C
|
||||||
|
import Data.IORef
|
||||||
|
import Data.List
|
||||||
|
import Data.Maybe
|
||||||
|
@@ -234,10 +232,10 @@
|
||||||
|
= do doc <- HTTP.responseBody resp $$+- XML.sinkDoc XML.def
|
||||||
|
let cursor = Cu.fromDocument doc
|
||||||
|
liftIO $ case parseError cursor of
|
||||||
|
- Success err -> C.monadThrow err
|
||||||
|
- Failure otherErr -> C.monadThrow otherErr
|
||||||
|
+ Right err -> throwM err
|
||||||
|
+ Left otherErr -> throwM otherErr
|
||||||
|
where
|
||||||
|
- parseError :: Cu.Cursor -> Attempt SqsError
|
||||||
|
+ parseError :: Cu.Cursor -> Either C.SomeException SqsError
|
||||||
|
parseError root = do cursor <- force "Missing Error" $ root $/ Cu.laxElement "Error"
|
||||||
|
code <- force "Missing error Code" $ cursor $/ elContent "Code"
|
||||||
|
message <- force "Missing error Message" $ cursor $/ elContent "Message"
|
||||||
|
@@ -291,7 +289,7 @@
|
||||||
|
| PermissionGetQueueAttributes
|
||||||
|
deriving (Show, Enum, Eq)
|
||||||
|
|
||||||
|
-parseQueueAttribute :: F.Failure XmlException m => T.Text -> m QueueAttribute
|
||||||
|
+parseQueueAttribute :: MonadThrow m => T.Text -> m QueueAttribute
|
||||||
|
parseQueueAttribute "ApproximateNumberOfMessages" = return ApproximateNumberOfMessages
|
||||||
|
parseQueueAttribute "ApproximateNumberOfMessagesNotVisible" = return ApproximateNumberOfMessagesNotVisible
|
||||||
|
parseQueueAttribute "VisibilityTimeout" = return VisibilityTimeout
|
||||||
|
@@ -301,7 +299,7 @@
|
||||||
|
parseQueueAttribute "MaximumMessageSize" = return MaximumMessageSize
|
||||||
|
parseQueueAttribute "MessageRetentionPeriod" = return MessageRetentionPeriod
|
||||||
|
parseQueueAttribute "QueueArn" = return QueueArn
|
||||||
|
-parseQueueAttribute x = F.failure $ XmlException ( "Invalid Attribute Name. " ++ show x)
|
||||||
|
+parseQueueAttribute x = throwM $ XmlException ( "Invalid Attribute Name. " ++ show x)
|
||||||
|
|
||||||
|
printQueueAttribute :: QueueAttribute -> T.Text
|
||||||
|
printQueueAttribute QueueAll = "All"
|
||||||
|
@@ -315,12 +313,12 @@
|
||||||
|
printQueueAttribute MessageRetentionPeriod = "MessageRetentionPeriod"
|
||||||
|
printQueueAttribute QueueArn = "QueueArn"
|
||||||
|
|
||||||
|
-parseMessageAttribute :: F.Failure XmlException m => T.Text -> m MessageAttribute
|
||||||
|
+parseMessageAttribute :: MonadThrow m => T.Text -> m MessageAttribute
|
||||||
|
parseMessageAttribute "SenderId" = return SenderId
|
||||||
|
parseMessageAttribute "SentTimestamp" = return SentTimestamp
|
||||||
|
parseMessageAttribute "ApproximateReceiveCount" = return ApproximateReceiveCount
|
||||||
|
parseMessageAttribute "ApproximateFirstReceiveTimestamp" = return ApproximateFirstReceiveTimestamp
|
||||||
|
-parseMessageAttribute x = F.failure $ XmlException ( "Invalid Attribute Name. " ++ show x)
|
||||||
|
+parseMessageAttribute x = throwM $ XmlException ( "Invalid Attribute Name. " ++ show x)
|
||||||
|
|
||||||
|
printMessageAttribute :: MessageAttribute -> T.Text
|
||||||
|
printMessageAttribute MessageAll = "All"
|
||||||
diff -ru orig/aws.cabal new/aws.cabal
|
diff -ru orig/aws.cabal new/aws.cabal
|
||||||
--- orig/aws.cabal 2014-04-02 13:40:50.015820737 +0300
|
--- orig/aws.cabal 2014-04-03 08:17:21.070394778 +0300
|
||||||
+++ new/aws.cabal 2014-04-02 13:40:49.000000000 +0300
|
+++ new/aws.cabal 2014-04-03 08:17:20.000000000 +0300
|
||||||
@@ -130,7 +130,9 @@
|
@@ -20,7 +20,7 @@
|
||||||
|
Source-repository this
|
||||||
|
type: git
|
||||||
|
location: https://github.com/aristidb/aws.git
|
||||||
|
- tag: 0.8.5
|
||||||
|
+ tag: 0.8.6
|
||||||
|
|
||||||
|
Source-repository head
|
||||||
|
type: git
|
||||||
|
@@ -98,8 +98,6 @@
|
||||||
|
Aws.DynamoDb.Core
|
||||||
|
|
||||||
|
Build-depends:
|
||||||
|
- attempt >= 0.3.1.1 && < 0.5,
|
||||||
|
- attoparsec-conduit >= 1.0 && < 1.1,
|
||||||
|
aeson >= 0.6 && < 0.8,
|
||||||
|
base == 4.*,
|
||||||
|
base16-bytestring == 0.1.*,
|
||||||
|
@@ -108,29 +106,29 @@
|
||||||
|
bytestring >= 0.9 && < 0.11,
|
||||||
|
case-insensitive >= 0.2 && < 1.3,
|
||||||
|
cereal >= 0.3 && < 0.5,
|
||||||
|
- conduit >= 1.0 && < 1.1,
|
||||||
|
+ conduit >= 1.1 && < 1.2,
|
||||||
|
+ conduit-extra >= 1.1 && < 1.2,
|
||||||
|
containers >= 0.4,
|
||||||
|
crypto-api >= 0.9,
|
||||||
|
cryptohash >= 0.8 && < 0.12,
|
||||||
|
cryptohash-cryptoapi == 0.1.*,
|
||||||
|
data-default == 0.5.*,
|
||||||
|
directory >= 1.0 && < 1.3,
|
||||||
|
- failure >= 0.2.0.1 && < 0.3,
|
||||||
|
filepath >= 1.1 && < 1.4,
|
||||||
|
- http-conduit >= 1.9 && < 2.1,
|
||||||
|
+ http-conduit >= 2.1 && < 2.2,
|
||||||
|
http-types >= 0.7 && < 0.9,
|
||||||
|
lifted-base >= 0.1 && < 0.3,
|
||||||
|
monad-control >= 0.3,
|
||||||
|
mtl == 2.*,
|
||||||
|
old-locale == 1.*,
|
||||||
|
- resourcet >= 0.3.3 && <0.5,
|
||||||
|
+ resourcet >= 1.1 && < 1.2,
|
||||||
|
text >= 0.11,
|
||||||
|
time >= 1.1.4 && < 1.5,
|
||||||
|
transformers >= 0.2.2.0 && < 0.4,
|
||||||
unordered-containers >= 0.2,
|
unordered-containers >= 0.2,
|
||||||
utf8-string == 0.3.*,
|
utf8-string == 0.3.*,
|
||||||
vector >= 0.10,
|
vector >= 0.10,
|
||||||
- xml-conduit >= 1.1 && <1.2
|
- xml-conduit >= 1.1 && <1.2
|
||||||
+ xml-conduit >= 1.1 && <1.2,
|
+ xml-conduit >= 1.2 && <1.3
|
||||||
+ http-client < 0.3,
|
|
||||||
+ ghc-prim
|
|
||||||
|
|
||||||
GHC-Options: -Wall
|
GHC-Options: -Wall
|
||||||
|
|
||||||
|
diff -ru orig/README.org new/README.org
|
||||||
|
--- orig/README.org 2014-04-03 08:17:21.058394778 +0300
|
||||||
|
+++ new/README.org 2014-04-03 08:17:20.000000000 +0300
|
||||||
|
@@ -90,6 +90,10 @@
|
||||||
|
|
||||||
|
** 0.8 series
|
||||||
|
|
||||||
|
+- 0.8.6
|
||||||
|
+ - move Instance metadata functions out of ResourceT to remove problem with exceptions-0.5
|
||||||
|
+ (this makes a fresh install of aws on a clean system possible again)
|
||||||
|
+
|
||||||
|
- 0.8.5
|
||||||
|
- compatibility with case-insensitive 1.2
|
||||||
|
- support for V4 signatures
|
||||||
|
|||||||
53
patching/patches/cereal-conduit-0.7.2.patch
Normal file
53
patching/patches/cereal-conduit-0.7.2.patch
Normal file
@ -0,0 +1,53 @@
|
|||||||
|
diff -ru orig/cereal-conduit.cabal new/cereal-conduit.cabal
|
||||||
|
--- orig/cereal-conduit.cabal 2014-04-03 08:22:14.122388542 +0300
|
||||||
|
+++ new/cereal-conduit.cabal 2014-04-03 08:22:13.000000000 +0300
|
||||||
|
@@ -19,7 +19,8 @@
|
||||||
|
|
||||||
|
library
|
||||||
|
build-depends: base >= 4 && < 5
|
||||||
|
- , conduit >= 1.0.0 && < 1.1
|
||||||
|
+ , conduit >= 1.0.0 && < 1.2
|
||||||
|
+ , resourcet >= 0.4 && < 1.2
|
||||||
|
, cereal >= 0.4.0.0 && < 0.5
|
||||||
|
, bytestring
|
||||||
|
, transformers >= 0.2.0.0
|
||||||
|
diff -ru orig/Data/Conduit/Cereal.hs new/Data/Conduit/Cereal.hs
|
||||||
|
--- orig/Data/Conduit/Cereal.hs 2014-04-03 08:22:14.122388542 +0300
|
||||||
|
+++ new/Data/Conduit/Cereal.hs 2014-04-03 08:22:13.000000000 +0300
|
||||||
|
@@ -19,6 +19,7 @@
|
||||||
|
|
||||||
|
import Control.Exception.Base
|
||||||
|
import Control.Monad.Trans.Class (MonadTrans, lift)
|
||||||
|
+import Control.Monad.Trans.Resource (MonadThrow, monadThrow)
|
||||||
|
import qualified Data.ByteString as BS
|
||||||
|
import qualified Data.ByteString.Lazy as LBS
|
||||||
|
import qualified Data.Conduit as C
|
||||||
|
@@ -34,7 +35,7 @@
|
||||||
|
instance Exception GetException
|
||||||
|
|
||||||
|
-- | Run a 'Get' repeatedly on the input stream, producing an output stream of whatever the 'Get' outputs.
|
||||||
|
-conduitGet :: C.MonadThrow m => Get o -> C.Conduit BS.ByteString m o
|
||||||
|
+conduitGet :: MonadThrow m => Get o -> C.Conduit BS.ByteString m o
|
||||||
|
conduitGet = mkConduitGet errorHandler
|
||||||
|
where errorHandler msg = pipeError $ GetException msg
|
||||||
|
|
||||||
|
@@ -42,7 +43,7 @@
|
||||||
|
--
|
||||||
|
-- If 'Get' succeed it will return the data read and unconsumed part of the input stream.
|
||||||
|
-- If the 'Get' fails due to deserialization error or early termination of the input stream it raise an error.
|
||||||
|
-sinkGet :: C.MonadThrow m => Get r -> C.Consumer BS.ByteString m r
|
||||||
|
+sinkGet :: MonadThrow m => Get r -> C.Consumer BS.ByteString m r
|
||||||
|
sinkGet = mkSinkGet errorHandler terminationHandler
|
||||||
|
where errorHandler msg = pipeError $ GetException msg
|
||||||
|
terminationHandler f = case f BS.empty of
|
||||||
|
@@ -50,8 +51,8 @@
|
||||||
|
Done r lo -> C.leftover lo >> return r
|
||||||
|
Partial _ -> pipeError $ GetException "Failed reading: Internal error: unexpected Partial."
|
||||||
|
|
||||||
|
-pipeError :: (C.MonadThrow m, MonadTrans t, Exception e) => e -> t m a
|
||||||
|
-pipeError e = lift $ C.monadThrow e
|
||||||
|
+pipeError :: (MonadThrow m, MonadTrans t, Exception e) => e -> t m a
|
||||||
|
+pipeError e = lift $ monadThrow e
|
||||||
|
|
||||||
|
-- | Convert a 'Put' into a 'Source'. Runs in constant memory.
|
||||||
|
sourcePut :: Monad m => Put -> C.Producer m BS.ByteString
|
||||||
12
patching/patches/diagrams-builder-0.5.0.6.patch
Normal file
12
patching/patches/diagrams-builder-0.5.0.6.patch
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
diff -ru orig/diagrams-builder.cabal new/diagrams-builder.cabal
|
||||||
|
--- orig/diagrams-builder.cabal 2014-04-03 08:17:21.630394766 +0300
|
||||||
|
+++ new/diagrams-builder.cabal 2014-04-03 08:17:21.000000000 +0300
|
||||||
|
@@ -59,7 +59,7 @@
|
||||||
|
cmdargs >= 0.6 && < 0.11,
|
||||||
|
lens >= 3.9 && < 4.2,
|
||||||
|
hashable >= 1.1 && < 1.3,
|
||||||
|
- exceptions >= 0.3 && < 0.4
|
||||||
|
+ exceptions >= 0.3 && < 0.6
|
||||||
|
hs-source-dirs: src
|
||||||
|
default-language: Haskell2010
|
||||||
|
other-extensions: StandaloneDeriving,
|
||||||
12
patching/patches/esqueleto-1.3.8.patch
Normal file
12
patching/patches/esqueleto-1.3.8.patch
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
diff -ru orig/esqueleto.cabal new/esqueleto.cabal
|
||||||
|
--- orig/esqueleto.cabal 2014-04-03 08:31:02.238377300 +0300
|
||||||
|
+++ new/esqueleto.cabal 2014-04-03 08:31:01.000000000 +0300
|
||||||
|
@@ -91,7 +91,7 @@
|
||||||
|
, containers
|
||||||
|
, HUnit
|
||||||
|
, QuickCheck
|
||||||
|
- , hspec >= 1.9
|
||||||
|
+ , hspec >= 1.8
|
||||||
|
, persistent-sqlite >= 1.2 && < 1.4
|
||||||
|
, persistent-template >= 1.2 && < 1.4
|
||||||
|
, monad-control
|
||||||
62
patching/patches/process-conduit-1.0.0.2.patch
Normal file
62
patching/patches/process-conduit-1.0.0.2.patch
Normal file
@ -0,0 +1,62 @@
|
|||||||
|
diff -ru orig/Data/Conduit/Process.hs new/Data/Conduit/Process.hs
|
||||||
|
--- orig/Data/Conduit/Process.hs 2014-04-03 08:26:07.254383579 +0300
|
||||||
|
+++ new/Data/Conduit/Process.hs 2014-04-03 08:26:06.000000000 +0300
|
||||||
|
@@ -21,6 +21,7 @@
|
||||||
|
import Control.Monad
|
||||||
|
import Control.Monad.Trans
|
||||||
|
import Control.Monad.Trans.Loop
|
||||||
|
+import Control.Monad.Trans.Resource (MonadResource, monadThrow)
|
||||||
|
import qualified Data.ByteString as S
|
||||||
|
import Data.Conduit
|
||||||
|
import qualified Data.Conduit.List as CL
|
||||||
|
diff -ru orig/process-conduit.cabal new/process-conduit.cabal
|
||||||
|
--- orig/process-conduit.cabal 2014-04-03 08:26:07.258383579 +0300
|
||||||
|
+++ new/process-conduit.cabal 2014-04-03 08:26:06.000000000 +0300
|
||||||
|
@@ -33,7 +33,8 @@
|
||||||
|
, bytestring >= 0.9
|
||||||
|
, text >= 0.11
|
||||||
|
, process >= 1.0
|
||||||
|
- , conduit == 1.0.*
|
||||||
|
+ , conduit >= 1.0 && < 1.2
|
||||||
|
+ , resourcet >= 0.4 && < 1.2
|
||||||
|
, shakespeare-text >= 1.0
|
||||||
|
, shakespeare
|
||||||
|
|
||||||
|
@@ -47,4 +48,6 @@
|
||||||
|
, bytestring
|
||||||
|
, hspec >= 1.3
|
||||||
|
, conduit
|
||||||
|
+ , conduit-extra
|
||||||
|
+ , resourcet
|
||||||
|
, process-conduit
|
||||||
|
diff -ru orig/System/Process/QQ.hs new/System/Process/QQ.hs
|
||||||
|
--- orig/System/Process/QQ.hs 2014-04-03 08:26:07.254383579 +0300
|
||||||
|
+++ new/System/Process/QQ.hs 2014-04-03 08:26:06.000000000 +0300
|
||||||
|
@@ -14,6 +14,7 @@
|
||||||
|
import qualified Data.Text.Lazy as LT
|
||||||
|
import Language.Haskell.TH.Quote
|
||||||
|
import Text.Shakespeare.Text
|
||||||
|
+import Control.Monad.Trans.Resource (runResourceT)
|
||||||
|
|
||||||
|
import Data.Conduit.Process
|
||||||
|
|
||||||
|
@@ -28,7 +29,7 @@
|
||||||
|
-- | Command result of (Lazy) ByteString.
|
||||||
|
cmd :: QuasiQuoter
|
||||||
|
cmd = def { quoteExp = \str -> [|
|
||||||
|
- BL.fromChunks <$> C.runResourceT (sourceCmd (LT.unpack $(quoteExp lt str)) C.$$ CL.consume)
|
||||||
|
+ BL.fromChunks <$> runResourceT (sourceCmd (LT.unpack $(quoteExp lt str)) C.$$ CL.consume)
|
||||||
|
|] }
|
||||||
|
|
||||||
|
-- | Source of shell command
|
||||||
|
diff -ru orig/test.hs new/test.hs
|
||||||
|
--- orig/test.hs 2014-04-03 08:26:07.254383579 +0300
|
||||||
|
+++ new/test.hs 2014-04-03 08:26:06.000000000 +0300
|
||||||
|
@@ -7,6 +7,7 @@
|
||||||
|
import Data.Conduit
|
||||||
|
import qualified Data.Conduit.Binary as CB
|
||||||
|
import Test.Hspec
|
||||||
|
+import Control.Monad.Trans.Resource (runResourceT)
|
||||||
|
|
||||||
|
main :: IO ()
|
||||||
|
main = hspec $ do
|
||||||
16
patching/patches/stm-conduit-2.3.0.patch
Normal file
16
patching/patches/stm-conduit-2.3.0.patch
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
diff -ru orig/stm-conduit.cabal new/stm-conduit.cabal
|
||||||
|
--- orig/stm-conduit.cabal 2014-04-03 08:22:14.310388538 +0300
|
||||||
|
+++ new/stm-conduit.cabal 2014-04-03 08:22:14.000000000 +0300
|
||||||
|
@@ -29,9 +29,10 @@
|
||||||
|
, stm-chans >= 2.0 && < 3.1
|
||||||
|
, cereal >= 0.4.0.1
|
||||||
|
, cereal-conduit >= 0.7.2
|
||||||
|
- , conduit == 1.0.*
|
||||||
|
+ , conduit >= 1.0 && < 1.2
|
||||||
|
+ , conduit-extra >= 1.0 && < 1.2
|
||||||
|
, directory >= 1.1
|
||||||
|
- , resourcet >= 0.3 && < 0.5
|
||||||
|
+ , resourcet >= 0.3 && < 1.2
|
||||||
|
, async >= 2.0.1
|
||||||
|
, monad-control >= 0.3.2
|
||||||
|
, monad-loops >= 0.4.2
|
||||||
12
patching/patches/temporary-1.2.0.1.patch
Normal file
12
patching/patches/temporary-1.2.0.1.patch
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
diff -ru orig/temporary.cabal new/temporary.cabal
|
||||||
|
--- orig/temporary.cabal 2014-04-03 08:17:21.902394760 +0300
|
||||||
|
+++ new/temporary.cabal 2014-04-03 08:17:21.000000000 +0300
|
||||||
|
@@ -23,7 +23,7 @@
|
||||||
|
other-modules: Distribution.Compat.Exception
|
||||||
|
Distribution.Compat.TempFile
|
||||||
|
build-depends: base >= 3 && < 6, filepath >= 1.1 && < 1.4, directory >= 1.0 && < 1.3,
|
||||||
|
- transformers >= 0.2.0.0 && < 0.4, exceptions >= 0.1.1 && < 0.4
|
||||||
|
+ transformers >= 0.2.0.0 && < 0.4, exceptions >= 0.1.1 && < 0.6
|
||||||
|
|
||||||
|
if !os(windows)
|
||||||
|
build-depends: unix >= 2.3 && < 2.8
|
||||||
21
patching/patches/websockets-0.8.2.0.patch
Normal file
21
patching/patches/websockets-0.8.2.0.patch
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
diff -ru orig/websockets.cabal new/websockets.cabal
|
||||||
|
--- orig/websockets.cabal 2014-04-03 08:32:53.818374925 +0300
|
||||||
|
+++ new/websockets.cabal 2014-04-03 08:32:53.000000000 +0300
|
||||||
|
@@ -69,7 +69,7 @@
|
||||||
|
binary >= 0.5 && < 0.8,
|
||||||
|
blaze-builder >= 0.3 && < 0.4,
|
||||||
|
bytestring >= 0.9 && < 0.11,
|
||||||
|
- case-insensitive >= 0.3 && < 1.2,
|
||||||
|
+ case-insensitive >= 0.3 && < 1.3,
|
||||||
|
containers >= 0.3 && < 0.6,
|
||||||
|
io-streams >= 1.1 && < 1.2,
|
||||||
|
mtl >= 2.0 && < 2.2,
|
||||||
|
@@ -105,7 +105,7 @@
|
||||||
|
binary >= 0.5 && < 0.8,
|
||||||
|
blaze-builder >= 0.3 && < 0.4,
|
||||||
|
bytestring >= 0.9 && < 0.11,
|
||||||
|
- case-insensitive >= 0.3 && < 1.2,
|
||||||
|
+ case-insensitive >= 0.3 && < 1.3,
|
||||||
|
containers >= 0.3 && < 0.6,
|
||||||
|
io-streams >= 1.1 && < 1.2,
|
||||||
|
mtl >= 2.0 && < 2.2,
|
||||||
Loading…
Reference in New Issue
Block a user