git.iko.soy/typeable/stackage2nix
on master help sign in
Move plan file constructor function to LtsHaskell
e34e7bcDmitry Bushev
src/LtsHaskell.hs+13−4
@@ -1,8 +1,8 @@
1module LtsHaskell where
1module LtsHaskell where
2
2
3import AllCabalHashes
3import AllCabalHashes
4−import Stackage.BuildPlan
4+import Control.Lens
5−import Stackage.Types (SystemInfo(..))
5+import Data.Maybe
6import Distribution.Text (display)
6import Distribution.Text (display)
7import Control.Monad
7import Control.Monad
8import Distribution.Compiler (CompilerInfo(..), AbiTag(NoAbiTag), CompilerId(..), CompilerFlavor(GHC))
8import Distribution.Compiler (CompilerInfo(..), AbiTag(NoAbiTag), CompilerId(..), CompilerFlavor(GHC))
@@ -15,8 +15,10 @@ import Distribution.Nixpkgs.PackageMap (readNixpkgPackageMap, resolve)
15import Distribution.Version (Version, withinRange)
15import Distribution.Version (Version, withinRange)
16import Language.Haskell.Extension (Language(Haskell98, Haskell2010))
16import Language.Haskell.Extension (Language(Haskell98, Haskell2010))
17import Language.Nix
17import Language.Nix
18−import Control.Lens
18+import Stack.Config
19−import Data.Maybe
19+import Stackage.BuildPlan
20+import Stackage.Types (SystemInfo(..))
21+import System.FilePath as Path
20
22
21import qualified Data.Yaml as Yaml
23import qualified Data.Yaml as Yaml
22import qualified Data.Map as Map
24import qualified Data.Map as Map
@@ -66,3 +68,10 @@ buildPackageSetConfig optAllCabalHashes optNixpkgsRepository buildPlan = do
66 , targetCompiler = ghcCompilerInfo (siGhcVersion systemInfo)
68 , targetCompiler = ghcCompilerInfo (siGhcVersion systemInfo)
67 , nixpkgsResolver = resolve (Map.map (Set.map (over path ("pkgs":))) nixpkgs)
69 , nixpkgsResolver = resolve (Map.map (Set.map (over path ("pkgs":))) nixpkgs)
68 , haskellResolver = buildPlanContainsDependency packageVersions }
70 , haskellResolver = buildPlanContainsDependency packageVersions }
71+
72+-- Path to Yaml build definition file in lts-haskell repository
73+buildPlanFilePath :: FilePath -> StackResolver -> FilePath
74+buildPlanFilePath ltsRepoDir resolver =
75+ ltsRepoDir Path.</>
76+ (resolver ^. to unStackResolver) Path.<.>
77+ ".yaml"
src/Runner.hs+1−6
@@ -16,7 +16,6 @@ import Runner.Cli
16import Stack.Config
16import Stack.Config
17import Stack.Types
17import Stack.Types
18import Stackage.Types
18import Stackage.Types
19−import System.FilePath as Path
20import System.IO (withFile, IOMode(..), hPutStrLn, hPrint)
19import System.IO (withFile, IOMode(..), hPutStrLn, hPrint)
21import Text.PrettyPrint.HughesPJClass (render)
20import Text.PrettyPrint.HughesPJClass (render)
22
21
@@ -32,11 +31,7 @@ run = do
32 Just p -> putStrLn "Getting project config file from STACK_YAML environment" $> p
31 Just p -> putStrLn "Getting project config file from STACK_YAML environment" $> p
33 Nothing -> pure $ opts ^. optStackYaml
32 Nothing -> pure $ opts ^. optStackYaml
34 stackConf <- either fail pure =<< readStackConfig stackYaml
33 stackConf <- either fail pure =<< readStackConfig stackYaml
35− let
36− buildPlanFile =
37− (opts ^. optLtsHaskellRepo) Path.</>
34+ let buildPlanFile = LH.buildPlanFilePath (opts ^. optLtsHaskellRepo) (stackConf ^. scResolver)
38− (stackConf ^. scResolver . to unStackResolver) Path.<.>
39− ".yaml"
40 buildPlan <- LH.loadBuildPlan buildPlanFile
35 buildPlan <- LH.loadBuildPlan buildPlanFile
41 packageSetConfig <- LH.buildPackageSetConfig
36 packageSetConfig <- LH.buildPackageSetConfig
42 (opts ^. optAllCabalHashesRepo)
37 (opts ^. optAllCabalHashesRepo)