@@ -14,6 +14,7 @@ import Distribution.Nixpkgs.Fetch
1414import Distribution.Nixpkgs.Hashes
1515import qualified Distribution.Nixpkgs.Haskell.Hackage as DB
1616import qualified Distribution.Package as Cabal
17+import qualified Distribution.Version as Cabal
1718import Distribution.PackageDescription
1819import qualified Distribution.PackageDescription as Cabal
1920import Distribution.Text ( simpleParse, display )
@@ -56,8 +57,13 @@ fromDB optHackageDB pkg = do
5657 pkgId = fromMaybe (error ("invalid Haskell package id " ++ show pkg)) (simpleParse pkg)
5758 name = Cabal.unPackageName (Cabal.packageName pkgId)
5859
60+ version :: [Int]
61+ version = Cabal.versionNumbers $ Cabal.packageVersion pkgId
62+
5963 lookupVersion :: DB.Map DB.Version Cabal.GenericPackageDescription -> Maybe Cabal.GenericPackageDescription
60− lookupVersion = fmap snd . listToMaybe . reverse . DB.toAscList
64+ -- No version is specified, pick latest one
65+ lookupVersion m | [] <- version = fmap snd . listToMaybe $ DB.toDescList m
66+ lookupVersion m = DB.lookup (DB.makeVersion version) m
6167
6268readFileMay :: String -> IO (Maybe String)
6369readFileMay file = do