@@ -7,6 +7,8 @@ import Data.Maybe (fromMaybe)
77import Data.Semigroup ((<>))
88import Distribution.Nixpkgs.Haskell.FromStack
99import Distribution.Nixpkgs.Haskell.FromStack.Package
10+import Distribution.Nixpkgs.Haskell.Hackage as DB
11+import Distribution.Nixpkgs.Haskell.PackageSourceSpec (loadHackageDB)
1012import Distribution.Nixpkgs.Haskell.Stack
1113import Distribution.Nixpkgs.Haskell.Stack.PrettyPrinting as PP
1214import Distribution.Version (Version)
@@ -30,6 +32,7 @@ import qualified LtsHaskell as LH
3032run :: IO ()
3133run = do
3234 opts <- execParser pinfo
35+ hackageDb <- loadHackageDB (opts ^. optHackageDb) Nothing
3336 let
3437 -- With optparse-applicative it seems there's no way to make
3538 -- 'StackageOptions' optional for Stackage override and required in
@@ -46,12 +49,12 @@ run = do
4649 let
4750 stackResolver = stackConf ^. scResolver
4851 stackPackagesConfig = mkStackPackagesConfig opts
49− stackConfPackages <- traverse (fmap mkNode . packageDerivation stackPackagesConfig (opts ^. optHackageDb))
52+ stackConfPackages <- traverse (fmap mkNode . packageDerivation stackPackagesConfig hackageDb)
5053 $ stackConf ^. scPackages
5154
5255 case buildTarget of
5356 TargetStackageClosure -> do
54− (buildPlanFile, buildPlan, packageSetConfig) <- loadStackageBuildPlan stackResolver opts sopts
57+ (buildPlanFile, buildPlan, packageSetConfig) <- loadStackageBuildPlan hackageDb stackResolver opts sopts
5558 let
5659 overrideConfig = mkOverrideConfig opts (siGhcVersion $ bpSystemInfo buildPlan)
5760 stackageSetConfig = if opts ^. optTweaks . tExtraDepsRevisionLatest
@@ -84,7 +87,7 @@ run = do
8487 $ PP.overrideHaskellPackages overrideConfig (view nodeDerivation <$> stackConfPackages)
8588
8689 TargetStackagePackages -> do
87− (buildPlanFile, buildPlan, packageSetConfig) <- loadStackageBuildPlan stackResolver opts sopts
90+ (buildPlanFile, buildPlan, packageSetConfig) <- loadStackageBuildPlan hackageDb stackResolver opts sopts
8891 let
8992 overrideConfig = mkOverrideConfig opts (siGhcVersion $ bpSystemInfo buildPlan)
9093 stackageSetConfig = if opts ^. optTweaks . tExtraDepsRevisionLatest
@@ -112,7 +115,7 @@ run = do
112115
113116 -- Generate Stackage packages from resolver
114117 OriginResolver stackResolver -> do
115− (buildPlanFile, buildPlan, packageSetConfig) <- loadStackageBuildPlan stackResolver opts sopts
118+ (buildPlanFile, buildPlan, packageSetConfig) <- loadStackageBuildPlan hackageDb stackResolver opts sopts
116119 nodes <- buildStackagePackages packageSetConfig buildPlan
117120 let overrideConfig = mkOverrideConfig opts (siGhcVersion $ bpSystemInfo buildPlan)
118121 writeOutFile buildPlanFile (opts ^. optOutStackagePackages)
@@ -122,12 +125,12 @@ run = do
122125 writeOutFile buildPlanFile (opts ^. optOutDerivation)
123126 $ PP.pPrintHaskellPackages overrideConfig
124127
125−loadStackageBuildPlan :: StackResolver -> Options -> StackageOptions -> IO (FilePath, BuildPlan, PackageSetConfig)
126−loadStackageBuildPlan stackResolver opts sopts = do
128+loadStackageBuildPlan :: DB.HackageDB -> StackResolver -> Options -> StackageOptions -> IO (FilePath, BuildPlan, PackageSetConfig)
129+loadStackageBuildPlan hackageDb stackResolver opts sopts = do
127130 let buildPlanFile = LH.buildPlanFilePath (sopts ^. soptLtsHaskellRepo) stackResolver
128131 buildPlan <- LH.loadBuildPlan buildPlanFile
129132 packageSetConfig <- LH.buildPackageSetConfig
130− (opts ^. optHackageDb)
133+ hackageDb
131134 (sopts ^. soptAllCabalHashesRepo)
132135 (opts ^. optNixpkgsRepository)
133136 buildPlan