git.iko.soy/typeable/cabal2nix
on master help sign in
Don't ignore user-specified package version on fetch

As a bonus, save a traversal over every package version in the common case of no specified package version (`toDescList` vs `reverse . toAscList`). Fixes #287.

commit6c0dbd34a3b727ad45738e134d9f92f0c6d9c34e authorMateusz Kowalczyk <fuuzetsu@fuuzetsu.co.uk> dateWed 2 Aug 2017, 11:30 (9 years ago) parente4f891e
1 file changed+7−1
src/Distribution/Nixpkgs/Haskell/PackageSourceSpec.hs+7−1
src/Distribution/Nixpkgs/Haskell/PackageSourceSpec.hs+7−1
@@ -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