@@ -6,8 +6,6 @@ import qualified Control.Exception as Exception
66import Control.Monad
77import Control.Monad.IO.Class
88import Control.Monad.Trans.Maybe
9−import qualified Data.ByteString.Lazy.Char8 as LBS8
10−import qualified Data.ByteString.Lazy.UTF8 as UTF8
119import Data.List ( isSuffixOf, isPrefixOf )
1210import qualified Data.Map as DB
1311import Data.Maybe
@@ -44,7 +42,9 @@ getPackage optHpack optHackageDB source = do
4442fetchOrFromDB :: Bool -- ^ Whether hpack should regenerate the cabal file
4543 -> Maybe FilePath -> Source -> IO (Maybe DerivationSource, Bool, Cabal.GenericPackageDescription)
4644fetchOrFromDB optHpack optHackageDB src
47− | "cabal://" `isPrefixOf` sourceUrl src = fromDB optHackageDB . drop (length "cabal://") $ sourceUrl src
45+ | "cabal://" `isPrefixOf` sourceUrl src = do
46+ (msrc, pkgDesc) <- fromDB optHackageDB . drop (length "cabal://") $ sourceUrl src
47+ return (msrc, False, pkgDesc)
4848 | otherwise = do
4949 r <- fetch (\dir -> cabalFromPath optHpack (dir </> sourceCabalDir src)) src
5050 case r of
@@ -168,18 +168,13 @@ hpackDirectory dir = do
168168 Left err -> liftIO $ hPutStrLn stderr ("*** hpack error: " ++ show err ++ ". Exiting.") >> exitFailure
169169 Right (_, pkg') -> do
170170 let hpackOutput = Hpack.renderPackage Hpack.defaultRenderSettings 2 [] [] pkg'
171− buf = UTF8.fromString hpackOutput
172− hash = printSHA256 $ digest (digestByName "sha256") buf
173− case parsePackage' buf of
174− Left msg -> liftIO $ do
175− hPutStrLn stderr $ "*** cannot parse hpack output: " ++ msg
171+ hash = printSHA256 $ digestString (digestByName "sha256") hpackOutput
172+ case parseGenericPackageDescription hpackOutput of
173+ ParseFailed perr -> liftIO $ do
174+ hPutStrLn stderr $ "*** cannot parse hpack output: " ++ show perr
176175 hPutStrLn stderr $ "*** hpack output:\n" ++ hpackOutput
177− hPutStrLn stderr "*** Exiting."
178− exitFailure
179− Right pkg -> MaybeT $ return $ Just $ (,) True $ pkg
180− { packageDescription = (packageDescription pkg)
181− { customFieldsPD = ("X-Cabal-File-Hash", hash) : customFieldsPD (packageDescription pkg)
182− } }
176+ fail "*** Exiting."
177+ ParseOk _ pkg -> MaybeT $ return $ Just $ (,) True $ setCabalFileHash hash pkg
183178
184179cabalFromFile :: Bool -> FilePath -> MaybeT IO Cabal.GenericPackageDescription
185180cabalFromFile failHard file =