Skip to content

Commit cd40900

Browse files
committed
refactor(cabal-install): readability improvements
1 parent 4b4b19b commit cd40900

File tree

1 file changed

+95
-100
lines changed

1 file changed

+95
-100
lines changed

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

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

Comments
 (0)