@@ -1946,7 +1946,7 @@ elaborateInstallPlan
19461946 -- correctly.
19471947 let elab1 =
19481948 elab0
1949- { elabPkgOrComp = ElabComponent $ elab_comp
1949+ { elabPkgOrComp = ElabComponent elab_comp
19501950 }
19511951 cid = case elabBuildStyle elab0 of
19521952 BuildInplaceOnly {} ->
@@ -2131,15 +2131,7 @@ elaborateInstallPlan
21312131 -> LogProgress ElaboratedConfiguredPackage
21322132 elaborateSolverToPackage
21332133 pkgWhyNotPerComponent
2134- pkg@ ( SolverPackage
2135- _stage
2136- _qpn
2137- (SourcePackage pkgid _gpd _srcloc _descOverride)
2138- _flags
2139- _stanzas
2140- _deps0
2141- _exe_deps0
2142- )
2134+ pkg@ SolverPackage {solverPkgSource = SourcePackage {srcpkgPackageId}}
21432135 compGraph
21442136 comps = do
21452137 -- Knot tying: the final elab includes the
@@ -2189,7 +2181,7 @@ elaborateInstallPlan
21892181
21902182 pkgInstalledId
21912183 | shouldBuildInplaceOnly pkg =
2192- mkComponentId (prettyShow pkgid ++ " -inplace" )
2184+ mkComponentId (prettyShow srcpkgPackageId ++ " -inplace" )
21932185 | otherwise =
21942186 assert (isJust elabPkgSourceHash) $
21952187 hashedInstalledPackageId
@@ -2200,7 +2192,7 @@ elaborateInstallPlan
22002192
22012193 -- Need to filter out internal dependencies, because they don't
22022194 -- correspond to anything real anymore.
2203- isExternal confid = confSrcId confid /= pkgid
2195+ isExternal confid = confSrcId confid /= srcpkgPackageId
22042196 isExternal' (WithStage stage confId) = stage /= elabStage || isExternal confId
22052197
22062198 pkgLibDependencies =
@@ -2248,15 +2240,19 @@ elaborateInstallPlan
22482240 :: SolverPackage UnresolvedPkgLoc
22492241 -> ElaboratedConfiguredPackage
22502242 elaborateSolverToCommon
2251- pkg@ ( SolverPackage
2252- stage
2253- _qpn
2254- (SourcePackage pkgid gdesc srcloc descOverride)
2255- flags
2256- stanzas
2257- deps0
2258- _exe_deps0
2259- ) =
2243+ pkg@ SolverPackage
2244+ { solverPkgStage
2245+ , solverPkgSource =
2246+ SourcePackage
2247+ { srcpkgPackageId
2248+ , srcpkgDescription
2249+ , srcpkgSource
2250+ , srcpkgDescrOverride
2251+ }
2252+ , solverPkgFlags
2253+ , solverPkgStanzas
2254+ , solverPkgLibDeps
2255+ } =
22602256 elaboratedPackage
22612257 where
22622258 elaboratedPackage = ElaboratedConfiguredPackage {.. }
@@ -2269,32 +2265,32 @@ elaborateInstallPlan
22692265 elabModuleShape = error " elaborateSolverToCommon: elabModuleShape"
22702266
22712267 elabIsCanonical = True
2272- elabPkgSourceId = pkgid
2268+ elabPkgSourceId = srcpkgPackageId
22732269
2274- elabStage = stage
2275- elabCompiler = toolchainCompiler (getStage toolchains stage )
2276- elabPlatform = toolchainPlatform (getStage toolchains stage )
2277- elabProgramDb = toolchainProgramDb (getStage toolchains stage )
2270+ elabStage = solverPkgStage
2271+ elabCompiler = toolchainCompiler (getStage toolchains solverPkgStage )
2272+ elabPlatform = toolchainPlatform (getStage toolchains solverPkgStage )
2273+ elabProgramDb = toolchainProgramDb (getStage toolchains solverPkgStage )
22782274
22792275 elabPkgDescription = case PD. finalizePD
2280- flags
2276+ solverPkgFlags
22812277 elabEnabledSpec
22822278 (const Satisfied )
22832279 elabPlatform
22842280 (compilerInfo elabCompiler)
22852281 []
2286- gdesc of
2282+ srcpkgDescription of
22872283 Right (desc, _) -> desc
22882284 Left _ -> error " Failed to finalizePD in elaborateSolverToCommon"
2289- elabFlagAssignment = flags
2285+ elabFlagAssignment = solverPkgFlags
22902286 elabFlagDefaults =
22912287 PD. mkFlagAssignment
22922288 [ (PD. flagName flag, PD. flagDefault flag)
2293- | flag <- PD. genPackageFlags gdesc
2289+ | flag <- PD. genPackageFlags srcpkgDescription
22942290 ]
22952291
2296- elabEnabledSpec = enableStanzas stanzas
2297- elabStanzasAvailable = stanzas
2292+ elabEnabledSpec = enableStanzas solverPkgStanzas
2293+ elabStanzasAvailable = solverPkgStanzas
22982294
22992295 elabStanzasRequested :: OptionalStanzaMap (Maybe Bool )
23002296 elabStanzasRequested = optStanzaTabulate $ \ o -> case o of
@@ -2308,8 +2304,8 @@ elaborateInstallPlan
23082304 BenchStanzas -> listToMaybe [v | v <- maybeToList benchmarks, _ <- PD. benchmarks elabPkgDescription]
23092305 where
23102306 tests , benchmarks :: Maybe Bool
2311- tests = perPkgOptionMaybe pkgid packageConfigTests
2312- benchmarks = perPkgOptionMaybe pkgid packageConfigBenchmarks
2307+ tests = perPkgOptionMaybe srcpkgPackageId packageConfigTests
2308+ benchmarks = perPkgOptionMaybe srcpkgPackageId packageConfigBenchmarks
23132309
23142310 -- This is a placeholder which will get updated by 'pruneInstallPlanPass1'
23152311 -- and 'pruneInstallPlanPass2'. We can't populate it here
@@ -2327,7 +2323,7 @@ elaborateInstallPlan
23272323 elabHaddockTargets = []
23282324
23292325 elabBuildHaddocks =
2330- perPkgOptionFlag pkgid False packageConfigDocumentation
2326+ perPkgOptionFlag srcpkgPackageId False packageConfigDocumentation
23312327
23322328 -- `documentation: true` should imply `-haddock` for GHC
23332329 addHaddockIfDocumentationEnabled :: ConfiguredProgram -> ConfiguredProgram
@@ -2336,8 +2332,8 @@ elaborateInstallPlan
23362332 then cp{programOverrideArgs = " -haddock" : programOverrideArgs}
23372333 else cp
23382334
2339- elabPkgSourceLocation = srcloc
2340- elabPkgSourceHash = Map. lookup pkgid sourcePackageHashes
2335+ elabPkgSourceLocation = srcpkgSource
2336+ elabPkgSourceHash = Map. lookup srcpkgPackageId sourcePackageHashes
23412337 elabLocalToProject = isLocalToProject pkg
23422338 elabBuildStyle =
23432339 if shouldBuildInplaceOnly pkg
@@ -2353,7 +2349,7 @@ elaborateInstallPlan
23532349 elabSetupScriptStyle
23542350 elabPkgDescription
23552351 libDepGraph
2356- deps0
2352+ solverPkgLibDeps
23572353 elabSetupPackageDBStack = buildAndRegisterDbs
23582354
23592355 inplacePackageDbs = corePackageDbs ++ [distPackageDB (compilerId elabCompiler)]
@@ -2368,49 +2364,49 @@ elaborateInstallPlan
23682364 | shouldBuildInplaceOnly pkg = inplacePackageDbs
23692365 | otherwise = corePackageDbs
23702366
2371- elabPkgDescriptionOverride = descOverride
2367+ elabPkgDescriptionOverride = srcpkgDescrOverride
23722368
23732369 elabBuildOptions =
23742370 LBC. BuildOptions
2375- { withVanillaLib = perPkgOptionFlag pkgid True packageConfigVanillaLib -- TODO: [required feature]: also needs to be handled recursively
2376- , withSharedLib = pkgid `Set.member` pkgsUseSharedLibrary
2377- , withStaticLib = perPkgOptionFlag pkgid False packageConfigStaticLib
2371+ { withVanillaLib = perPkgOptionFlag srcpkgPackageId True packageConfigVanillaLib -- TODO: [required feature]: also needs to be handled recursively
2372+ , withSharedLib = srcpkgPackageId `Set.member` pkgsUseSharedLibrary
2373+ , withStaticLib = perPkgOptionFlag srcpkgPackageId False packageConfigStaticLib
23782374 , withDynExe =
2379- perPkgOptionFlag pkgid False packageConfigDynExe
2375+ perPkgOptionFlag srcpkgPackageId False packageConfigDynExe
23802376 -- We can't produce a dynamic executable if the user
23812377 -- wants to enable executable profiling but the
23822378 -- compiler doesn't support prof+dyn.
23832379 && (okProfDyn || not profExe)
2384- , withFullyStaticExe = perPkgOptionFlag pkgid False packageConfigFullyStaticExe
2385- , withGHCiLib = perPkgOptionFlag pkgid False packageConfigGHCiLib -- TODO: [required feature] needs to default to enabled on windows still
2386- , withProfExe = profExe
2387- , withProfLib = pkgid `Set.member` pkgsUseProfilingLibrary
2388- , withProfLibShared = pkgid `Set.member` pkgsUseProfilingLibraryShared
2389- , exeCoverage = perPkgOptionFlag pkgid False packageConfigCoverage
2390- , libCoverage = perPkgOptionFlag pkgid False packageConfigCoverage
2391- , withOptimization = perPkgOptionFlag pkgid NormalOptimisation packageConfigOptimization
2392- , splitObjs = perPkgOptionFlag pkgid False packageConfigSplitObjs
2393- , splitSections = perPkgOptionFlag pkgid False packageConfigSplitSections
2394- , stripLibs = perPkgOptionFlag pkgid False packageConfigStripLibs
2395- , stripExes = perPkgOptionFlag pkgid False packageConfigStripExes
2396- , withDebugInfo = perPkgOptionFlag pkgid NoDebugInfo packageConfigDebugInfo
2397- , relocatable = perPkgOptionFlag pkgid False packageConfigRelocatable
2380+ , withFullyStaticExe = perPkgOptionFlag srcpkgPackageId False packageConfigFullyStaticExe
2381+ , withGHCiLib = perPkgOptionFlag srcpkgPackageId False packageConfigGHCiLib -- TODO: [required feature] needs to default to enabled on windows still
2382+ , withProfExe = perPkgOptionFlag srcpkgPackageId False packageConfigProf
2383+ , withProfLib = srcpkgPackageId `Set.member` pkgsUseProfilingLibrary
2384+ , withProfLibShared = srcpkgPackageId `Set.member` pkgsUseProfilingLibraryShared
2385+ , exeCoverage = perPkgOptionFlag srcpkgPackageId False packageConfigCoverage
2386+ , libCoverage = perPkgOptionFlag srcpkgPackageId False packageConfigCoverage
2387+ , withOptimization = perPkgOptionFlag srcpkgPackageId NormalOptimisation packageConfigOptimization
2388+ , splitObjs = perPkgOptionFlag srcpkgPackageId False packageConfigSplitObjs
2389+ , splitSections = perPkgOptionFlag srcpkgPackageId False packageConfigSplitSections
2390+ , stripLibs = perPkgOptionFlag srcpkgPackageId False packageConfigStripLibs
2391+ , stripExes = perPkgOptionFlag srcpkgPackageId False packageConfigStripExes
2392+ , withDebugInfo = perPkgOptionFlag srcpkgPackageId NoDebugInfo packageConfigDebugInfo
2393+ , relocatable = perPkgOptionFlag srcpkgPackageId False packageConfigRelocatable
23982394 , withProfLibDetail = elabProfExeDetail
23992395 , withProfExeDetail = elabProfLibDetail
24002396 }
24012397 okProfDyn = profilingDynamicSupportedOrUnknown elabCompiler
2402- profExe = perPkgOptionFlag pkgid False packageConfigProf
2398+ profExe = perPkgOptionFlag srcpkgPackageId False packageConfigProf
24032399
24042400 ( elabProfExeDetail
24052401 , elabProfLibDetail
24062402 ) =
24072403 perPkgOptionLibExeFlag
2408- pkgid
2404+ srcpkgPackageId
24092405 ProfDetailDefault
24102406 packageConfigProfDetail
24112407 packageConfigProfLibDetail
24122408
2413- elabDumpBuildInfo = perPkgOptionFlag pkgid NoDumpBuildInfo packageConfigDumpBuildInfo
2409+ elabDumpBuildInfo = perPkgOptionFlag srcpkgPackageId NoDumpBuildInfo packageConfigDumpBuildInfo
24142410
24152411 -- Combine the configured compiler prog settings with the user-supplied
24162412 -- config. For the compiler progs any user-supplied config was taken
@@ -2422,7 +2418,7 @@ elaborateInstallPlan
24222418 [ (programId prog, programPath prog)
24232419 | prog <- configuredPrograms elabProgramDb
24242420 ]
2425- <> perPkgOptionMapLast pkgid packageConfigProgramPaths
2421+ <> perPkgOptionMapLast srcpkgPackageId packageConfigProgramPaths
24262422 elabProgramArgs =
24272423 Map. unionWith
24282424 (++)
@@ -2433,46 +2429,46 @@ elaborateInstallPlan
24332429 , not (null args)
24342430 ]
24352431 )
2436- (perPkgOptionMapMappend pkgid packageConfigProgramArgs)
2437- elabProgramPathExtra = perPkgOptionNubList pkgid packageConfigProgramPathExtra
2432+ (perPkgOptionMapMappend srcpkgPackageId packageConfigProgramArgs)
2433+ elabProgramPathExtra = perPkgOptionNubList srcpkgPackageId packageConfigProgramPathExtra
24382434 elabConfiguredPrograms = configuredPrograms elabProgramDb
2439- elabConfigureScriptArgs = perPkgOptionList pkgid packageConfigConfigureArgs
2440- elabExtraLibDirs = perPkgOptionList pkgid packageConfigExtraLibDirs
2441- elabExtraLibDirsStatic = perPkgOptionList pkgid packageConfigExtraLibDirsStatic
2442- elabExtraFrameworkDirs = perPkgOptionList pkgid packageConfigExtraFrameworkDirs
2443- elabExtraIncludeDirs = perPkgOptionList pkgid packageConfigExtraIncludeDirs
2444- elabProgPrefix = perPkgOptionMaybe pkgid packageConfigProgPrefix
2445- elabProgSuffix = perPkgOptionMaybe pkgid packageConfigProgSuffix
2446-
2447- elabHaddockHoogle = perPkgOptionFlag pkgid False packageConfigHaddockHoogle
2448- elabHaddockHtml = perPkgOptionFlag pkgid False packageConfigHaddockHtml
2449- elabHaddockHtmlLocation = perPkgOptionMaybe pkgid packageConfigHaddockHtmlLocation
2450- elabHaddockForeignLibs = perPkgOptionFlag pkgid False packageConfigHaddockForeignLibs
2451- elabHaddockForHackage = perPkgOptionFlag pkgid Cabal. ForDevelopment packageConfigHaddockForHackage
2452- elabHaddockExecutables = perPkgOptionFlag pkgid False packageConfigHaddockExecutables
2453- elabHaddockTestSuites = perPkgOptionFlag pkgid False packageConfigHaddockTestSuites
2454- elabHaddockBenchmarks = perPkgOptionFlag pkgid False packageConfigHaddockBenchmarks
2455- elabHaddockInternal = perPkgOptionFlag pkgid False packageConfigHaddockInternal
2456- elabHaddockCss = perPkgOptionMaybe pkgid packageConfigHaddockCss
2457- elabHaddockLinkedSource = perPkgOptionFlag pkgid False packageConfigHaddockLinkedSource
2458- elabHaddockQuickJump = perPkgOptionFlag pkgid False packageConfigHaddockQuickJump
2459- elabHaddockHscolourCss = perPkgOptionMaybe pkgid packageConfigHaddockHscolourCss
2460- elabHaddockContents = perPkgOptionMaybe pkgid packageConfigHaddockContents
2461- elabHaddockIndex = perPkgOptionMaybe pkgid packageConfigHaddockIndex
2462- elabHaddockBaseUrl = perPkgOptionMaybe pkgid packageConfigHaddockBaseUrl
2463- elabHaddockResourcesDir = perPkgOptionMaybe pkgid packageConfigHaddockResourcesDir
2464- elabHaddockOutputDir = perPkgOptionMaybe pkgid packageConfigHaddockOutputDir
2465- elabHaddockUseUnicode = perPkgOptionFlag pkgid False packageConfigHaddockUseUnicode
2466-
2467- elabTestMachineLog = perPkgOptionMaybe pkgid packageConfigTestMachineLog
2468- elabTestHumanLog = perPkgOptionMaybe pkgid packageConfigTestHumanLog
2469- elabTestShowDetails = perPkgOptionMaybe pkgid packageConfigTestShowDetails
2470- elabTestKeepTix = perPkgOptionFlag pkgid False packageConfigTestKeepTix
2471- elabTestWrapper = perPkgOptionMaybe pkgid packageConfigTestWrapper
2472- elabTestFailWhenNoTestSuites = perPkgOptionFlag pkgid False packageConfigTestFailWhenNoTestSuites
2473- elabTestTestOptions = perPkgOptionList pkgid packageConfigTestTestOptions
2474-
2475- elabBenchmarkOptions = perPkgOptionList pkgid packageConfigBenchmarkOptions
2435+ elabConfigureScriptArgs = perPkgOptionList srcpkgPackageId packageConfigConfigureArgs
2436+ elabExtraLibDirs = perPkgOptionList srcpkgPackageId packageConfigExtraLibDirs
2437+ elabExtraLibDirsStatic = perPkgOptionList srcpkgPackageId packageConfigExtraLibDirsStatic
2438+ elabExtraFrameworkDirs = perPkgOptionList srcpkgPackageId packageConfigExtraFrameworkDirs
2439+ elabExtraIncludeDirs = perPkgOptionList srcpkgPackageId packageConfigExtraIncludeDirs
2440+ elabProgPrefix = perPkgOptionMaybe srcpkgPackageId packageConfigProgPrefix
2441+ elabProgSuffix = perPkgOptionMaybe srcpkgPackageId packageConfigProgSuffix
2442+
2443+ elabHaddockHoogle = perPkgOptionFlag srcpkgPackageId False packageConfigHaddockHoogle
2444+ elabHaddockHtml = perPkgOptionFlag srcpkgPackageId False packageConfigHaddockHtml
2445+ elabHaddockHtmlLocation = perPkgOptionMaybe srcpkgPackageId packageConfigHaddockHtmlLocation
2446+ elabHaddockForeignLibs = perPkgOptionFlag srcpkgPackageId False packageConfigHaddockForeignLibs
2447+ elabHaddockForHackage = perPkgOptionFlag srcpkgPackageId Cabal. ForDevelopment packageConfigHaddockForHackage
2448+ elabHaddockExecutables = perPkgOptionFlag srcpkgPackageId False packageConfigHaddockExecutables
2449+ elabHaddockTestSuites = perPkgOptionFlag srcpkgPackageId False packageConfigHaddockTestSuites
2450+ elabHaddockBenchmarks = perPkgOptionFlag srcpkgPackageId False packageConfigHaddockBenchmarks
2451+ elabHaddockInternal = perPkgOptionFlag srcpkgPackageId False packageConfigHaddockInternal
2452+ elabHaddockCss = perPkgOptionMaybe srcpkgPackageId packageConfigHaddockCss
2453+ elabHaddockLinkedSource = perPkgOptionFlag srcpkgPackageId False packageConfigHaddockLinkedSource
2454+ elabHaddockQuickJump = perPkgOptionFlag srcpkgPackageId False packageConfigHaddockQuickJump
2455+ elabHaddockHscolourCss = perPkgOptionMaybe srcpkgPackageId packageConfigHaddockHscolourCss
2456+ elabHaddockContents = perPkgOptionMaybe srcpkgPackageId packageConfigHaddockContents
2457+ elabHaddockIndex = perPkgOptionMaybe srcpkgPackageId packageConfigHaddockIndex
2458+ elabHaddockBaseUrl = perPkgOptionMaybe srcpkgPackageId packageConfigHaddockBaseUrl
2459+ elabHaddockResourcesDir = perPkgOptionMaybe srcpkgPackageId packageConfigHaddockResourcesDir
2460+ elabHaddockOutputDir = perPkgOptionMaybe srcpkgPackageId packageConfigHaddockOutputDir
2461+ elabHaddockUseUnicode = perPkgOptionFlag srcpkgPackageId False packageConfigHaddockUseUnicode
2462+
2463+ elabTestMachineLog = perPkgOptionMaybe srcpkgPackageId packageConfigTestMachineLog
2464+ elabTestHumanLog = perPkgOptionMaybe srcpkgPackageId packageConfigTestHumanLog
2465+ elabTestShowDetails = perPkgOptionMaybe srcpkgPackageId packageConfigTestShowDetails
2466+ elabTestKeepTix = perPkgOptionFlag srcpkgPackageId False packageConfigTestKeepTix
2467+ elabTestWrapper = perPkgOptionMaybe srcpkgPackageId packageConfigTestWrapper
2468+ elabTestFailWhenNoTestSuites = perPkgOptionFlag srcpkgPackageId False packageConfigTestFailWhenNoTestSuites
2469+ elabTestTestOptions = perPkgOptionList srcpkgPackageId packageConfigTestTestOptions
2470+
2471+ elabBenchmarkOptions = perPkgOptionList srcpkgPackageId packageConfigBenchmarkOptions
24762472
24772473 perPkgOptionFlag :: PackageId -> a -> (PackageConfig -> Flag a ) -> a
24782474 perPkgOptionMaybe :: PackageId -> (PackageConfig -> Flag a ) -> Maybe a
0 commit comments