Skip to content

Commit 4bc268e

Browse files
committed
refactor(cabal-install): readability improvements
1 parent 2004bb9 commit 4bc268e

File tree

1 file changed

+96
-100
lines changed

1 file changed

+96
-100
lines changed

cabal-install/src/Distribution/Client/ProjectPlanning.hs

Lines changed: 96 additions & 100 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)