@@ -5,6 +5,7 @@
5module Stackage where
5module Stackage where
7import Control.DeepSeq.Generics
7import Control.DeepSeq.Generics
8+import Control.Exception ( assert )
8import Control.Monad
9import Control.Monad
9import Control.Monad.Par.Combinator
10import Control.Monad.Par.Combinator
10import Control.Monad.Par.IO
11import Control.Monad.Par.IO
@@ -18,7 +19,6 @@ import Data.Yaml
18import Distribution.Compiler
19import Distribution.Compiler
19import Distribution.Nixpkgs.Haskell.OrphanInstances ( )
20import Distribution.Nixpkgs.Haskell.OrphanInstances ( )
20import Distribution.Package
21import Distribution.Package
21−import Distribution.PackageDescription
22import Distribution.Version
22import Distribution.Version
23import GHC.Generics ( Generic )
23import GHC.Generics ( Generic )
24import Stackage.Types hiding ( display )
24import Stackage.Types hiding ( display )
@@ -28,10 +28,10 @@ import Text.PrettyPrint.HughesPJClass
29data Spec = Spec
29data Spec = Spec
30 { version :: Version
30 { version :: Version
31− , flagOverrides :: Map FlagName Bool
31+ -- , flagOverrides :: Map FlagName Bool
32 , runTests :: Bool
32 , runTests :: Bool
33 , runHaddock :: Bool
33 , runHaddock :: Bool
34− , runLinuxBuilds :: Bool
34+ -- , runLinuxBuilds :: Bool
36 deriving (Show, Generic)
36 deriving (Show, Generic)
@@ -94,13 +94,21 @@ fromBuildPlan snt bp = Snapshot snt
95fromPackagePlan :: PackagePlan -> Spec
95fromPackagePlan :: PackagePlan -> Spec
96fromPackagePlan pp = Spec (ppVersion pp)
96fromPackagePlan pp = Spec (ppVersion pp)
97− (pcFlagOverrides ppc)
97+ -- (pcFlagOverrides ppc)
98 (pcTests ppc == ExpectSuccess)
98 (pcTests ppc == ExpectSuccess)
99 (pcHaddocks ppc == ExpectSuccess)
99 (pcHaddocks ppc == ExpectSuccess)
100− (not (pcSkipBuild ppc))
100+ -- (not (pcSkipBuild ppc))
101 where ppc = ppConstraints pp
101 where ppc = ppConstraints pp
103listFiles :: FilePath -> IO [FilePath]
103listFiles :: FilePath -> IO [FilePath]
104listFiles path = do
104listFiles path = do
105 let isFile p = doesFileExist (path </> p)
105 let isFile p = doesFileExist (path </> p)
106 getDirectoryContents path >>= filterM isFile . Prelude.filter (\x -> head x /= '.')
106 getDirectoryContents path >>= filterM isFile . Prelude.filter (\x -> head x /= '.')
108+mergeSpecs :: Spec -> Spec -> Spec
109+mergeSpecs a b = Spec { version = assert (version a == version b) version a
110+ -- , flagOverrides = flagOverrides a
111+ , runTests = runTests a && runTests b
112+ , runHaddock = runHaddock a && runHaddock b
113+ -- , runLinuxBuilds = runLinuxBuilds a