git.iko.soy/typeable/cabal2nix
on master help sign in
fromGenericPackageDescription: run finalizePackageDescription with test suites enabled
commit0f4977976c1dab052d47ab359fbdf5c8220d0197 authorPeter Simons <simons@cryp.to> dateWed 26 Aug 2015, 17:01 (11 years ago) parent15ba683
1 file changed+23−10
src/Distribution/Nixpkgs/Haskell/FromCabal.hs+23−10
src/Distribution/Nixpkgs/Haskell/FromCabal.hs+23−10
@@ -3,32 +3,34 @@
33
44module Distribution.Nixpkgs.Haskell.FromCabal ( fromGenericPackageDescription, fromPackageDescription ) where
55
6−import Distribution.Nixpkgs.Haskell.FromCabal.License
7−import Distribution.Nixpkgs.Haskell.FromCabal.Name
8−import Distribution.Nixpkgs.Haskell.FromCabal.Normalize
9−import Distribution.Nixpkgs.Haskell.FromCabal.PostProcess
10−import Internal.Lens
6+import Control.Arrow ( second )
117import Data.Maybe
128import qualified Data.Set as Set
13−import Distribution.Version
9+import Data.Set ( Set )
1410import Distribution.Compiler
15−import qualified Distribution.PackageDescription as Cabal
1611import Distribution.Nixpkgs.Haskell
1712import qualified Distribution.Nixpkgs.Haskell as Nix
13+import Distribution.Nixpkgs.Haskell.Constraint
14+import Distribution.Nixpkgs.Haskell.FromCabal.License
15+import Distribution.Nixpkgs.Haskell.FromCabal.Name
16+import Distribution.Nixpkgs.Haskell.FromCabal.Normalize
17+import Distribution.Nixpkgs.Haskell.FromCabal.PostProcess
1818import qualified Distribution.Nixpkgs.Meta as Nix
1919import Distribution.Package
2020import Distribution.PackageDescription
21+import qualified Distribution.PackageDescription as Cabal
2122import Distribution.PackageDescription.Configuration
2223import Distribution.System
23−import Language.Nix
24−import Distribution.Nixpkgs.Haskell.Constraint
2524import Distribution.Text ( display )
25+import Distribution.Version
26+import Internal.Lens
27+import Language.Nix
2628
2729type HaskellResolver = Dependency -> Bool
2830type NixpkgsResolver = Identifier -> Maybe Binding
2931
3032fromGenericPackageDescription :: HaskellResolver -> NixpkgsResolver -> Platform -> CompilerInfo -> FlagAssignment -> [Constraint] -> GenericPackageDescription -> Derivation
31−fromGenericPackageDescription haskellResolver nixpkgsResolver arch compiler flags constraints descr' =
33+fromGenericPackageDescription haskellResolver nixpkgsResolver arch compiler flags constraints descr'' =
3234 case finalize haskellResolver of
3335 Left mismatch -> case finalize jailbrokenResolver of
3436 Left missing -> case finalize (const True) of
@@ -47,6 +49,17 @@ fromGenericPackageDescription haskellResolver nixpkgsResolver arch compiler flag
4749 jailbrokenResolver :: HaskellResolver
4850 jailbrokenResolver (Dependency pkg _) = haskellResolver (Dependency pkg anyVersion)
4951
52+ -- A variant of the cabal file that has all test suites enabled to ensure
53+ -- that their dependencies are recognized by finalizePackageDescription.
54+ descr' :: GenericPackageDescription
55+ descr' = descr'' { condTestSuites = flaggedTests }
56+
57+ flaggedTests :: [(String, CondTree ConfVar [Dependency] TestSuite)]
58+ flaggedTests = map (second (mapTreeData enableTest)) (condTestSuites descr'')
59+
60+ enableTest :: TestSuite -> TestSuite
61+ enableTest t = t { testEnabled = True }
62+
5063fromPackageDescription :: HaskellResolver -> NixpkgsResolver -> [Dependency] -> [Dependency] -> FlagAssignment -> PackageDescription -> Derivation
5164fromPackageDescription haskellResolver nixpkgsResolver mismatchedDeps missingDeps flags (PackageDescription {..}) = normalize $ postProcess $ def
5265 & isLibrary .~ isJust library