git.iko.soy/typeable/cabal2nix
on master help sign in
PackageList.hs: extended parseHaskellPackageName to recognize all "haskellPackages"
23ee664Peter Simons
src/PackageList.hs+11−6
@@ -1,12 +1,13 @@
1module Main ( main ) where
1module Main ( main ) where
2
2
3+import Control.Exception ( assert )
3import Data.Char
4import Data.Char
4import Data.List
5import Data.List
5import Data.Version
6import Data.Version
7+import Distribution.Package
6import Distribution.Text
8import Distribution.Text
7import System.Process
9import System.Process
8import Text.Regex.Posix
10import Text.Regex.Posix
9−import Control.Exception ( assert )
10
11
11type Pkg = (String,Version,String) -- (Name, Version, Attribute)
12type Pkg = (String,Version,String) -- (Name, Version, Attribute)
12type Pkgset = [Pkg]
13type Pkgset = [Pkg]
@@ -21,11 +22,15 @@ comparePkgByName (n1,_,_) (n2,_,_) = compare (map toLower n1) (map toLower n2)
21
22
22parseHaskellPackageName :: String -> Maybe Pkg
23parseHaskellPackageName :: String -> Maybe Pkg
23parseHaskellPackageName name =
24parseHaskellPackageName name =
24− case name `regsubmatch` "^(haskellPackages[^ \t]+)[ \t]+haskell-(.*)-ghc[0-9.]+-(.*)$" of
25+ case name `regsubmatch` "^(haskellPackages[^ \t]+)[ \t]+(.+)$" of
26+ [attr,name'] -> case name' `regsubmatch` "^haskell-(.+)-ghc[0-9.]+-(.+)$" of
25− [attr,name',version] -> case simpleParse version of
27+ [name'',version] -> case simpleParse version of
26− Just version' -> Just (name',version',attr)
28+ Just version' -> Just (name'',version',attr)
27− _ -> Nothing
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)
28− _ -> Nothing
33+ _ -> Nothing
29
34
30getHaskellPackageList :: IO Pkgset
35getHaskellPackageList :: IO Pkgset
31getHaskellPackageList = do
36getHaskellPackageList = do