git.iko.soy/typeable/cabal2nix
on master help sign in
PackageList.hs: extended parseHaskellPackageName to recognize all "haskellPackages"
commit23ee664a3e8fd6bcf2a5104f59726d07751704e6 authorPeter Simons <simons@cryp.to> dateSun 21 Aug 2011, 20:51 (15 years ago) parent67bbe8e
1 file changed+11−6
src/PackageList.hs+11−6
src/PackageList.hs+11−6
@@ -1,12 +1,13 @@
11module Main ( main ) where
22
3+import Control.Exception ( assert )
34import Data.Char
45import Data.List
56import Data.Version
7+import Distribution.Package
68import Distribution.Text
79import System.Process
810import Text.Regex.Posix
9−import Control.Exception ( assert )
1011
1112type Pkg = (String,Version,String) -- (Name, Version, Attribute)
1213type Pkgset = [Pkg]
@@ -21,11 +22,15 @@ comparePkgByName (n1,_,_) (n2,_,_) = compare (map toLower n1) (map toLower n2)
2122
2223parseHaskellPackageName :: String -> Maybe Pkg
2324parseHaskellPackageName name =
24− case name `regsubmatch` "^(haskellPackages[^ \t]+)[ \t]+haskell-(.*)-ghc[0-9.]+-(.*)$" of
25− [attr,name',version] -> case simpleParse version of
26− Just version' -> Just (name',version',attr)
27− _ -> Nothing
28− _ -> Nothing
25+ case name `regsubmatch` "^(haskellPackages[^ \t]+)[ \t]+(.+)$" of
26+ [attr,name'] -> case name' `regsubmatch` "^haskell-(.+)-ghc[0-9.]+-(.+)$" of
27+ [name'',version] -> case simpleParse version of
28+ Just version' -> Just (name'',version',attr)
29+ _ -> error ("cannot parse " ++ show name)
30+ _ -> case simpleParse name' of
31+ Just (PackageIdentifier (PackageName n) v) -> Just (n,v,attr)
32+ _ -> error ("cannot parse " ++ show name)
33+ _ -> Nothing
2934
3035getHaskellPackageList :: IO Pkgset
3136getHaskellPackageList = do