git.iko.soy/typeable/stackage2nix
on master help sign in
Get latest cabal revision for override deps
commit96e0576ebfc14b23d53ed07ca309b1045f199d14 authorDmitry Bushev <bushevdv@gmail.com> dateFri 30 Jun 2017, 16:17 (9 years ago) parentde2d282
1 file changed+13−1
src/Runner.hs+13−1
src/Runner.hs+13−1
@@ -1,6 +1,7 @@
11module Runner ( run ) where
22
33import Control.Lens
4+import Data.Foldable as F
45import Data.Functor
56import Distribution.Nixpkgs.Haskell.FromStack
67import Distribution.Nixpkgs.Haskell.FromStack.Package
@@ -8,6 +9,7 @@ import Distribution.Nixpkgs.Haskell.Stack
89import Distribution.Nixpkgs.Haskell.Stack.PrettyPrinting as PP
910import Distribution.Version (Version(..))
1011import Distribution.Compiler (AbiTag(..), unknownCompilerInfo)
12+import Distribution.Package (PackageName(..), pkgName)
1113import Language.Nix as Nix
1214import Options.Applicative
1315import Runner.Cli
@@ -18,6 +20,7 @@ import System.FilePath as Path
1820import System.IO (withFile, IOMode(..), hPutStrLn, hPrint)
1921import Text.PrettyPrint.HughesPJClass (render)
2022
23+import qualified Data.Set as Set
2124import qualified Data.Map as Map
2225import qualified Stackage2nix as S2n
2326
@@ -52,8 +55,17 @@ run = do
5255 withFile (opts ^. optOutDerivation) WriteMode $ \h -> do
5356 hPutStrLn h ("# Generated by stack2nix from " ++ stackYaml ^. syFilePath)
5457 hPrint h out
58+ let
59+ reachable = fmap PackageName
60+ $ F.toList . F.foldr1 Set.union
61+ $ nodeDepends . mkNode <$> packages
62+ s2nLoader mHash pkgId =
63+ if pkgName pkgId `elem` reachable
64+ then packageLoader packageSetConfig Nothing pkgId
65+ else packageLoader packageSetConfig mHash pkgId
66+ s2nPackageSetConfig = packageSetConfig { packageLoader = s2nLoader }
5567 -- generate stackage packages
56− nodes <- traverse (uncurry (buildNodeM packageSetConfig))
68+ nodes <- traverse (uncurry (buildNodeM s2nPackageSetConfig))
5769 $ Map.toList (bpPackages buildPlan)
5870 withFile (opts ^. optOutStackagePackages) WriteMode $ \h -> do
5971 hPutStrLn h ("# Generated by stack2nix from " ++ S2n.optBuildPlanFile s2nOpts)