@@ -6,8 +6,8 @@ import qualified Control.Exception as Exception
6import Control.Monad
6import Control.Monad
7import Control.Monad.IO.Class
7import Control.Monad.IO.Class
8import Control.Monad.Trans.Maybe
8import Control.Monad.Trans.Maybe
9−import qualified Data.ByteString.Lazy.Char8 as BS8
9+import qualified Data.ByteString.Lazy.Char8 as LBS8
10−import Data.Digest.Pure.SHA ( sha256, showDigest )
10+import qualified Data.ByteString.Char8 as SBS8
11import Data.List ( isSuffixOf, isPrefixOf )
11import Data.List ( isSuffixOf, isPrefixOf )
12import Data.Maybe
12import Data.Maybe
13import Data.Version
13import Data.Version
@@ -18,6 +18,7 @@ import qualified Distribution.Package as Cabal
18import Distribution.PackageDescription
18import Distribution.PackageDescription
19import qualified Distribution.PackageDescription as Cabal
19import qualified Distribution.PackageDescription as Cabal
20import Distribution.Text ( simpleParse )
20import Distribution.Text ( simpleParse )
21+import OpenSSL.Digest ( digest, digestByName, toHex )
21import System.Directory ( doesDirectoryExist, doesFileExist, createDirectoryIfMissing, getHomeDirectory, getDirectoryContents )
22import System.Directory ( doesDirectoryExist, doesFileExist, createDirectoryIfMissing, getHomeDirectory, getDirectoryContents )
22import System.Exit ( exitFailure )
23import System.Exit ( exitFailure )
23import System.FilePath ( (</>), (<.>) )
24import System.FilePath ( (</>), (<.>) )
@@ -145,8 +146,8 @@ cabalFromFile failHard file =
145 -- wrap the whole block in `catchIO`, because of lazy IO. The `case` will force
146 -- wrap the whole block in `catchIO`, because of lazy IO. The `case` will force
146 -- the reading of the file, so we will always catch the expression here.
147 -- the reading of the file, so we will always catch the expression here.
147 MaybeT $ handleIO (\err -> Nothing <$ hPutStrLn stderr ("*** parsing cabal file: " ++ show err)) $ do
148 MaybeT $ handleIO (\err -> Nothing <$ hPutStrLn stderr ("*** parsing cabal file: " ++ show err)) $ do
148− buf <- BS8.readFile file
149+ buf <- LBS8.readFile file
149− let hash = showDigest (sha256 buf)
150+ let hash = SBS8.unpack (toHex (digest (digestByName "sha256") buf))
150 case parsePackage' buf of
151 case parsePackage' buf of
151 Left msg -> if failHard
152 Left msg -> if failHard
152 then fail ("*** cannot parse " ++ show file ++ ": " ++ msg)
153 then fail ("*** cannot parse " ++ show file ++ ": " ++ msg)