git.iko.soy/typeable/cabal2nix
on master help sign in
Enabled cabal2nix to hash the Cabal file when --hackage-db is specified.
f747e80Matthew Stewart
src/Distribution/Nixpkgs/Haskell/Hackage.hs+5−2
@@ -1,4 +1,4 @@
1−module Distribution.Nixpkgs.Haskell.Hackage ( readHashedHackage, module Distribution.Hackage.DB ) where
1+module Distribution.Nixpkgs.Haskell.Hackage ( readHashedHackage, readHashedHackage', module Distribution.Hackage.DB ) where
2
2
3import Data.ByteString.Lazy ( ByteString )
3import Data.ByteString.Lazy ( ByteString )
4import Data.Digest.Pure.SHA ( sha256, showDigest )
4import Data.Digest.Pure.SHA ( sha256, showDigest )
@@ -13,7 +13,10 @@ import qualified Distribution.Hackage.DB.Unparsed as Unparsed
13-- original tarball.
13-- original tarball.
14
14
15readHashedHackage :: IO Hackage
15readHashedHackage :: IO Hackage
16+readHashedHackage = hackagePath >>= readHashedHackage'
17+
18+readHashedHackage' :: FilePath -> IO Hackage
16−readHashedHackage = fmap parseUnparsedHackage Unparsed.readHackage
19+readHashedHackage' = fmap parseUnparsedHackage . Unparsed.readHackage'
17 where
20 where
18 parseUnparsedHackage :: Unparsed.Hackage -> Hackage
21 parseUnparsedHackage :: Unparsed.Hackage -> Hackage
19 parseUnparsedHackage = mapWithKey (mapWithKey . parsePackage)
22 parseUnparsedHackage = mapWithKey (mapWithKey . parsePackage)
src/Distribution/Nixpkgs/Haskell/PackageSourceSpec.hs+1−1
@@ -48,7 +48,7 @@ fetchOrFromDB optHackageDB src
48
48
49fromDB :: Maybe String -> String -> IO Cabal.GenericPackageDescription
49fromDB :: Maybe String -> String -> IO Cabal.GenericPackageDescription
50fromDB optHackageDB pkg = do
50fromDB optHackageDB pkg = do
51− pkgDesc <- (lookupVersion <=< DB.lookup name) <$> maybe DB.readHashedHackage DB.readHackage' optHackageDB
51+ pkgDesc <- (lookupVersion <=< DB.lookup name) <$> maybe DB.readHashedHackage DB.readHashedHackage' optHackageDB
52 case pkgDesc of
52 case pkgDesc of
53 Just r -> return r
53 Just r -> return r
54 Nothing -> hPutStrLn stderr "*** no such package in the cabal database (did you run cabal update?). " >> exitFailure
54 Nothing -> hPutStrLn stderr "*** no such package in the cabal database (did you run cabal update?). " >> exitFailure