git.iko.soy/typeable/stackage2nix
on master help sign in
Upd Stackage lts
cc865d6Dmitry Bushev
.gitignore+1
@@ -1,3 +1,4 @@
1.stack-work
1.stack-work
2Paths_stackage2nix.hs
2Paths_stackage2nix.hs
3/*.nix
3/*.nix
4+/result*
src/Distribution/Nixpkgs/Haskell/FromStack.hs+1−3
@@ -27,8 +27,7 @@ data PackageSetConfig = PackageSetConfig
27
27
28data PackageConfig = PackageConfig
28data PackageConfig = PackageConfig
29 { enableCheck :: Bool
29 { enableCheck :: Bool
30− , enableHaddock :: Bool
30+ , enableHaddock :: Bool }
31− , enableBenchmark :: Bool }
32
31
33removeTests :: GenericPackageDescription -> GenericPackageDescription
32removeTests :: GenericPackageDescription -> GenericPackageDescription
34removeTests gd = gd { condTestSuites = [] }
33removeTests gd = gd { condTestSuites = [] }
@@ -93,4 +92,3 @@ finalizePackage pkg pconf drv = drv
93 & src .~ pkgSource pkg
92 & src .~ pkgSource pkg
94 & doCheck &&~ enableCheck pconf
93 & doCheck &&~ enableCheck pconf
95 & runHaddock &&~ enableHaddock pconf
94 & runHaddock &&~ enableHaddock pconf
96− & benchmarkDepends %~ if enableBenchmark pconf then id else const mempty
src/Distribution/Nixpkgs/Haskell/FromStack/Package.hs+13−5
@@ -22,10 +22,12 @@ import qualified Data.Map as Map
22import qualified Data.Set as Set
22import qualified Data.Set as Set
23
23
24data Node = Node
24data Node = Node
25− { _nodeDerivation :: Derivation
25+ { _nodeDerivation :: Derivation
26− , _nodeTestDepends :: Set.Set String
26+ , _nodeTestDepends :: Set.Set String
27− , _nodeBenchmarkDepends :: Set.Set String
27+ , _nodeBenchmarkDepends :: Set.Set String
28+ , _nodeExecutableDepends :: Set.Set String
29+ , _nodeSetupDepends :: Set.Set String
28− , _nodeOtherDepends :: Set.Set String }
30+ , _nodeOtherDepends :: Set.Set String }
29
31
30makeLenses ''Node
32makeLenses ''Node
31
33
@@ -43,6 +45,8 @@ mkNode _nodeDerivation = Node{..}
43 $ view (s . (haskell <> tool)) _nodeDerivation
45 $ view (s . (haskell <> tool)) _nodeDerivation
44 _nodeTestDepends = haskellDependencies testDepends
46 _nodeTestDepends = haskellDependencies testDepends
45 _nodeBenchmarkDepends = haskellDependencies benchmarkDepends
47 _nodeBenchmarkDepends = haskellDependencies benchmarkDepends
48+ _nodeExecutableDepends = haskellDependencies executableDepends
49+ _nodeSetupDepends = haskellDependencies setupDepends
46 _nodeOtherDepends = haskellDependencies (executableDepends <> libraryDepends)
50 _nodeOtherDepends = haskellDependencies (executableDepends <> libraryDepends)
47
51
48nodeName :: Node -> String
52nodeName :: Node -> String
@@ -52,7 +56,11 @@ nodeCycleDepends :: Node -> Set.Set String
52nodeCycleDepends = _nodeTestDepends <> _nodeOtherDepends
56nodeCycleDepends = _nodeTestDepends <> _nodeOtherDepends
53
57
54nodeDepends :: Node -> Set.Set String
58nodeDepends :: Node -> Set.Set String
55−nodeDepends = _nodeTestDepends <> _nodeOtherDepends <> _nodeBenchmarkDepends
59+nodeDepends = _nodeTestDepends
60+ <> _nodeOtherDepends
61+ <> _nodeBenchmarkDepends
62+ <> _nodeExecutableDepends
63+ <> _nodeSetupDepends
56
64
57findCycles :: [Node] -> [[Node]]
65findCycles :: [Node] -> [[Node]]
58findCycles nodes = mapMaybe cyclic $
66findCycles nodes = mapMaybe cyclic $
src/Distribution/Nixpkgs/Haskell/Stack.hs+1−2
@@ -97,8 +97,7 @@ 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 }
102 return $ finalizePackage pkg pconf drv
101 return $ finalizePackage pkg pconf drv
103
102
104genericPackageDerivation
103genericPackageDerivation
src/Runner.hs+7−4
@@ -56,12 +56,15 @@ run = do
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 }
61 stackagePackages <- traverse (uncurry (buildNode s2nPackageSetConfig s2nPackageConfig))
60 stackagePackages <- traverse (uncurry (buildNode s2nPackageSetConfig s2nPackageConfig))
62 $ Map.toAscList (bpPackages buildPlan)
61 $ Map.toAscList (bpPackages buildPlan)
63
62
64 let
63 let
64+ -- Nixpkgs generic-builder puts hscolour on path for all libraries
65+ withHscolour pkgs =
66+ let hscolour = F.find ((== "hscolour") . nodeName) stackagePackages
67+ in maybe pkgs (`Set.insert` pkgs) hscolour
65 -- Find all reachable dependencies in stackage set to stick into
68 -- Find all reachable dependencies in stackage set to stick into
66 -- stackage packages file. This is performed on the full stackage
69 -- stackage packages file. This is performed on the full stackage
67 -- set rather than pruning stackage packages beforehand because
70 -- set rather than pruning stackage packages beforehand because
@@ -71,6 +74,7 @@ run = do
71 -- listed as well.
74 -- listed as well.
72 nodes = case opts ^. optOutPackagesClosure of
75 nodes = case opts ^. optOutPackagesClosure of
73 True -> Set.toAscList
76 True -> Set.toAscList
77+ $ withHscolour
74 $ flip reachableDependencies stackagePackages
78 $ flip reachableDependencies stackagePackages
75 -- Originally reachable nodes are root nodes
79 -- Originally reachable nodes are root nodes
76 $ L.filter (\n -> mkPackageName (nodeName n) `Set.member` reachable) stackagePackages
80 $ L.filter (\n -> mkPackageName (nodeName n) `Set.member` reachable) stackagePackages
@@ -88,8 +92,7 @@ run = do
88 buildPlanFile = LH.buildPlanFilePath (opts ^. optLtsHaskellRepo) stackResolver
92 buildPlanFile = LH.buildPlanFilePath (opts ^. optLtsHaskellRepo) stackResolver
89 packageConfig = PackageConfig
93 packageConfig = PackageConfig
90 { enableCheck = opts ^. optDoCheckStackage
94 { enableCheck = opts ^. optDoCheckStackage
91− , enableHaddock = opts ^. optDoHaddockStackage
95+ , enableHaddock = opts ^. optDoHaddockStackage }
92− , enableBenchmark = False }
93 buildPlan <- LH.loadBuildPlan buildPlanFile
96 buildPlan <- LH.loadBuildPlan buildPlanFile
94 packageSetConfig <- LH.buildPackageSetConfig
97 packageSetConfig <- LH.buildPackageSetConfig
95 (opts ^. optHackageDb)
98 (opts ^. optHackageDb)
stack-ghc-822.yaml+1−1
@@ -1 +1 @@
1−resolver: nightly-2017-12-08
1+resolver: lts-10.0
stack.yaml+1−1
@@ -1 +1 @@
1−stack-ghc-802.yaml
1+stack-ghc-822.yaml