@@ -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 }
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)
39nodeName :: Node -> String
41nodeName :: Node -> String
40nodeName = unPackageName . packageName . view (nodeDerivation . pkgid)
42nodeName = unPackageName . packageName . view (nodeDerivation . pkgid)
44+nodeCycleDepends :: Node -> Set.Set String
45+nodeCycleDepends = _nodeTestDepends <> _nodeOtherDepends
42nodeDepends :: Node -> Set.Set String
47nodeDepends :: Node -> Set.Set String
43−nodeDepends = _nodeTestDepends <> _nodeOtherDepends
48+nodeDepends = _nodeTestDepends <> _nodeOtherDepends <> _nodeBenchmarkDepends
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]
49 cyclic (Graph.AcyclicSCC _) = Nothing
54 cyclic (Graph.AcyclicSCC _) = Nothing
50 cyclic (Graph.CyclicSCC c) = Just c
55 cyclic (Graph.CyclicSCC c) = Just c