git.iko.soy/typeable/cabal2nix
on master help sign in
Merge pull request #360 from nh2/hpack-ignore-existing-cabal-files

If both package.yaml and cabal exist, prefer package.yaml.

commit868cc5ee1978fed847e46dd6f33bfc5880b363a6 authorPeter Simons <simons@cryp.to> dateWed 18 Jul 2018, 13:08 (8 years ago) parentf156d9a5721bed
1 file changed+11−6
src/Distribution/Nixpkgs/Haskell/PackageSourceSpec.hs+11−6
src/Distribution/Nixpkgs/Haskell/PackageSourceSpec.hs+11−6
@@ -183,13 +183,18 @@ cabalFromDirectory :: Bool -- ^ Whether hpack should regenerate the cabal file
183183 -> FilePath -> MaybeT IO (Bool, Cabal.GenericPackageDescription)
184184cabalFromDirectory True dir = hpackDirectory dir
185185cabalFromDirectory False dir = do
186− cabals <- liftIO $ getDirectoryContents dir >>= filterM doesFileExist . map (dir </>) . filter (".cabal" `isSuffixOf`)
187− case cabals of
188− [] -> do
189− liftIO $ hPutStrLn stderr "*** found zero cabal files. Trying hpack..."
186+ useHpack <- liftIO $ doesFileExist (dir </> "package.yaml")
187+ if useHpack
188+ then do
189+ liftIO $ hPutStrLn stderr "*** found package.yaml. Using hpack..."
190190 hpackDirectory dir
191− [cabalFile] -> (,) False <$> cabalFromFile True cabalFile
192− _ -> liftIO $ fail ("*** found more than one cabal file (" ++ show cabals ++ "). Exiting.")
191+ else do
192+ cabals <- liftIO $ getDirectoryContents dir >>= filterM doesFileExist . map (dir </>) . filter (".cabal" `isSuffixOf`)
193+ case cabals of
194+ [] -> do
195+ fail "*** Found neither a .cabal file nor package.yaml. Exiting."
196+ [cabalFile] -> (,) False <$> cabalFromFile True cabalFile
197+ _ -> liftIO $ fail ("*** found more than one cabal file (" ++ show cabals ++ "). Exiting.")
193198
194199handleIO :: (Exception.IOException -> IO a) -> IO a -> IO a
195200handleIO = Exception.handle