git.iko.soy/typeable/cabal2nix
on master help sign in
Fix build, put hpack in build tools
commit59f1e2f0edb661493f36d898545c4c7353b65d77 authorTom Smalley <tfsmalley@gmail.com> dateSun 24 Sep 2017, 07:32 (9 years ago) parentac7d7b4
4 files changed+11−21
cabal2nix.cabal−4 package.yaml−1 src/Cabal2nix.hs+2−2 src/Distribution/Nixpkgs/Haskell/PackageSourceSpec.hs+9−14
cabal2nix.cabal−4
@@ -111,7 +111,6 @@ library
111111 , text
112112 , time
113113 , transformers
114− , utf8-string
115114 , yaml
116115 exposed-modules:
117116 Cabal2nix
@@ -162,7 +161,6 @@ executable cabal2nix
162161 , text
163162 , time
164163 , transformers
165− , utf8-string
166164 , yaml
167165 , cabal2nix
168166 other-modules:
@@ -197,7 +195,6 @@ executable hackage2nix
197195 , text
198196 , time
199197 , transformers
200− , utf8-string
201198 , yaml
202199 , cabal2nix
203200 , monad-par
@@ -239,7 +236,6 @@ test-suite doctests
239236 , text
240237 , time
241238 , transformers
242− , utf8-string
243239 , yaml
244240 , doctest
245241 default-language: Haskell2010
package.yaml−1
@@ -102,7 +102,6 @@ dependencies:
102102 - text
103103 - time
104104 - transformers
105− - utf8-string
106105 - yaml
107106
108107library:
src/Cabal2nix.hs+2−2
@@ -122,8 +122,8 @@ main = bracket (return ()) (\() -> hFlush stdout >> hFlush stderr) $ \() ->
122122 cabal2nix =<< getArgs
123123
124124hpackOverrides :: Derivation -> Derivation
125−hpackOverrides = over phaseOverrides (++ "preConfigure = \"${hpack}/bin/hpack;\";")
126− . set (libraryDepends . pkgconfig . contains (PP.pkg "hpack")) True
125+hpackOverrides = over phaseOverrides (++ "preConfigure = \"hpack\";")
126+ . set (libraryDepends . tool . contains (PP.pkg "hpack")) True
127127
128128cabal2nix' :: [String] -> IO (Either Doc Derivation)
129129cabal2nix' args = do
src/Distribution/Nixpkgs/Haskell/PackageSourceSpec.hs+9−14
@@ -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 =