@@ -108,7 +108,7 @@ module Distribution.Client.ProjectPlanning
108108 , reportPlanningFailure
109109 ) where
110110
111- import Distribution.Client.Compat.Prelude
111+ import Distribution.Client.Compat.Prelude hiding ( get )
112112import Text.PrettyPrint
113113 ( comma
114114 , fsep
@@ -231,7 +231,7 @@ import qualified Distribution.Compat.Graph as Graph
231231import Control.Exception (assert )
232232import Control.Monad (sequence )
233233import Control.Monad.IO.Class (liftIO )
234- import Control.Monad.State as State (StateT (.. ), execStateT , gets , modify )
234+ import Control.Monad.State (StateT (.. ), evalStateT , execStateT , gets , modify , get )
235235import Data.Foldable (fold )
236236import Data.List (deleteBy , groupBy )
237237import qualified Data.List.NonEmpty as NE
@@ -245,6 +245,7 @@ import GHC.Stack (HasCallStack)
245245import Distribution.Client.InstallPlan (foldPlanPackage )
246246import Distribution.Solver.Types.ResolverPackage (solverId )
247247import qualified Distribution.Solver.Types.ResolverPackage as ResolverPackage
248+ import System.Console.ANSI
248249
249250-- | Check that an 'ElaboratedConfiguredPackage' actually makes
250251-- sense under some 'ElaboratedSharedConfig'.
@@ -694,6 +695,23 @@ rebuildInstallPlan
694695 -- changes, so it's worth caching them separately.
695696 improvedPlan <- phaseImprovePlan elaboratedPlan elaboratedShared
696697
698+ let s = flip foldMap (InstallPlan. toList elaboratedPlan) $
699+ foldPlanPackage
700+ (Set. singleton . Graph. nodeKey)
701+ (const Set. empty)
702+ badMsg s = Disp. text (setSGRCode [SetColor Foreground Vivid Red ] <> s <> setSGRCode [Reset ])
703+ goodMsg s = Disp. text (setSGRCode [SetColor Foreground Vivid Green ] <> s <> setSGRCode [Reset ])
704+ flip evalStateT s $ for_ (InstallPlan. executionOrder elaboratedPlan) $ \ (ReadyPackage pkg) -> do
705+ s' <- get
706+ liftIO $ infoNoWrap verbosity $ show $
707+ Disp. hang (Disp. text " Elaborated package: " <+> pretty (Graph. nodeKey pkg)) 4 $ vcat
708+ [ Disp. hang (text " elabOrderDependencies" ) 4 $ Disp. vcat
709+ [ pretty dep <+> Disp. parens (if Set. member dep s' then goodMsg " preset" else badMsg " missing" )
710+ | dep <- sort (elabOrderDependencies pkg)
711+ ]
712+ ]
713+ modify (Set. insert (Graph. nodeKey pkg))
714+
697715 return (improvedPlan, elaboratedPlan, elaboratedShared, totalIndexState, activeRepos)
698716 where
699717 fileMonitorSolverPlan = newFileMonitorInCacheDir " solver-plan"
@@ -2305,15 +2323,17 @@ elaborateInstallPlan
23052323 elabRegisterPackageDBStack = buildAndRegisterDbs elabStage
23062324 elabSetupPackageDBStack = buildAndRegisterDbs (prevStage elabStage)
23072325
2326+ -- used in fixupBuildStyle :facepalm:
23082327 elabInplaceBuildPackageDBStack = inplacePackageDbs elabStage
23092328 elabInplaceRegisterPackageDBStack = inplacePackageDbs elabStage
23102329 elabInplaceSetupPackageDBStack = inplacePackageDbs (prevStage elabStage)
23112330
23122331 buildAndRegisterDbs stage
23132332 | shouldBuildInplaceOnly pkg = inplacePackageDbs stage
23142333 | otherwise = corePackageDbs stage
2334+
23152335 -- Same as corePackageDbs but with the addition of the in-place packagedb.
2316- inplacePackageDbs stage = corePackageDbs stage ++ [distPackageDB ( compilerId (getStage compilers stage))]
2336+ inplacePackageDbs stage = corePackageDbs stage ++ [SpecificPackageDB (distDirectory </> " packagedb " </> prettyShow stage </> prettyShow ( compilerId (getStage compilers stage) ))]
23172337
23182338 -- The project packagedbs (typically the global packagedb but others can be added) followed by the store.
23192339 corePackageDbs stage = getStage packageDbs stage ++ [storePackageDB storeDirLayout (getStage compilers stage)]
0 commit comments