git.iko.soy/typeable/cabal2nix
on master help sign in
If both package.yaml and cabal exist, prefer package.yaml.
5721bedNiklas Hambüchen
src/Distribution/Nixpkgs/Haskell/PackageSourceSpec.hs+11−6
@@ -183,13 +183,18 @@ cabalFromDirectory :: Bool -- ^ Whether hpack should regenerate the cabal file
183 -> FilePath -> MaybeT IO (Bool, Cabal.GenericPackageDescription)
183 -> FilePath -> MaybeT IO (Bool, Cabal.GenericPackageDescription)
184cabalFromDirectory True dir = hpackDirectory dir
184cabalFromDirectory True dir = hpackDirectory dir
185cabalFromDirectory False dir = do
185cabalFromDirectory False dir = do
186− cabals <- liftIO $ getDirectoryContents dir >>= filterM doesFileExist . map (dir </>) . filter (".cabal" `isSuffixOf`)
186+ useHpack <- liftIO $ doesFileExist (dir </> "package.yaml")
187− case cabals of
187+ if useHpack
188− [] -> do
188+ then do
189− liftIO $ hPutStrLn stderr "*** found zero cabal files. Trying hpack..."
189+ liftIO $ hPutStrLn stderr "*** found package.yaml. Using hpack..."
190 hpackDirectory dir
190 hpackDirectory dir
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."
191− [cabalFile] -> (,) False <$> cabalFromFile True cabalFile
196+ [cabalFile] -> (,) False <$> cabalFromFile True cabalFile
192− _ -> liftIO $ fail ("*** found more than one cabal file (" ++ show cabals ++ "). Exiting.")
197+ _ -> liftIO $ fail ("*** found more than one cabal file (" ++ show cabals ++ "). Exiting.")
193
198
194handleIO :: (Exception.IOException -> IO a) -> IO a -> IO a
199handleIO :: (Exception.IOException -> IO a) -> IO a -> IO a
195handleIO = Exception.handle
200handleIO = Exception.handle