git.iko.soy/typeable/cabal2nix
on master help sign in
Add IsString instances for PackageName, PackageIdentifier, and Dependency (Constraint).
cc76fe0Peter Simons
src/Distribution/Nixpkgs/Haskell/Constraint.hs+1
@@ -4,6 +4,7 @@ module Distribution.Nixpkgs.Haskell.Constraint
4
4
5import Distribution.Package
5import Distribution.Package
6import Distribution.Version
6import Distribution.Version
7+import Distribution.Nixpkgs.Haskell.OrphanInstances ( )
7
8
8type Constraint = Dependency
9type Constraint = Dependency
9
10
src/Distribution/Nixpkgs/Haskell/FromCabal/Configuration/GHC7102.hs+7−7
@@ -1,12 +1,12 @@
1+{-# LANGUAGE OverloadedStrings #-}
2+
1module Distribution.Nixpkgs.Haskell.FromCabal.Configuration.GHC7102
3module Distribution.Nixpkgs.Haskell.FromCabal.Configuration.GHC7102
2 ( Configuration(..), ghc7102
4 ( Configuration(..), ghc7102
3 ) where
5 ) where
4
6
5−import Data.Maybe ( fromMaybe )
6import qualified Data.Set as Set
7import qualified Data.Set as Set
7import Distribution.Nixpkgs.Haskell.FromCabal.Configuration
8import Distribution.Nixpkgs.Haskell.FromCabal.Configuration
8import Distribution.Nixpkgs.Haskell.FromCabal.Configuration.Maintainers
9import Distribution.Nixpkgs.Haskell.FromCabal.Configuration.Maintainers
9−import Distribution.Text ( simpleParse )
10
10
11ghc7102 :: Configuration
11ghc7102 :: Configuration
12ghc7102 = Configuration
12ghc7102 = Configuration
@@ -16,11 +16,11 @@ ghc7102 = Configuration
16
16
17 , packageMaintainers = globalPackageMaintainers
17 , packageMaintainers = globalPackageMaintainers
18
18
19− , defaultPackageOverrides = map (\s -> fromMaybe (error (show s ++ " is not a valid override selector")) (simpleParse s))
19+ , defaultPackageOverrides =
20 [ "HUnit < 1.3.0.0" -- newer versions break test-framework-hunit-0.3.0.1
20 [ "HUnit < 1.3.0.0" -- newer versions break test-framework-hunit-0.3.0.1
21 ]
21 ]
22
22
23− , corePackages = map (\s -> fromMaybe (error (show s ++ " is not a valid core package")) (simpleParse s))
23+ , corePackages =
24 [ "Cabal-1.22.4.0"
24 [ "Cabal-1.22.4.0"
25 , "array-0.5.1.0"
25 , "array-0.5.1.0"
26 , "base-4.8.1.0"
26 , "base-4.8.1.0"
@@ -45,13 +45,13 @@ ghc7102 = Configuration
45 , "xhtml-3000.2.1"
45 , "xhtml-3000.2.1"
46 ]
46 ]
47
47
48− , hardCorePackages = map (\s -> fromMaybe (error (show s ++ " is not a valid core package")) (simpleParse s))
48+ , hardCorePackages =
49 [ "bin-package-db-0.0.0.0"
49 [ "bin-package-db-0.0.0.0"
50 , "ghc-7.10.2"
50 , "ghc-7.10.2"
51 , "rts-1.0"
51 , "rts-1.0"
52 ]
52 ]
53
53
54− , extraPackages = map (\s -> fromMaybe (error (show s ++ " is not a valid extra package selector")) (simpleParse s))
54+ , extraPackages =
55 [ "aeson < 0.8" -- newer versions don't work with GHC 6.12.3
55 [ "aeson < 0.8" -- newer versions don't work with GHC 6.12.3
56 , "Cabal == 1.18.*" -- required for cabal-install et al on old GHC versions
56 , "Cabal == 1.18.*" -- required for cabal-install et al on old GHC versions
57 , "Cabal == 1.20.*" -- required for cabal-install et al on old GHC versions
57 , "Cabal == 1.20.*" -- required for cabal-install et al on old GHC versions
@@ -77,7 +77,7 @@ ghc7102 = Configuration
77 , "zlib < 0.6" -- newer versions break cabal-install
77 , "zlib < 0.6" -- newer versions break cabal-install
78 ]
78 ]
79
79
80− , dontDistributePackages = Set.fromList $ map PackageName
80+ , dontDistributePackages = Set.fromList
81 [ "3dmodels"
81 [ "3dmodels"
82 , "4Blocks"
82 , "4Blocks"
83 , "abcBridge"
83 , "abcBridge"
src/Distribution/Nixpkgs/Haskell/FromCabal/PostProcess.hs+1−1
@@ -32,7 +32,7 @@ fixGtkBuilds drv = drv & dependencies . pkgconfig %~ Set.filter (not . collidesW
32 buildDeps = Set.delete myName (setOf (dependencies . haskell . folded . localName) drv)
32 buildDeps = Set.delete myName (setOf (dependencies . haskell . folded . localName) drv)
33
33
34hooks :: [(Dependency, Derivation -> Derivation)]
34hooks :: [(Dependency, Derivation -> Derivation)]
35−hooks = over (mapped._1) (\str -> fromMaybe (error ("invalid constraint: " ++ show str)) (simpleParse str))
35+hooks =
36 [ ("Agda", set (executableDepends . tool . contains (pkg "emacs")) True . set phaseOverrides agdaPostInstall)
36 [ ("Agda", set (executableDepends . tool . contains (pkg "emacs")) True . set phaseOverrides agdaPostInstall)
37 , ("dns", set testTarget "spec") -- don't execute tests that try to access the network
37 , ("dns", set testTarget "spec") -- don't execute tests that try to access the network
38 , ("bindings-GLFW", over (libraryDepends . system) (Set.union (Set.fromList [bind "pkgs.xlibs.libXext", bind "pkgs.xlibs.libXfixes"])))
38 , ("bindings-GLFW", over (libraryDepends . system) (Set.union (Set.fromList [bind "pkgs.xlibs.libXext", bind "pkgs.xlibs.libXfixes"])))
src/Distribution/Nixpkgs/Haskell/OrphanInstances.hs+16−1
@@ -1,16 +1,19 @@
1−{-# LANGUAGE DeriveGeneric #-}
1+{-# LANGUAGE DeriveGeneric #-}
2{-# LANGUAGE StandaloneDeriving #-}
2{-# LANGUAGE StandaloneDeriving #-}
3{-# OPTIONS_GHC -fno-warn-orphans #-}
3{-# OPTIONS_GHC -fno-warn-orphans #-}
4
4
5module Distribution.Nixpkgs.Haskell.OrphanInstances ( ) where
5module Distribution.Nixpkgs.Haskell.OrphanInstances ( ) where
6
6
7import Control.DeepSeq.Generics
7import Control.DeepSeq.Generics
8+import Data.Maybe
9+import Data.String
8import Distribution.Compiler
10import Distribution.Compiler
9import Distribution.License
11import Distribution.License
10import Distribution.ModuleName hiding ( main )
12import Distribution.ModuleName hiding ( main )
11import Distribution.Package
13import Distribution.Package
12import Distribution.PackageDescription
14import Distribution.PackageDescription
13import Distribution.System
15import Distribution.System
16+import Distribution.Text
14import Distribution.Version
17import Distribution.Version
15import GHC.Generics ( Generic )
18import GHC.Generics ( Generic )
16import Language.Haskell.Extension
19import Language.Haskell.Extension
@@ -53,3 +56,15 @@ instance NFData TestSuiteInterface where rnf = genericRnf
53instance NFData TestType where rnf = genericRnf
56instance NFData TestType where rnf = genericRnf
54instance NFData VersionRange where rnf = genericRnf
57instance NFData VersionRange where rnf = genericRnf
55instance NFData a => NFData (Condition a) where rnf = genericRnf
58instance NFData a => NFData (Condition a) where rnf = genericRnf
59+
60+instance IsString PackageName where
61+ fromString = text2isString "PackageName"
62+
63+instance IsString PackageIdentifier where
64+ fromString = text2isString "PackageIdentifier"
65+
66+instance IsString Dependency where
67+ fromString = text2isString "Dependency"
68+
69+text2isString :: Text a => String -> String -> a
70+text2isString t s = fromMaybe (error ("fromString: " ++ show s ++ " is not a valid " ++ t)) (simpleParse s)