git.iko.soy/typeable/stackage2nix
on master help sign in
Leave benchmark dependencies
43e0013Dmitry Bushev
src/Distribution/Nixpkgs/Haskell/FromStack.hs+4−4
@@ -26,8 +26,9 @@ data PackageSetConfig = PackageSetConfig
26 , targetCompiler :: CompilerInfo }
26 , targetCompiler :: CompilerInfo }
27
27
28data PackageConfig = PackageConfig
28data PackageConfig = PackageConfig
29− { enableCheck :: Bool
29+ { enableCheck :: Bool
30− , enableHaddock :: Bool }
30+ , enableHaddock :: Bool
31+ , enableBenchmark :: Bool }
31
32
32removeTests :: GenericPackageDescription -> GenericPackageDescription
33removeTests :: GenericPackageDescription -> GenericPackageDescription
33removeTests gd = gd { condTestSuites = [] }
34removeTests gd = gd { condTestSuites = [] }
@@ -92,5 +93,4 @@ finalizePackage pkg pconf drv = drv
92 & src .~ pkgSource pkg
93 & src .~ pkgSource pkg
93 & doCheck &&~ enableCheck pconf
94 & doCheck &&~ enableCheck pconf
94 & runHaddock &&~ enableHaddock pconf
95 & runHaddock &&~ enableHaddock pconf
95− -- Will never run benchmarks
96− & benchmarkDepends .~ mempty
96+ & benchmarkDepends %~ if enableBenchmark pconf then id else const mempty
src/Distribution/Nixpkgs/Haskell/FromStack/Package.hs+7−2
@@ -23,6 +23,7 @@ import qualified Data.Set as Set
23data Node = Node
23data Node = Node
24 { _nodeDerivation :: Derivation
24 { _nodeDerivation :: Derivation
25 , _nodeTestDepends :: Set.Set String
25 , _nodeTestDepends :: Set.Set String
26+ , _nodeBenchmarkDepends :: Set.Set String
26 , _nodeOtherDepends :: Set.Set String }
27 , _nodeOtherDepends :: Set.Set String }
27
28
28makeLenses ''Node
29makeLenses ''Node
@@ -34,17 +35,21 @@ mkNode _nodeDerivation = Node{..}
34 . Set.filter isFromHackage
35 . Set.filter isFromHackage
35 $ view (s . (haskell <> tool)) _nodeDerivation
36 $ view (s . (haskell <> tool)) _nodeDerivation
36 _nodeTestDepends = haskellDependencies testDepends
37 _nodeTestDepends = haskellDependencies testDepends
38+ _nodeBenchmarkDepends = haskellDependencies benchmarkDepends
37 _nodeOtherDepends = haskellDependencies (executableDepends <> libraryDepends)
39 _nodeOtherDepends = haskellDependencies (executableDepends <> libraryDepends)
38
40
39nodeName :: Node -> String
41nodeName :: Node -> String
40nodeName = unPackageName . packageName . view (nodeDerivation . pkgid)
42nodeName = unPackageName . packageName . view (nodeDerivation . pkgid)
41
43
44+nodeCycleDepends :: Node -> Set.Set String
45+nodeCycleDepends = _nodeTestDepends <> _nodeOtherDepends
46+
42nodeDepends :: Node -> Set.Set String
47nodeDepends :: Node -> Set.Set String
43−nodeDepends = _nodeTestDepends <> _nodeOtherDepends
48+nodeDepends = _nodeTestDepends <> _nodeOtherDepends <> _nodeBenchmarkDepends
44
49
45findCycles :: [Node] -> [[Node]]
50findCycles :: [Node] -> [[Node]]
46findCycles nodes = mapMaybe cyclic $
51findCycles nodes = mapMaybe cyclic $
47− Graph.stronglyConnComp [(node, nodeName node, Set.toList $ nodeDepends node) | node <- nodes]
52+ Graph.stronglyConnComp [(node, nodeName node, Set.toList $ nodeCycleDepends node) | node <- nodes]
48 where
53 where
49 cyclic (Graph.AcyclicSCC _) = Nothing
54 cyclic (Graph.AcyclicSCC _) = Nothing
50 cyclic (Graph.CyclicSCC c) = Just c
55 cyclic (Graph.CyclicSCC c) = Just c
src/Distribution/Nixpkgs/Haskell/Stack.hs+2−1
@@ -97,7 +97,8 @@ packageDerivation conf optHackageDb stackPackage = do
97 isExtraDep = stackPackage ^. spExtraDep
97 isExtraDep = stackPackage ^. spExtraDep
98 pconf = PackageConfig
98 pconf = PackageConfig
99 { enableCheck = if isExtraDep then conf ^. spcDoCheckStackage else conf ^. spcDoCheckPackages
99 { enableCheck = if isExtraDep then conf ^. spcDoCheckStackage else conf ^. spcDoCheckPackages
100− , enableHaddock = if isExtraDep then conf ^. spcDoHaddockStackage else conf ^. spcDoHaddockPackages }
100+ , enableHaddock = if isExtraDep then conf ^. spcDoHaddockStackage else conf ^. spcDoHaddockPackages
101+ , enableBenchmark = not isExtraDep }
101 return $ finalizePackage pkg pconf drv
102 return $ finalizePackage pkg pconf drv
102
103
103genericPackageDerivation
104genericPackageDerivation
src/Runner.hs+6−4
@@ -55,8 +55,9 @@ run = do
55 else packageLoader packageSetConfig mHash pkgId
55 else packageLoader packageSetConfig mHash pkgId
56 s2nPackageSetConfig = packageSetConfig { packageLoader = s2nLoader }
56 s2nPackageSetConfig = packageSetConfig { packageLoader = s2nLoader }
57 s2nPackageConfig = PackageConfig
57 s2nPackageConfig = PackageConfig
58− { enableCheck = opts ^. optDoCheckStackage
58+ { enableCheck = opts ^. optDoCheckStackage
59− , enableHaddock = opts ^. optDoHaddockStackage }
59+ , enableHaddock = opts ^. optDoHaddockStackage
60+ , enableBenchmark = False }
60 stackagePackages <- traverse (uncurry (buildNode s2nPackageSetConfig s2nPackageConfig))
61 stackagePackages <- traverse (uncurry (buildNode s2nPackageSetConfig s2nPackageConfig))
61 $ Map.toList (bpPackages buildPlan)
62 $ Map.toList (bpPackages buildPlan)
62
63
@@ -87,8 +88,9 @@ run = do
87 let
88 let
88 buildPlanFile = LH.buildPlanFilePath (opts ^. optLtsHaskellRepo) stackResolver
89 buildPlanFile = LH.buildPlanFilePath (opts ^. optLtsHaskellRepo) stackResolver
89 packageConfig = PackageConfig
90 packageConfig = PackageConfig
90− { enableCheck = opts ^. optDoCheckStackage
91+ { enableCheck = opts ^. optDoCheckStackage
91− , enableHaddock = opts ^. optDoHaddockStackage }
92+ , enableHaddock = opts ^. optDoHaddockStackage
93+ , enableBenchmark = False }
92 buildPlan <- LH.loadBuildPlan buildPlanFile
94 buildPlan <- LH.loadBuildPlan buildPlanFile
93 packageSetConfig <- LH.buildPackageSetConfig
95 packageSetConfig <- LH.buildPackageSetConfig
94 (opts ^. optHackageDb)
96 (opts ^. optHackageDb)