@@ -1939,7 +1939,7 @@ elaborateInstallPlan
19391939 -- correctly.
19401940 let elab1 =
19411941 elab0
1942- { elabPkgOrComp = ElabComponent $ elab_comp
1942+ { elabPkgOrComp = ElabComponent elab_comp
19431943 }
19441944 cid = case elabBuildStyle elab0 of
19451945 BuildInplaceOnly {} ->
@@ -2123,15 +2123,7 @@ elaborateInstallPlan
21232123 -> LogProgress ElaboratedConfiguredPackage
21242124 elaborateSolverToPackage
21252125 pkgWhyNotPerComponent
2126- pkg@ ( SolverPackage
2127- _stage
2128- _qpn
2129- (SourcePackage pkgid _gpd _srcloc _descOverride)
2130- _flags
2131- _stanzas
2132- _deps0
2133- _exe_deps0
2134- )
2126+ pkg@ SolverPackage {solverPkgSource = SourcePackage {srcpkgPackageId}}
21352127 compGraph
21362128 comps = do
21372129 -- Knot tying: the final elab includes the
@@ -2179,7 +2171,7 @@ elaborateInstallPlan
21792171
21802172 pkgInstalledId
21812173 | shouldBuildInplaceOnly pkg =
2182- mkComponentId (prettyShow pkgid ++ " -inplace" )
2174+ mkComponentId (prettyShow srcpkgPackageId ++ " -inplace" )
21832175 | otherwise =
21842176 assert (isJust elabPkgSourceHash) $
21852177 hashedInstalledPackageId
@@ -2190,7 +2182,7 @@ elaborateInstallPlan
21902182
21912183 -- Need to filter out internal dependencies, because they don't
21922184 -- correspond to anything real anymore.
2193- isExternal confid = confSrcId confid /= pkgid
2185+ isExternal confid = confSrcId confid /= srcpkgPackageId
21942186 isExternal' (WithStage stage confId) = stage /= elabStage || isExternal confId
21952187
21962188 pkgLibDependencies =
@@ -2238,15 +2230,18 @@ elaborateInstallPlan
22382230 :: SolverPackage UnresolvedPkgLoc
22392231 -> ElaboratedConfiguredPackage
22402232 elaborateSolverToCommon
2241- pkg@ ( SolverPackage
2242- stage
2243- _qpn
2244- (SourcePackage pkgid gdesc srcloc descOverride)
2245- flags
2246- stanzas
2247- deps0
2248- _exe_deps0
2249- ) =
2233+ pkg@ SolverPackage {
2234+ solverPkgStage,
2235+ solverPkgSource = SourcePackage
2236+ { srcpkgPackageId
2237+ , srcpkgDescription
2238+ , srcpkgSource
2239+ , srcpkgDescrOverride
2240+ },
2241+ solverPkgFlags,
2242+ solverPkgStanzas,
2243+ solverPkgLibDeps
2244+ } =
22502245 elaboratedPackage
22512246 where
22522247 elaboratedPackage = ElaboratedConfiguredPackage {.. }
@@ -2259,32 +2254,32 @@ elaborateInstallPlan
22592254 elabModuleShape = error " elaborateSolverToCommon: elabModuleShape"
22602255
22612256 elabIsCanonical = True
2262- elabPkgSourceId = pkgid
2257+ elabPkgSourceId = srcpkgPackageId
22632258
2264- elabStage = stage
2265- elabCompiler = toolchainCompiler (getStage toolchains stage )
2266- elabPlatform = toolchainPlatform (getStage toolchains stage )
2267- elabProgramDb = toolchainProgramDb (getStage toolchains stage )
2259+ elabStage = solverPkgStage
2260+ elabCompiler = toolchainCompiler (getStage toolchains solverPkgStage )
2261+ elabPlatform = toolchainPlatform (getStage toolchains solverPkgStage )
2262+ elabProgramDb = toolchainProgramDb (getStage toolchains solverPkgStage )
22682263
22692264 elabPkgDescription = case PD. finalizePD
2270- flags
2265+ solverPkgFlags
22712266 elabEnabledSpec
22722267 (const Satisfied )
22732268 elabPlatform
22742269 (compilerInfo elabCompiler)
22752270 []
2276- gdesc of
2271+ srcpkgDescription of
22772272 Right (desc, _) -> desc
22782273 Left _ -> error " Failed to finalizePD in elaborateSolverToCommon"
2279- elabFlagAssignment = flags
2274+ elabFlagAssignment = solverPkgFlags
22802275 elabFlagDefaults =
22812276 PD. mkFlagAssignment
22822277 [ (PD. flagName flag, PD. flagDefault flag)
2283- | flag <- PD. genPackageFlags gdesc
2278+ | flag <- PD. genPackageFlags srcpkgDescription
22842279 ]
22852280
2286- elabEnabledSpec = enableStanzas stanzas
2287- elabStanzasAvailable = stanzas
2281+ elabEnabledSpec = enableStanzas solverPkgStanzas
2282+ elabStanzasAvailable = solverPkgStanzas
22882283
22892284 elabStanzasRequested :: OptionalStanzaMap (Maybe Bool )
22902285 elabStanzasRequested = optStanzaTabulate $ \ o -> case o of
@@ -2298,8 +2293,8 @@ elaborateInstallPlan
22982293 BenchStanzas -> listToMaybe [v | v <- maybeToList benchmarks, _ <- PD. benchmarks elabPkgDescription]
22992294 where
23002295 tests , benchmarks :: Maybe Bool
2301- tests = perPkgOptionMaybe pkgid packageConfigTests
2302- benchmarks = perPkgOptionMaybe pkgid packageConfigBenchmarks
2296+ tests = perPkgOptionMaybe srcpkgPackageId packageConfigTests
2297+ benchmarks = perPkgOptionMaybe srcpkgPackageId packageConfigBenchmarks
23032298
23042299 -- This is a placeholder which will get updated by 'pruneInstallPlanPass1'
23052300 -- and 'pruneInstallPlanPass2'. We can't populate it here
@@ -2317,7 +2312,7 @@ elaborateInstallPlan
23172312 elabHaddockTargets = []
23182313
23192314 elabBuildHaddocks =
2320- perPkgOptionFlag pkgid False packageConfigDocumentation
2315+ perPkgOptionFlag srcpkgPackageId False packageConfigDocumentation
23212316
23222317 -- `documentation: true` should imply `-haddock` for GHC
23232318 addHaddockIfDocumentationEnabled :: ConfiguredProgram -> ConfiguredProgram
@@ -2326,8 +2321,8 @@ elaborateInstallPlan
23262321 then cp{programOverrideArgs = " -haddock" : programOverrideArgs}
23272322 else cp
23282323
2329- elabPkgSourceLocation = srcloc
2330- elabPkgSourceHash = Map. lookup pkgid sourcePackageHashes
2324+ elabPkgSourceLocation = srcpkgSource
2325+ elabPkgSourceHash = Map. lookup srcpkgPackageId sourcePackageHashes
23312326 elabLocalToProject = isLocalToProject pkg
23322327 elabBuildStyle =
23332328 if shouldBuildInplaceOnly pkg
@@ -2343,7 +2338,7 @@ elaborateInstallPlan
23432338 elabSetupScriptStyle
23442339 elabPkgDescription
23452340 libDepGraph
2346- deps0
2341+ solverPkgLibDeps
23472342 elabSetupPackageDBStack = buildAndRegisterDbs
23482343
23492344 inplacePackageDbs = corePackageDbs ++ [distPackageDB (compilerId elabCompiler)]
@@ -2358,49 +2353,49 @@ elaborateInstallPlan
23582353 | shouldBuildInplaceOnly pkg = inplacePackageDbs
23592354 | otherwise = corePackageDbs
23602355
2361- elabPkgDescriptionOverride = descOverride
2356+ elabPkgDescriptionOverride = srcpkgDescrOverride
23622357
23632358 elabBuildOptions =
23642359 LBC. BuildOptions
2365- { withVanillaLib = perPkgOptionFlag pkgid True packageConfigVanillaLib -- TODO: [required feature]: also needs to be handled recursively
2366- , withSharedLib = pkgid `Set.member` pkgsUseSharedLibrary
2367- , withStaticLib = perPkgOptionFlag pkgid False packageConfigStaticLib
2360+ { withVanillaLib = perPkgOptionFlag srcpkgPackageId True packageConfigVanillaLib -- TODO: [required feature]: also needs to be handled recursively
2361+ , withSharedLib = srcpkgPackageId `Set.member` pkgsUseSharedLibrary
2362+ , withStaticLib = perPkgOptionFlag srcpkgPackageId False packageConfigStaticLib
23682363 , withDynExe =
2369- perPkgOptionFlag pkgid False packageConfigDynExe
2364+ perPkgOptionFlag srcpkgPackageId False packageConfigDynExe
23702365 -- We can't produce a dynamic executable if the user
23712366 -- wants to enable executable profiling but the
23722367 -- compiler doesn't support prof+dyn.
23732368 && (okProfDyn || not profExe)
2374- , withFullyStaticExe = perPkgOptionFlag pkgid False packageConfigFullyStaticExe
2375- , withGHCiLib = perPkgOptionFlag pkgid False packageConfigGHCiLib -- TODO: [required feature] needs to default to enabled on windows still
2376- , withProfExe = profExe
2377- , withProfLib = pkgid `Set.member` pkgsUseProfilingLibrary
2378- , withProfLibShared = pkgid `Set.member` pkgsUseProfilingLibraryShared
2379- , exeCoverage = perPkgOptionFlag pkgid False packageConfigCoverage
2380- , libCoverage = perPkgOptionFlag pkgid False packageConfigCoverage
2381- , withOptimization = perPkgOptionFlag pkgid NormalOptimisation packageConfigOptimization
2382- , splitObjs = perPkgOptionFlag pkgid False packageConfigSplitObjs
2383- , splitSections = perPkgOptionFlag pkgid False packageConfigSplitSections
2384- , stripLibs = perPkgOptionFlag pkgid False packageConfigStripLibs
2385- , stripExes = perPkgOptionFlag pkgid False packageConfigStripExes
2386- , withDebugInfo = perPkgOptionFlag pkgid NoDebugInfo packageConfigDebugInfo
2387- , relocatable = perPkgOptionFlag pkgid False packageConfigRelocatable
2369+ , withFullyStaticExe = perPkgOptionFlag srcpkgPackageId False packageConfigFullyStaticExe
2370+ , withGHCiLib = perPkgOptionFlag srcpkgPackageId False packageConfigGHCiLib -- TODO: [required feature] needs to default to enabled on windows still
2371+ , withProfExe = perPkgOptionFlag srcpkgPackageId False packageConfigProf
2372+ , withProfLib = srcpkgPackageId `Set.member` pkgsUseProfilingLibrary
2373+ , withProfLibShared = srcpkgPackageId `Set.member` pkgsUseProfilingLibraryShared
2374+ , exeCoverage = perPkgOptionFlag srcpkgPackageId False packageConfigCoverage
2375+ , libCoverage = perPkgOptionFlag srcpkgPackageId False packageConfigCoverage
2376+ , withOptimization = perPkgOptionFlag srcpkgPackageId NormalOptimisation packageConfigOptimization
2377+ , splitObjs = perPkgOptionFlag srcpkgPackageId False packageConfigSplitObjs
2378+ , splitSections = perPkgOptionFlag srcpkgPackageId False packageConfigSplitSections
2379+ , stripLibs = perPkgOptionFlag srcpkgPackageId False packageConfigStripLibs
2380+ , stripExes = perPkgOptionFlag srcpkgPackageId False packageConfigStripExes
2381+ , withDebugInfo = perPkgOptionFlag srcpkgPackageId NoDebugInfo packageConfigDebugInfo
2382+ , relocatable = perPkgOptionFlag srcpkgPackageId False packageConfigRelocatable
23882383 , withProfLibDetail = elabProfExeDetail
23892384 , withProfExeDetail = elabProfLibDetail
23902385 }
23912386 okProfDyn = profilingDynamicSupportedOrUnknown elabCompiler
2392- profExe = perPkgOptionFlag pkgid False packageConfigProf
2387+ profExe = perPkgOptionFlag srcpkgPackageId False packageConfigProf
23932388
23942389 ( elabProfExeDetail
23952390 , elabProfLibDetail
23962391 ) =
23972392 perPkgOptionLibExeFlag
2398- pkgid
2393+ srcpkgPackageId
23992394 ProfDetailDefault
24002395 packageConfigProfDetail
24012396 packageConfigProfLibDetail
24022397
2403- elabDumpBuildInfo = perPkgOptionFlag pkgid NoDumpBuildInfo packageConfigDumpBuildInfo
2398+ elabDumpBuildInfo = perPkgOptionFlag srcpkgPackageId NoDumpBuildInfo packageConfigDumpBuildInfo
24042399
24052400 -- Combine the configured compiler prog settings with the user-supplied
24062401 -- config. For the compiler progs any user-supplied config was taken
@@ -2412,7 +2407,7 @@ elaborateInstallPlan
24122407 [ (programId prog, programPath prog)
24132408 | prog <- configuredPrograms elabProgramDb
24142409 ]
2415- <> perPkgOptionMapLast pkgid packageConfigProgramPaths
2410+ <> perPkgOptionMapLast srcpkgPackageId packageConfigProgramPaths
24162411 elabProgramArgs =
24172412 Map. unionWith
24182413 (++)
@@ -2423,46 +2418,46 @@ elaborateInstallPlan
24232418 , not (null args)
24242419 ]
24252420 )
2426- (perPkgOptionMapMappend pkgid packageConfigProgramArgs)
2427- elabProgramPathExtra = perPkgOptionNubList pkgid packageConfigProgramPathExtra
2421+ (perPkgOptionMapMappend srcpkgPackageId packageConfigProgramArgs)
2422+ elabProgramPathExtra = perPkgOptionNubList srcpkgPackageId packageConfigProgramPathExtra
24282423 elabConfiguredPrograms = configuredPrograms elabProgramDb
2429- elabConfigureScriptArgs = perPkgOptionList pkgid packageConfigConfigureArgs
2430- elabExtraLibDirs = perPkgOptionList pkgid packageConfigExtraLibDirs
2431- elabExtraLibDirsStatic = perPkgOptionList pkgid packageConfigExtraLibDirsStatic
2432- elabExtraFrameworkDirs = perPkgOptionList pkgid packageConfigExtraFrameworkDirs
2433- elabExtraIncludeDirs = perPkgOptionList pkgid packageConfigExtraIncludeDirs
2434- elabProgPrefix = perPkgOptionMaybe pkgid packageConfigProgPrefix
2435- elabProgSuffix = perPkgOptionMaybe pkgid packageConfigProgSuffix
2436-
2437- elabHaddockHoogle = perPkgOptionFlag pkgid False packageConfigHaddockHoogle
2438- elabHaddockHtml = perPkgOptionFlag pkgid False packageConfigHaddockHtml
2439- elabHaddockHtmlLocation = perPkgOptionMaybe pkgid packageConfigHaddockHtmlLocation
2440- elabHaddockForeignLibs = perPkgOptionFlag pkgid False packageConfigHaddockForeignLibs
2441- elabHaddockForHackage = perPkgOptionFlag pkgid Cabal. ForDevelopment packageConfigHaddockForHackage
2442- elabHaddockExecutables = perPkgOptionFlag pkgid False packageConfigHaddockExecutables
2443- elabHaddockTestSuites = perPkgOptionFlag pkgid False packageConfigHaddockTestSuites
2444- elabHaddockBenchmarks = perPkgOptionFlag pkgid False packageConfigHaddockBenchmarks
2445- elabHaddockInternal = perPkgOptionFlag pkgid False packageConfigHaddockInternal
2446- elabHaddockCss = perPkgOptionMaybe pkgid packageConfigHaddockCss
2447- elabHaddockLinkedSource = perPkgOptionFlag pkgid False packageConfigHaddockLinkedSource
2448- elabHaddockQuickJump = perPkgOptionFlag pkgid False packageConfigHaddockQuickJump
2449- elabHaddockHscolourCss = perPkgOptionMaybe pkgid packageConfigHaddockHscolourCss
2450- elabHaddockContents = perPkgOptionMaybe pkgid packageConfigHaddockContents
2451- elabHaddockIndex = perPkgOptionMaybe pkgid packageConfigHaddockIndex
2452- elabHaddockBaseUrl = perPkgOptionMaybe pkgid packageConfigHaddockBaseUrl
2453- elabHaddockResourcesDir = perPkgOptionMaybe pkgid packageConfigHaddockResourcesDir
2454- elabHaddockOutputDir = perPkgOptionMaybe pkgid packageConfigHaddockOutputDir
2455- elabHaddockUseUnicode = perPkgOptionFlag pkgid False packageConfigHaddockUseUnicode
2456-
2457- elabTestMachineLog = perPkgOptionMaybe pkgid packageConfigTestMachineLog
2458- elabTestHumanLog = perPkgOptionMaybe pkgid packageConfigTestHumanLog
2459- elabTestShowDetails = perPkgOptionMaybe pkgid packageConfigTestShowDetails
2460- elabTestKeepTix = perPkgOptionFlag pkgid False packageConfigTestKeepTix
2461- elabTestWrapper = perPkgOptionMaybe pkgid packageConfigTestWrapper
2462- elabTestFailWhenNoTestSuites = perPkgOptionFlag pkgid False packageConfigTestFailWhenNoTestSuites
2463- elabTestTestOptions = perPkgOptionList pkgid packageConfigTestTestOptions
2464-
2465- elabBenchmarkOptions = perPkgOptionList pkgid packageConfigBenchmarkOptions
2424+ elabConfigureScriptArgs = perPkgOptionList srcpkgPackageId packageConfigConfigureArgs
2425+ elabExtraLibDirs = perPkgOptionList srcpkgPackageId packageConfigExtraLibDirs
2426+ elabExtraLibDirsStatic = perPkgOptionList srcpkgPackageId packageConfigExtraLibDirsStatic
2427+ elabExtraFrameworkDirs = perPkgOptionList srcpkgPackageId packageConfigExtraFrameworkDirs
2428+ elabExtraIncludeDirs = perPkgOptionList srcpkgPackageId packageConfigExtraIncludeDirs
2429+ elabProgPrefix = perPkgOptionMaybe srcpkgPackageId packageConfigProgPrefix
2430+ elabProgSuffix = perPkgOptionMaybe srcpkgPackageId packageConfigProgSuffix
2431+
2432+ elabHaddockHoogle = perPkgOptionFlag srcpkgPackageId False packageConfigHaddockHoogle
2433+ elabHaddockHtml = perPkgOptionFlag srcpkgPackageId False packageConfigHaddockHtml
2434+ elabHaddockHtmlLocation = perPkgOptionMaybe srcpkgPackageId packageConfigHaddockHtmlLocation
2435+ elabHaddockForeignLibs = perPkgOptionFlag srcpkgPackageId False packageConfigHaddockForeignLibs
2436+ elabHaddockForHackage = perPkgOptionFlag srcpkgPackageId Cabal. ForDevelopment packageConfigHaddockForHackage
2437+ elabHaddockExecutables = perPkgOptionFlag srcpkgPackageId False packageConfigHaddockExecutables
2438+ elabHaddockTestSuites = perPkgOptionFlag srcpkgPackageId False packageConfigHaddockTestSuites
2439+ elabHaddockBenchmarks = perPkgOptionFlag srcpkgPackageId False packageConfigHaddockBenchmarks
2440+ elabHaddockInternal = perPkgOptionFlag srcpkgPackageId False packageConfigHaddockInternal
2441+ elabHaddockCss = perPkgOptionMaybe srcpkgPackageId packageConfigHaddockCss
2442+ elabHaddockLinkedSource = perPkgOptionFlag srcpkgPackageId False packageConfigHaddockLinkedSource
2443+ elabHaddockQuickJump = perPkgOptionFlag srcpkgPackageId False packageConfigHaddockQuickJump
2444+ elabHaddockHscolourCss = perPkgOptionMaybe srcpkgPackageId packageConfigHaddockHscolourCss
2445+ elabHaddockContents = perPkgOptionMaybe srcpkgPackageId packageConfigHaddockContents
2446+ elabHaddockIndex = perPkgOptionMaybe srcpkgPackageId packageConfigHaddockIndex
2447+ elabHaddockBaseUrl = perPkgOptionMaybe srcpkgPackageId packageConfigHaddockBaseUrl
2448+ elabHaddockResourcesDir = perPkgOptionMaybe srcpkgPackageId packageConfigHaddockResourcesDir
2449+ elabHaddockOutputDir = perPkgOptionMaybe srcpkgPackageId packageConfigHaddockOutputDir
2450+ elabHaddockUseUnicode = perPkgOptionFlag srcpkgPackageId False packageConfigHaddockUseUnicode
2451+
2452+ elabTestMachineLog = perPkgOptionMaybe srcpkgPackageId packageConfigTestMachineLog
2453+ elabTestHumanLog = perPkgOptionMaybe srcpkgPackageId packageConfigTestHumanLog
2454+ elabTestShowDetails = perPkgOptionMaybe srcpkgPackageId packageConfigTestShowDetails
2455+ elabTestKeepTix = perPkgOptionFlag srcpkgPackageId False packageConfigTestKeepTix
2456+ elabTestWrapper = perPkgOptionMaybe srcpkgPackageId packageConfigTestWrapper
2457+ elabTestFailWhenNoTestSuites = perPkgOptionFlag srcpkgPackageId False packageConfigTestFailWhenNoTestSuites
2458+ elabTestTestOptions = perPkgOptionList srcpkgPackageId packageConfigTestTestOptions
2459+
2460+ elabBenchmarkOptions = perPkgOptionList srcpkgPackageId packageConfigBenchmarkOptions
24662461
24672462 perPkgOptionFlag :: PackageId -> a -> (PackageConfig -> Flag a ) -> a
24682463 perPkgOptionMaybe :: PackageId -> (PackageConfig -> Flag a ) -> Maybe a
0 commit comments