cabal-install-3.10.2.1: The command-line interface for Cabal and Hackage.

Safe Haskell | None
Language | Haskell2010

Distribution.Client.ProjectPlanning.Types

Contents

- Elaborated install plan types
- Build targets
- Setup script

Description

Types used while planning how to build everything in a project.

Primarily this is the `ElaboratedInstallPlan`.

Synopsis

- data SolverInstallPlan
- type ElaboratedInstallPlan = GenericInstallPlan InstalledPackageInfo ElaboratedConfiguredPackage
- normaliseConfiguredPackage :: ElaboratedSharedConfig -> ElaboratedConfiguredPackage -> ElaboratedConfiguredPackage
- data ElaboratedConfiguredPackage = ElaboratedConfiguredPackage {
  - elabUnitId :: UnitId
  - elabComponentId :: ComponentId
  - elabInstantiatedWith :: Map ModuleName Module
  - elabLinkedInstantiatedWith :: Map ModuleName OpenModule
  - elabIsCanonical :: Bool
  - elabPkgSourceId :: PackageId
  - elabModuleShape :: ModuleShape
  - elabFlagAssignment :: FlagAssignment
  - elabFlagDefaults :: FlagAssignment
  - elabPkgDescription :: PackageDescription
  - elabPkgSourceLocation :: PackageLocation (Maybe FilePath)
  - elabPkgSourceHash :: Maybe PackageSourceHash
  - elabLocalToProject :: Bool
  - elabBuildStyle :: BuildStyle
  - elabEnabledSpec :: ComponentRequestedSpec
  - elabStanzasAvailable :: OptionalStanzaSet
  - elabStanzasRequested :: OptionalStanzaMap (Maybe Bool)
  - elabPackageDbs :: [Maybe PackageDB]
  - elabSetupPackageDBStack :: PackageDBStack
  - elabBuildPackageDBStack :: PackageDBStack
  - elabRegisterPackageDBStack :: PackageDBStack
  - elabInplaceSetupPackageDBStack :: PackageDBStack
  - elabInplaceBuildPackageDBStack :: PackageDBStack
  - elabInplaceRegisterPackageDBStack :: PackageDBStack
  - elabPkgDescriptionOverride :: Maybe CabalFileText
  - elabVanillaLib :: Bool
  - elabSharedLib :: Bool
  - elabStaticLib :: Bool
  - elabDynExe :: Bool
  - elabFullyStaticExe :: Bool
  - elabGHCiLib :: Bool
  - elabProfLib :: Bool
  - elabProfExe :: Bool
  - elabProfLibDetail :: ProfDetailLevel
  - elabProfExeDetail :: ProfDetailLevel
  - elabCoverage :: Bool
  - elabOptimization :: OptimisationLevel
  - elabSplitObjs :: Bool
  - elabSplitSections :: Bool
  - elabStripLibs :: Bool
  - elabStripExes :: Bool
  - elabDebugInfo :: DebugInfoLevel
  - elabDumpBuildInfo :: DumpBuildInfo
  - elabProgramPaths :: Map String FilePath
  - elabProgramArgs :: Map String [String]
  - elabProgramPathExtra :: [FilePath]
  - elabConfigureScriptArgs :: [String]
  - elabExtraLibDirs :: [FilePath]
  - elabExtraLibDirsStatic :: [FilePath]
  - elabExtraFrameworkDirs :: [FilePath]
  - elabExtraIncludeDirs :: [FilePath]
  - elabProgPrefix :: Maybe PathTemplate
  - elabProgSuffix :: Maybe PathTemplate
  - elabInstallDirs :: InstallDirs FilePath
  - elabHaddockHoogle :: Bool
  - elabHaddockHtml :: Bool
  - elabHaddockHtmlLocation :: Maybe String
  - elabHaddockForeignLibs :: Bool
  - elabHaddockForHackage :: HaddockTarget
  - elabHaddockExecutables :: Bool
  - elabHaddockTestSuites :: Bool
  - elabHaddockBenchmarks :: Bool
  - elabHaddockInternal :: Bool
  - elabHaddockCss :: Maybe FilePath
  - elabHaddockLinkedSource :: Bool
  - elabHaddockQuickJump :: Bool
  - elabHaddockHscolourCss :: Maybe FilePath
  - elabHaddockContents :: Maybe PathTemplate
  - elabHaddockIndex :: Maybe PathTemplate
  - elabHaddockBaseUrl :: Maybe String
  - elabHaddockLib :: Maybe String
  - elabTestMachineLog :: Maybe PathTemplate
  - elabTestHumanLog :: Maybe PathTemplate
  - elabTestShowDetails :: Maybe TestShowDetails
  - elabTestKeepTix :: Bool
  - elabTestWrapper :: Maybe FilePath
  - elabTestFailWhenNoTestSuites :: Bool
  - elabTestTestOptions :: [PathTemplate]
  - elabBenchmarkOptions :: [PathTemplate]
  - elabSetupScriptStyle :: SetupScriptStyle
  - elabSetupScriptCliVersion :: Version
  - elabConfigureTargets :: [ComponentTarget]
  - elabBuildTargets :: [ComponentTarget]
  - elabTestTargets :: [ComponentTarget]
  - elabBenchTargets :: [ComponentTarget]
  - elabReplTarget :: Maybe ComponentTarget
  - elabHaddockTargets :: [ComponentTarget]
  - elabBuildHaddocks :: Bool
  - elabPkgOrComp :: ElaboratedPackageOrComponent
  }
- elabDistDirParams :: ElaboratedSharedConfig -> ElaboratedConfiguredPackage -> DistDirParams
- elabExeDependencyPaths :: ElaboratedConfiguredPackage -> [FilePath]
- elabLibDependencies :: ElaboratedConfiguredPackage -> [ConfiguredId]
- elabOrderLibDependencies :: ElaboratedConfiguredPackage -> [UnitId]
- elabExeDependencies :: ElaboratedConfiguredPackage -> [ComponentId]
- elabOrderExeDependencies :: ElaboratedConfiguredPackage -> [UnitId]
- elabSetupDependencies :: ElaboratedConfiguredPackage -> [ConfiguredId]
- elabPkgConfigDependencies :: ElaboratedConfiguredPackage -> [(PkgconfigName, Maybe PkgconfigVersion)]
- elabInplaceDependencyBuildCacheFiles :: DistDirLayout -> ElaboratedSharedConfig -> ElaboratedInstallPlan -> ElaboratedConfiguredPackage -> [FilePath]
- elabRequiresRegistration :: ElaboratedConfiguredPackage -> Bool
- dataDirsEnvironmentForPlan :: DistDirLayout -> ElaboratedInstallPlan -> [(String, Maybe FilePath)]
- elabPlanPackageName :: Verbosity -> ElaboratedPlanPackage -> String
- elabConfiguredName :: Verbosity -> ElaboratedConfiguredPackage -> String
- elabComponentName :: ElaboratedConfiguredPackage -> Maybe ComponentName
- data ElaboratedPackageOrComponent
  - = ElabPackage ElaboratedPackage
  - | ElabComponent ElaboratedComponent
- data ElaboratedComponent = ElaboratedComponent {
  - compSolverName :: Component
  - compComponentName :: Maybe ComponentName
  - compLibDependencies :: [ConfiguredId]
  - compLinkedLibDependencies :: [OpenUnitId]
  - compExeDependencies :: [ConfiguredId]
  - compPkgConfigDependencies :: [(PkgconfigName, Maybe PkgconfigVersion)]
  - compExeDependencyPaths :: [(ConfiguredId, FilePath)]
  - compOrderLibDependencies :: [UnitId]
  }
- data ElaboratedPackage = ElaboratedPackage {
  - pkgInstalledId :: InstalledPackageId
  - pkgLibDependencies :: ComponentDeps [ConfiguredId]
  - pkgDependsOnSelfLib :: ComponentDeps [()]
  - pkgExeDependencies :: ComponentDeps [ConfiguredId]
  - pkgExeDependencyPaths :: ComponentDeps [(ConfiguredId, FilePath)]
  - pkgPkgConfigDependencies :: [(PkgconfigName, Maybe PkgconfigVersion)]
  - pkgStanzasEnabled :: OptionalStanzaSet
  }
- pkgOrderDependencies :: ElaboratedPackage -> ComponentDeps [UnitId]
- type ElaboratedPlanPackage = GenericPlanPackage InstalledPackageInfo ElaboratedConfiguredPackage
- data ElaboratedSharedConfig = ElaboratedSharedConfig {
  - pkgConfigPlatform :: Platform
  - pkgConfigCompiler :: Compiler
  - pkgConfigCompilerProgs :: ProgramDb
  - pkgConfigReplOptions :: ReplOptions
  }
- type ElaboratedReadyPackage = GenericReadyPackage ElaboratedConfiguredPackage
- data BuildStyle
  - = BuildAndInstall
  - | BuildInplaceOnly
- type CabalFileText = ByteString
- data ComponentTarget = ComponentTarget ComponentName SubComponentTarget
- showComponentTarget :: PackageId -> ComponentTarget -> String
- showTestComponentTarget :: PackageId -> ComponentTarget -> Maybe String
- showBenchComponentTarget :: PackageId -> ComponentTarget -> Maybe String
- data SubComponentTarget
  - = WholeComponent
  - | ModuleTarget ModuleName
  - | FileTarget FilePath
- isSubLibComponentTarget :: ComponentTarget -> Bool
- isForeignLibComponentTarget :: ComponentTarget -> Bool
- isExeComponentTarget :: ComponentTarget -> Bool
- isTestComponentTarget :: ComponentTarget -> Bool
- isBenchComponentTarget :: ComponentTarget -> Bool
- componentOptionalStanza :: Component -> Maybe OptionalStanza
- data SetupScriptStyle
  - = SetupCustomExplicitDeps
  - | SetupCustomImplicitDeps
  - | SetupNonCustomExternalLib
  - | SetupNonCustomInternalLib

# Documentation

data SolverInstallPlan #

#### Instances

Instances details

Structured SolverInstallPlan # |
Instance details Defined in Distribution.Client.SolverInstallPlan Methods structure :: Proxy SolverInstallPlan -> Structure # structureHash' :: Tagged SolverInstallPlan MD5
Generic SolverInstallPlan # |
Instance details Defined in Distribution.Client.SolverInstallPlan Associated Types
type Rep SolverInstallPlan |
Instance details Defined in Distribution.Client.SolverInstallPlan type Rep SolverInstallPlan
Methods from :: SolverInstallPlan -> Rep SolverInstallPlan x # to :: Rep SolverInstallPlan x -> SolverInstallPlan #
Binary SolverInstallPlan # |
Instance details Defined in Distribution.Client.SolverInstallPlan Methods put :: SolverInstallPlan -> Put # get :: Get SolverInstallPlan # putList :: [SolverInstallPlan] -> Put #
type Rep SolverInstallPlan # |
Instance details Defined in Distribution.Client.SolverInstallPlan type Rep SolverInstallPlan

# Elaborated install plan types

type ElaboratedInstallPlan = GenericInstallPlan InstalledPackageInfo ElaboratedConfiguredPackage #

The combination of an elaborated install plan plus a `ElaboratedSharedConfig` contains all the details necessary to be able to execute the plan without having to make further policy decisions.

It does not include dynamic elements such as resources (such as http connections).

normaliseConfiguredPackage :: ElaboratedSharedConfig -> ElaboratedConfiguredPackage -> ElaboratedConfiguredPackage #

data ElaboratedConfiguredPackage #

Constructors

ElaboratedConfiguredPackage |
Fields elabUnitId :: UnitId The `UnitId` which uniquely identifies this item in a build plan elabComponentId :: ComponentId elabInstantiatedWith :: Map ModuleName Module elabLinkedInstantiatedWith :: Map ModuleName OpenModule elabIsCanonical :: Bool This is true if this is an indefinite package, or this is a package with no signatures. (Notably, it's not true for instantiated packages.) The motivation for this is if you ask to build `foo-indef`, this probably means that you want to typecheck it, NOT that you want to rebuild all of the various instantiations of it. elabPkgSourceId :: PackageId The `PackageId` of the originating package elabModuleShape :: ModuleShape Shape of the package/component, for Backpack. elabFlagAssignment :: FlagAssignment A total flag assignment for the package. TODO: Actually this can be per-component if we drop all flags that don't affect a component. elabFlagDefaults :: FlagAssignment The original default flag assignment, used only for reporting. elabPkgDescription :: PackageDescription elabPkgSourceLocation :: PackageLocation (Maybe FilePath) Where the package comes from, e.g. tarball, local dir etc. This is not the same as where it may be unpacked to for the build. elabPkgSourceHash :: Maybe PackageSourceHash The hash of the source, e.g. the tarball. We don't have this for local source dir packages. elabLocalToProject :: Bool Is this package one of the ones specified by location in the project file? (As opposed to a dependency, or a named package pulled in) elabBuildStyle :: BuildStyle Are we going to build and install this package to the store, or are we going to build it and register it locally. elabEnabledSpec :: ComponentRequestedSpec Another way of phrasing `pkgStanzasAvailable`. elabStanzasAvailable :: OptionalStanzaSet Which optional stanzas (ie testsuites, benchmarks) can be built. This means the solver produced a plan that has them available. This doesn't necessary mean we build them by default. elabStanzasRequested :: OptionalStanzaMap (Maybe Bool) Which optional stanzas the user explicitly asked to enable or to disable. This tells us which ones we build by default, and helps with error messages when the user asks to build something they explicitly disabled. TODO: The `Bool` here should be refined into an ADT with three cases: NotRequested, ExplicitlyRequested and ImplicitlyRequested. A stanza is explicitly requested if the user asked, for this *specific* package, that the stanza be enabled; it's implicitly requested if the user asked for all global packages to have this stanza enabled. The difference between an explicit and implicit request is error reporting behavior: if a user asks for tests to be enabled for a specific package that doesn't have any tests, we should warn them about it, but we shouldn't complain that a user enabled tests globally, and some local packages just happen not to have any tests. (But perhaps we should warn if ALL local packages don't have any tests.) elabPackageDbs :: [Maybe PackageDB] elabSetupPackageDBStack :: PackageDBStack elabBuildPackageDBStack :: PackageDBStack elabRegisterPackageDBStack :: PackageDBStack elabInplaceSetupPackageDBStack :: PackageDBStack elabInplaceBuildPackageDBStack :: PackageDBStack elabInplaceRegisterPackageDBStack :: PackageDBStack elabPkgDescriptionOverride :: Maybe CabalFileText elabVanillaLib :: Bool elabSharedLib :: Bool elabStaticLib :: Bool elabDynExe :: Bool elabFullyStaticExe :: Bool elabGHCiLib :: Bool elabProfLib :: Bool elabProfExe :: Bool elabProfLibDetail :: ProfDetailLevel elabProfExeDetail :: ProfDetailLevel elabCoverage :: Bool elabOptimization :: OptimisationLevel elabSplitObjs :: Bool elabSplitSections :: Bool elabStripLibs :: Bool elabStripExes :: Bool elabDebugInfo :: DebugInfoLevel elabDumpBuildInfo :: DumpBuildInfo elabProgramPaths :: Map String FilePath elabProgramArgs :: Map String [String] elabProgramPathExtra :: [FilePath] elabConfigureScriptArgs :: [String] elabExtraLibDirs :: [FilePath] elabExtraLibDirsStatic :: [FilePath] elabExtraFrameworkDirs :: [FilePath] elabExtraIncludeDirs :: [FilePath] elabProgPrefix :: Maybe PathTemplate elabProgSuffix :: Maybe PathTemplate elabInstallDirs :: InstallDirs FilePath elabHaddockHoogle :: Bool elabHaddockHtml :: Bool elabHaddockHtmlLocation :: Maybe String elabHaddockForeignLibs :: Bool elabHaddockForHackage :: HaddockTarget elabHaddockExecutables :: Bool elabHaddockTestSuites :: Bool elabHaddockBenchmarks :: Bool elabHaddockInternal :: Bool elabHaddockCss :: Maybe FilePath elabHaddockLinkedSource :: Bool elabHaddockQuickJump :: Bool elabHaddockHscolourCss :: Maybe FilePath elabHaddockContents :: Maybe PathTemplate elabHaddockIndex :: Maybe PathTemplate elabHaddockBaseUrl :: Maybe String elabHaddockLib :: Maybe String elabTestMachineLog :: Maybe PathTemplate elabTestHumanLog :: Maybe PathTemplate elabTestShowDetails :: Maybe TestShowDetails elabTestKeepTix :: Bool elabTestWrapper :: Maybe FilePath elabTestFailWhenNoTestSuites :: Bool elabTestTestOptions :: [PathTemplate] elabBenchmarkOptions :: [PathTemplate] elabSetupScriptStyle :: SetupScriptStyle One of four modes for how we build and interact with the Setup.hs script, based on whether it's a build-type Custom, with or without explicit deps and the cabal spec version the .cabal file needs. elabSetupScriptCliVersion :: Version The version of the Cabal command line interface that we are using for this package. This is typically the version of the Cabal lib that the Setup.hs is built against. TODO: We might want to turn this into a enum, yet different enum than `CabalSpecVersion`. elabConfigureTargets :: [ComponentTarget] elabBuildTargets :: [ComponentTarget] elabTestTargets :: [ComponentTarget] elabBenchTargets :: [ComponentTarget] elabReplTarget :: Maybe ComponentTarget elabHaddockTargets :: [ComponentTarget] elabBuildHaddocks :: Bool elabPkgOrComp :: ElaboratedPackageOrComponent Component/package specific information

#### Instances

Instances details

IsNode ElaboratedConfiguredPackage # |
Instance details Defined in Distribution.Client.ProjectPlanning.Types Associated Types
type Key ElaboratedConfiguredPackage |
Instance details Defined in Distribution.Client.ProjectPlanning.Types type Key ElaboratedConfiguredPackage = UnitId
Methods nodeKey :: ElaboratedConfiguredPackage -> Key ElaboratedConfiguredPackage # nodeNeighbors :: ElaboratedConfiguredPackage -> [Key ElaboratedConfiguredPackage] #
HasUnitId ElaboratedConfiguredPackage # |
Instance details Defined in Distribution.Client.ProjectPlanning.Types Methods installedUnitId :: ElaboratedConfiguredPackage -> UnitId #
Package ElaboratedConfiguredPackage # |
Instance details Defined in Distribution.Client.ProjectPlanning.Types Methods packageId :: ElaboratedConfiguredPackage -> PackageIdentifier #
Structured ElaboratedConfiguredPackage # |
Instance details Defined in Distribution.Client.ProjectPlanning.Types Methods structure :: Proxy ElaboratedConfiguredPackage -> Structure # structureHash' :: Tagged ElaboratedConfiguredPackage MD5
Generic ElaboratedConfiguredPackage # |
Instance details Defined in Distribution.Client.ProjectPlanning.Types Associated Types
type Rep ElaboratedConfiguredPackage |
Instance details Defined in Distribution.Client.ProjectPlanning.Types type Rep ElaboratedConfiguredPackage = D1 ('MetaData "ElaboratedConfiguredPackage" "Distribution.Client.ProjectPlanning.Types" "cabal-install-3.10.2.1-EH6AEtqwlbKE3rh89dIk81" 'False) (C1 ('MetaCons "ElaboratedConfiguredPackage" 'PrefixI 'True) ((((((S1 ('MetaSel ('Just "elabUnitId") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 UnitId) :*: S1 ('MetaSel ('Just "elabComponentId") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 ComponentId)) :*: (S1 ('MetaSel ('Just "elabInstantiatedWith") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Map ModuleName Module)) :*: (S1 ('MetaSel ('Just "elabLinkedInstantiatedWith") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Map ModuleName OpenModule)) :*: S1 ('MetaSel ('Just "elabIsCanonical") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Bool)))) :*: ((S1 ('MetaSel ('Just "elabPkgSourceId") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 PackageId) :*: (S1 ('MetaSel ('Just "elabModuleShape") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 ModuleShape) :*: S1 ('MetaSel ('Just "elabFlagAssignment") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 FlagAssignment))) :*: (S1 ('MetaSel ('Just "elabFlagDefaults") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 FlagAssignment) :*: (S1 ('MetaSel ('Just "elabPkgDescription") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 PackageDescription) :*: S1 ('MetaSel ('Just "elabPkgSourceLocation") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (PackageLocation (Maybe FilePath))))))) :*: (((S1 ('MetaSel ('Just "elabPkgSourceHash") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe PackageSourceHash)) :*: S1 ('MetaSel ('Just "elabLocalToProject") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Bool)) :*: (S1 ('MetaSel ('Just "elabBuildStyle") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 BuildStyle) :*: (S1 ('MetaSel ('Just "elabEnabledSpec") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 ComponentRequestedSpec) :*: S1 ('MetaSel ('Just "elabStanzasAvailable") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 OptionalStanzaSet)))) :*: ((S1 ('MetaSel ('Just "elabStanzasRequested") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (OptionalStanzaMap (Maybe Bool))) :*: (S1 ('MetaSel ('Just "elabPackageDbs") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [Maybe PackageDB]) :*: S1 ('MetaSel ('Just "elabSetupPackageDBStack") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 PackageDBStack))) :*: (S1 ('MetaSel ('Just "elabBuildPackageDBStack") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 PackageDBStack) :*: (S1 ('MetaSel ('Just "elabRegisterPackageDBStack") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 PackageDBStack) :*: S1 ('MetaSel ('Just "elabInplaceSetupPackageDBStack") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 PackageDBStack)))))) :*: ((((S1 ('MetaSel ('Just "elabInplaceBuildPackageDBStack") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 PackageDBStack) :*: S1 ('MetaSel ('Just "elabInplaceRegisterPackageDBStack") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 PackageDBStack)) :*: (S1 ('MetaSel ('Just "elabPkgDescriptionOverride") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe CabalFileText)) :*: (S1 ('MetaSel ('Just "elabVanillaLib") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Bool) :*: S1 ('MetaSel ('Just "elabSharedLib") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Bool)))) :*: ((S1 ('MetaSel ('Just "elabStaticLib") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Bool) :*: (S1 ('MetaSel ('Just "elabDynExe") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Bool) :*: S1 ('MetaSel ('Just "elabFullyStaticExe") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Bool))) :*: (S1 ('MetaSel ('Just "elabGHCiLib") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Bool) :*: (S1 ('MetaSel ('Just "elabProfLib") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Bool) :*: S1 ('MetaSel ('Just "elabProfExe") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Bool))))) :*: (((S1 ('MetaSel ('Just "elabProfLibDetail") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 ProfDetailLevel) :*: S1 ('MetaSel ('Just "elabProfExeDetail") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 ProfDetailLevel)) :*: (S1 ('MetaSel ('Just "elabCoverage") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Bool) :*: (S1 ('MetaSel ('Just "elabOptimization") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 OptimisationLevel) :*: S1 ('MetaSel ('Just "elabSplitObjs") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Bool)))) :*: ((S1 ('MetaSel ('Just "elabSplitSections") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Bool) :*: (S1 ('MetaSel ('Just "elabStripLibs") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Bool) :*: S1 ('MetaSel ('Just "elabStripExes") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Bool))) :*: (S1 ('MetaSel ('Just "elabDebugInfo") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 DebugInfoLevel) :*: (S1 ('MetaSel ('Just "elabDumpBuildInfo") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 DumpBuildInfo) :*: S1 ('MetaSel ('Just "elabProgramPaths") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Map String FilePath)))))))) :*: (((((S1 ('MetaSel ('Just "elabProgramArgs") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Map String [String])) :*: S1 ('MetaSel ('Just "elabProgramPathExtra") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [FilePath])) :*: (S1 ('MetaSel ('Just "elabConfigureScriptArgs") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [String]) :*: (S1 ('MetaSel ('Just "elabExtraLibDirs") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [FilePath]) :*: S1 ('MetaSel ('Just "elabExtraLibDirsStatic") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [FilePath])))) :*: ((S1 ('MetaSel ('Just "elabExtraFrameworkDirs") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [FilePath]) :*: (S1 ('MetaSel ('Just "elabExtraIncludeDirs") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [FilePath]) :*: S1 ('MetaSel ('Just "elabProgPrefix") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe PathTemplate)))) :*: (S1 ('MetaSel ('Just "elabProgSuffix") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe PathTemplate)) :*: (S1 ('MetaSel ('Just "elabInstallDirs") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (InstallDirs FilePath)) :*: S1 ('MetaSel ('Just "elabHaddockHoogle") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Bool))))) :*: (((S1 ('MetaSel ('Just "elabHaddockHtml") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Bool) :*: S1 ('MetaSel ('Just "elabHaddockHtmlLocation") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe String))) :*: (S1 ('MetaSel ('Just "elabHaddockForeignLibs") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Bool) :*: (S1 ('MetaSel ('Just "elabHaddockForHackage") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 HaddockTarget) :*: S1 ('MetaSel ('Just "elabHaddockExecutables") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Bool)))) :*: ((S1 ('MetaSel ('Just "elabHaddockTestSuites") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Bool) :*: (S1 ('MetaSel ('Just "elabHaddockBenchmarks") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Bool) :*: S1 ('MetaSel ('Just "elabHaddockInternal") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Bool))) :*: (S1 ('MetaSel ('Just "elabHaddockCss") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe FilePath)) :*: (S1 ('MetaSel ('Just "elabHaddockLinkedSource") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Bool) :*: S1 ('MetaSel ('Just "elabHaddockQuickJump") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Bool)))))) :*: ((((S1 ('MetaSel ('Just "elabHaddockHscolourCss") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe FilePath)) :*: S1 ('MetaSel ('Just "elabHaddockContents") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe PathTemplate))) :*: (S1 ('MetaSel ('Just "elabHaddockIndex") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe PathTemplate)) :*: (S1 ('MetaSel ('Just "elabHaddockBaseUrl") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe String)) :*: S1 ('MetaSel ('Just "elabHaddockLib") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe String))))) :*: ((S1 ('MetaSel ('Just "elabTestMachineLog") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe PathTemplate)) :*: (S1 ('MetaSel ('Just "elabTestHumanLog") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe PathTemplate)) :*: S1 ('MetaSel ('Just "elabTestShowDetails") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe TestShowDetails)))) :*: (S1 ('MetaSel ('Just "elabTestKeepTix") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Bool) :*: (S1 ('MetaSel ('Just "elabTestWrapper") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe FilePath)) :*: S1 ('MetaSel ('Just "elabTestFailWhenNoTestSuites") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Bool))))) :*: (((S1 ('MetaSel ('Just "elabTestTestOptions") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [PathTemplate]) :*: (S1 ('MetaSel ('Just "elabBenchmarkOptions") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [PathTemplate]) :*: S1 ('MetaSel ('Just "elabSetupScriptStyle") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 SetupScriptStyle))) :*: (S1 ('MetaSel ('Just "elabSetupScriptCliVersion") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Version) :*: (S1 ('MetaSel ('Just "elabConfigureTargets") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [ComponentTarget]) :*: S1 ('MetaSel ('Just "elabBuildTargets") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [ComponentTarget])))) :*: ((S1 ('MetaSel ('Just "elabTestTargets") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [ComponentTarget]) :*: (S1 ('MetaSel ('Just "elabBenchTargets") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [ComponentTarget]) :*: S1 ('MetaSel ('Just "elabReplTarget") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe ComponentTarget)))) :*: (S1 ('MetaSel ('Just "elabHaddockTargets") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [ComponentTarget]) :*: (S1 ('MetaSel ('Just "elabBuildHaddocks") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Bool) :*: S1 ('MetaSel ('Just "elabPkgOrComp") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 ElaboratedPackageOrComponent)))))))))
Methods from :: ElaboratedConfiguredPackage -> Rep ElaboratedConfiguredPackage x # to :: Rep ElaboratedConfiguredPackage x -> ElaboratedConfiguredPackage #
Show ElaboratedConfiguredPackage # |
Instance details Defined in Distribution.Client.ProjectPlanning.Types Methods showsPrec :: Int -> ElaboratedConfiguredPackage -> ShowS # show :: ElaboratedConfiguredPackage -> String # showList :: [ElaboratedConfiguredPackage] -> ShowS #
Binary ElaboratedConfiguredPackage # |
Instance details Defined in Distribution.Client.ProjectPlanning.Types Methods put :: ElaboratedConfiguredPackage -> Put # get :: Get ElaboratedConfiguredPackage # putList :: [ElaboratedConfiguredPackage] -> Put #
HasConfiguredId ElaboratedConfiguredPackage # |
Instance details Defined in Distribution.Client.ProjectPlanning.Types Methods configuredId :: ElaboratedConfiguredPackage -> ConfiguredId #
Eq ElaboratedConfiguredPackage # |
Instance details Defined in Distribution.Client.ProjectPlanning.Types Methods (==) :: ElaboratedConfiguredPackage -> ElaboratedConfiguredPackage -> Bool # (/=) :: ElaboratedConfiguredPackage -> ElaboratedConfiguredPackage -> Bool #
type Key ElaboratedConfiguredPackage # |
Instance details Defined in Distribution.Client.ProjectPlanning.Types type Key ElaboratedConfiguredPackage = UnitId
type Rep ElaboratedConfiguredPackage # |
Instance details Defined in Distribution.Client.ProjectPlanning.Types type Rep ElaboratedConfiguredPackage = D1 ('MetaData "ElaboratedConfiguredPackage" "Distribution.Client.ProjectPlanning.Types" "cabal-install-3.10.2.1-EH6AEtqwlbKE3rh89dIk81" 'False) (C1 ('MetaCons "ElaboratedConfiguredPackage" 'PrefixI 'True) ((((((S1 ('MetaSel ('Just "elabUnitId") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 UnitId) :*: S1 ('MetaSel ('Just "elabComponentId") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 ComponentId)) :*: (S1 ('MetaSel ('Just "elabInstantiatedWith") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Map ModuleName Module)) :*: (S1 ('MetaSel ('Just "elabLinkedInstantiatedWith") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Map ModuleName OpenModule)) :*: S1 ('MetaSel ('Just "elabIsCanonical") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Bool)))) :*: ((S1 ('MetaSel ('Just "elabPkgSourceId") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 PackageId) :*: (S1 ('MetaSel ('Just "elabModuleShape") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 ModuleShape) :*: S1 ('MetaSel ('Just "elabFlagAssignment") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 FlagAssignment))) :*: (S1 ('MetaSel ('Just "elabFlagDefaults") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 FlagAssignment) :*: (S1 ('MetaSel ('Just "elabPkgDescription") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 PackageDescription) :*: S1 ('MetaSel ('Just "elabPkgSourceLocation") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (PackageLocation (Maybe FilePath))))))) :*: (((S1 ('MetaSel ('Just "elabPkgSourceHash") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe PackageSourceHash)) :*: S1 ('MetaSel ('Just "elabLocalToProject") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Bool)) :*: (S1 ('MetaSel ('Just "elabBuildStyle") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 BuildStyle) :*: (S1 ('MetaSel ('Just "elabEnabledSpec") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 ComponentRequestedSpec) :*: S1 ('MetaSel ('Just "elabStanzasAvailable") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 OptionalStanzaSet)))) :*: ((S1 ('MetaSel ('Just "elabStanzasRequested") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (OptionalStanzaMap (Maybe Bool))) :*: (S1 ('MetaSel ('Just "elabPackageDbs") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [Maybe PackageDB]) :*: S1 ('MetaSel ('Just "elabSetupPackageDBStack") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 PackageDBStack))) :*: (S1 ('MetaSel ('Just "elabBuildPackageDBStack") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 PackageDBStack) :*: (S1 ('MetaSel ('Just "elabRegisterPackageDBStack") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 PackageDBStack) :*: S1 ('MetaSel ('Just "elabInplaceSetupPackageDBStack") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 PackageDBStack)))))) :*: ((((S1 ('MetaSel ('Just "elabInplaceBuildPackageDBStack") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 PackageDBStack) :*: S1 ('MetaSel ('Just "elabInplaceRegisterPackageDBStack") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 PackageDBStack)) :*: (S1 ('MetaSel ('Just "elabPkgDescriptionOverride") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe CabalFileText)) :*: (S1 ('MetaSel ('Just "elabVanillaLib") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Bool) :*: S1 ('MetaSel ('Just "elabSharedLib") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Bool)))) :*: ((S1 ('MetaSel ('Just "elabStaticLib") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Bool) :*: (S1 ('MetaSel ('Just "elabDynExe") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Bool) :*: S1 ('MetaSel ('Just "elabFullyStaticExe") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Bool))) :*: (S1 ('MetaSel ('Just "elabGHCiLib") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Bool) :*: (S1 ('MetaSel ('Just "elabProfLib") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Bool) :*: S1 ('MetaSel ('Just "elabProfExe") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Bool))))) :*: (((S1 ('MetaSel ('Just "elabProfLibDetail") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 ProfDetailLevel) :*: S1 ('MetaSel ('Just "elabProfExeDetail") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 ProfDetailLevel)) :*: (S1 ('MetaSel ('Just "elabCoverage") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Bool) :*: (S1 ('MetaSel ('Just "elabOptimization") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 OptimisationLevel) :*: S1 ('MetaSel ('Just "elabSplitObjs") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Bool)))) :*: ((S1 ('MetaSel ('Just "elabSplitSections") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Bool) :*: (S1 ('MetaSel ('Just "elabStripLibs") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Bool) :*: S1 ('MetaSel ('Just "elabStripExes") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Bool))) :*: (S1 ('MetaSel ('Just "elabDebugInfo") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 DebugInfoLevel) :*: (S1 ('MetaSel ('Just "elabDumpBuildInfo") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 DumpBuildInfo) :*: S1 ('MetaSel ('Just "elabProgramPaths") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Map String FilePath)))))))) :*: (((((S1 ('MetaSel ('Just "elabProgramArgs") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Map String [String])) :*: S1 ('MetaSel ('Just "elabProgramPathExtra") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [FilePath])) :*: (S1 ('MetaSel ('Just "elabConfigureScriptArgs") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [String]) :*: (S1 ('MetaSel ('Just "elabExtraLibDirs") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [FilePath]) :*: S1 ('MetaSel ('Just "elabExtraLibDirsStatic") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [FilePath])))) :*: ((S1 ('MetaSel ('Just "elabExtraFrameworkDirs") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [FilePath]) :*: (S1 ('MetaSel ('Just "elabExtraIncludeDirs") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [FilePath]) :*: S1 ('MetaSel ('Just "elabProgPrefix") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe PathTemplate)))) :*: (S1 ('MetaSel ('Just "elabProgSuffix") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe PathTemplate)) :*: (S1 ('MetaSel ('Just "elabInstallDirs") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (InstallDirs FilePath)) :*: S1 ('MetaSel ('Just "elabHaddockHoogle") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Bool))))) :*: (((S1 ('MetaSel ('Just "elabHaddockHtml") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Bool) :*: S1 ('MetaSel ('Just "elabHaddockHtmlLocation") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe String))) :*: (S1 ('MetaSel ('Just "elabHaddockForeignLibs") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Bool) :*: (S1 ('MetaSel ('Just "elabHaddockForHackage") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 HaddockTarget) :*: S1 ('MetaSel ('Just "elabHaddockExecutables") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Bool)))) :*: ((S1 ('MetaSel ('Just "elabHaddockTestSuites") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Bool) :*: (S1 ('MetaSel ('Just "elabHaddockBenchmarks") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Bool) :*: S1 ('MetaSel ('Just "elabHaddockInternal") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Bool))) :*: (S1 ('MetaSel ('Just "elabHaddockCss") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe FilePath)) :*: (S1 ('MetaSel ('Just "elabHaddockLinkedSource") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Bool) :*: S1 ('MetaSel ('Just "elabHaddockQuickJump") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Bool)))))) :*: ((((S1 ('MetaSel ('Just "elabHaddockHscolourCss") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe FilePath)) :*: S1 ('MetaSel ('Just "elabHaddockContents") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe PathTemplate))) :*: (S1 ('MetaSel ('Just "elabHaddockIndex") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe PathTemplate)) :*: (S1 ('MetaSel ('Just "elabHaddockBaseUrl") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe String)) :*: S1 ('MetaSel ('Just "elabHaddockLib") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe String))))) :*: ((S1 ('MetaSel ('Just "elabTestMachineLog") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe PathTemplate)) :*: (S1 ('MetaSel ('Just "elabTestHumanLog") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe PathTemplate)) :*: S1 ('MetaSel ('Just "elabTestShowDetails") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe TestShowDetails)))) :*: (S1 ('MetaSel ('Just "elabTestKeepTix") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Bool) :*: (S1 ('MetaSel ('Just "elabTestWrapper") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe FilePath)) :*: S1 ('MetaSel ('Just "elabTestFailWhenNoTestSuites") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Bool))))) :*: (((S1 ('MetaSel ('Just "elabTestTestOptions") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [PathTemplate]) :*: (S1 ('MetaSel ('Just "elabBenchmarkOptions") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [PathTemplate]) :*: S1 ('MetaSel ('Just "elabSetupScriptStyle") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 SetupScriptStyle))) :*: (S1 ('MetaSel ('Just "elabSetupScriptCliVersion") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Version) :*: (S1 ('MetaSel ('Just "elabConfigureTargets") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [ComponentTarget]) :*: S1 ('MetaSel ('Just "elabBuildTargets") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [ComponentTarget])))) :*: ((S1 ('MetaSel ('Just "elabTestTargets") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [ComponentTarget]) :*: (S1 ('MetaSel ('Just "elabBenchTargets") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [ComponentTarget]) :*: S1 ('MetaSel ('Just "elabReplTarget") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe ComponentTarget)))) :*: (S1 ('MetaSel ('Just "elabHaddockTargets") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [ComponentTarget]) :*: (S1 ('MetaSel ('Just "elabBuildHaddocks") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Bool) :*: S1 ('MetaSel ('Just "elabPkgOrComp") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 ElaboratedPackageOrComponent)))))))))

elabDistDirParams :: ElaboratedSharedConfig -> ElaboratedConfiguredPackage -> DistDirParams #

elabExeDependencyPaths :: ElaboratedConfiguredPackage -> [FilePath] #

This returns the paths of all the executables we depend on; we must add these paths to PATH before invoking the setup script. (This is usually what you want, not `elabExeDependencies`, if you actually want to build something.)

elabLibDependencies :: ElaboratedConfiguredPackage -> [ConfiguredId] #

The library dependencies (i.e., the libraries we depend on, NOT the dependencies of the library), NOT including setup dependencies. These are passed to the `Setup` script via `--dependency`.

elabOrderLibDependencies :: ElaboratedConfiguredPackage -> [UnitId] #

Like `elabOrderDependencies`, but only returns dependencies on libraries.

elabExeDependencies :: ElaboratedConfiguredPackage -> [ComponentId] #

The executable dependencies (i.e., the executables we depend on); these are the executables we must add to the PATH before we invoke the setup script.

elabOrderExeDependencies :: ElaboratedConfiguredPackage -> [UnitId] #

Like `elabOrderDependencies`, but only returns dependencies on executables. (This coincides with `elabExeDependencies`.)

elabSetupDependencies :: ElaboratedConfiguredPackage -> [ConfiguredId] #

The setup dependencies (the library dependencies of the setup executable; note that it is not legal for setup scripts to have executable dependencies at the moment.)

elabPkgConfigDependencies :: ElaboratedConfiguredPackage -> [(PkgconfigName, Maybe PkgconfigVersion)] #

elabInplaceDependencyBuildCacheFiles :: DistDirLayout -> ElaboratedSharedConfig -> ElaboratedInstallPlan -> ElaboratedConfiguredPackage -> [FilePath] #

The cache files of all our inplace dependencies which, when updated, require us to rebuild. See #4202 for more details. Essentially, this is a list of filepaths that, if our dependencies get rebuilt, will themselves get updated.

Note: the hash of these cache files gets built into the build cache ourselves, which means that we end up tracking transitive dependencies!

Note: This tracks the "build" cache file, but not "registration" or "config" cache files. Why not? Arguably we should...

Note: This is a bit of a hack, because it is not really the hashes of the SOURCES of our (transitive) dependencies that we should use to decide whether or not to rebuild, but the output BUILD PRODUCTS. The strategy we use here will never work if we want to implement unchanging rebuilds.

elabRequiresRegistration :: ElaboratedConfiguredPackage -> Bool #

The packagecomponent containsis a library and so must be registered

dataDirsEnvironmentForPlan :: DistDirLayout -> ElaboratedInstallPlan -> [(String, Maybe FilePath)] #

Construct the environment needed for the data files to work. This consists of a separate `*_datadir` variable for each inplace package in the plan.

elabPlanPackageName :: Verbosity -> ElaboratedPlanPackage -> String #

User-friendly display string for an `ElaboratedPlanPackage`.

elabConfiguredName :: Verbosity -> ElaboratedConfiguredPackage -> String #

A user-friendly descriptor for an `ElaboratedConfiguredPackage`.

elabComponentName :: ElaboratedConfiguredPackage -> Maybe ComponentName #

data ElaboratedPackageOrComponent #

Constructors

ElabPackage ElaboratedPackage |
ElabComponent ElaboratedComponent |

#### Instances

Instances details

Structured ElaboratedPackageOrComponent # |
Instance details Defined in Distribution.Client.ProjectPlanning.Types Methods structure :: Proxy ElaboratedPackageOrComponent -> Structure # structureHash' :: Tagged ElaboratedPackageOrComponent MD5
Generic ElaboratedPackageOrComponent # |
Instance details Defined in Distribution.Client.ProjectPlanning.Types Associated Types
type Rep ElaboratedPackageOrComponent |
Instance details Defined in Distribution.Client.ProjectPlanning.Types type Rep ElaboratedPackageOrComponent = D1 ('MetaData "ElaboratedPackageOrComponent" "Distribution.Client.ProjectPlanning.Types" "cabal-install-3.10.2.1-EH6AEtqwlbKE3rh89dIk81" 'False) (C1 ('MetaCons "ElabPackage" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 ElaboratedPackage)) :+: C1 ('MetaCons "ElabComponent" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 ElaboratedComponent)))
Methods from :: ElaboratedPackageOrComponent -> Rep ElaboratedPackageOrComponent x # to :: Rep ElaboratedPackageOrComponent x -> ElaboratedPackageOrComponent #
Show ElaboratedPackageOrComponent # |
Instance details Defined in Distribution.Client.ProjectPlanning.Types Methods showsPrec :: Int -> ElaboratedPackageOrComponent -> ShowS # show :: ElaboratedPackageOrComponent -> String # showList :: [ElaboratedPackageOrComponent] -> ShowS #
Binary ElaboratedPackageOrComponent # |
Instance details Defined in Distribution.Client.ProjectPlanning.Types Methods put :: ElaboratedPackageOrComponent -> Put # get :: Get ElaboratedPackageOrComponent # putList :: [ElaboratedPackageOrComponent] -> Put #
Eq ElaboratedPackageOrComponent # |
Instance details Defined in Distribution.Client.ProjectPlanning.Types Methods (==) :: ElaboratedPackageOrComponent -> ElaboratedPackageOrComponent -> Bool # (/=) :: ElaboratedPackageOrComponent -> ElaboratedPackageOrComponent -> Bool #
type Rep ElaboratedPackageOrComponent # |
Instance details Defined in Distribution.Client.ProjectPlanning.Types type Rep ElaboratedPackageOrComponent = D1 ('MetaData "ElaboratedPackageOrComponent" "Distribution.Client.ProjectPlanning.Types" "cabal-install-3.10.2.1-EH6AEtqwlbKE3rh89dIk81" 'False) (C1 ('MetaCons "ElabPackage" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 ElaboratedPackage)) :+: C1 ('MetaCons "ElabComponent" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 ElaboratedComponent)))

data ElaboratedComponent #

Some extra metadata associated with an `ElaboratedConfiguredPackage` which indicates that the "package" in question is actually a single component to be built. Arguably it would be clearer if there were an ADT which branched into package work items and component work items, but I've structured it this way to minimize change to the existing code (which I don't feel qualified to rewrite.)

Constructors

ElaboratedComponent |
Fields compSolverName :: Component The name of the component to be built according to the solver compComponentName :: Maybe ComponentName The name of the component to be built. Nothing if it's a setup dep. compLibDependencies :: [ConfiguredId] The *external* library dependencies of this component. We pass this to the configure script. compLinkedLibDependencies :: [OpenUnitId] In a component prior to instantiation, this list specifies the `OpenUnitId`s which, after instantiation, are the actual dependencies of this package. Note that this does NOT include signature packages, which do not turn into real ordering dependencies when we instantiate. This is intended to be a purely temporary field, to carry some information to the instantiation phase. It's more precise than `compLibDependencies`, and also stores information about internal dependencies. compExeDependencies :: [ConfiguredId] The executable dependencies of this component (including internal executables). compPkgConfigDependencies :: [(PkgconfigName, Maybe PkgconfigVersion)] The `pkg-config` dependencies of the component compExeDependencyPaths :: [(ConfiguredId, FilePath)] The paths all our executable dependencies will be installed to once they are installed. compOrderLibDependencies :: [UnitId] The UnitIds of the libraries (identifying elaborated packages/ components) that must be built before this project. This is used purely for ordering purposes. It can contain both references to definite and indefinite packages; an indefinite UnitId indicates that we must typecheck that indefinite package before we can build this one.

#### Instances

Instances details

Structured ElaboratedComponent # |
Instance details Defined in Distribution.Client.ProjectPlanning.Types Methods structure :: Proxy ElaboratedComponent -> Structure # structureHash' :: Tagged ElaboratedComponent MD5
Generic ElaboratedComponent # |
Instance details Defined in Distribution.Client.ProjectPlanning.Types Associated Types
type Rep ElaboratedComponent |
Instance details Defined in Distribution.Client.ProjectPlanning.Types type Rep ElaboratedComponent = D1 ('MetaData "ElaboratedComponent" "Distribution.Client.ProjectPlanning.Types" "cabal-install-3.10.2.1-EH6AEtqwlbKE3rh89dIk81" 'False) (C1 ('MetaCons "ElaboratedComponent" 'PrefixI 'True) (((S1 ('MetaSel ('Just "compSolverName") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Component) :*: S1 ('MetaSel ('Just "compComponentName") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe ComponentName))) :*: (S1 ('MetaSel ('Just "compLibDependencies") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [ConfiguredId]) :*: S1 ('MetaSel ('Just "compLinkedLibDependencies") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [OpenUnitId]))) :*: ((S1 ('MetaSel ('Just "compExeDependencies") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [ConfiguredId]) :*: S1 ('MetaSel ('Just "compPkgConfigDependencies") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [(PkgconfigName, Maybe PkgconfigVersion)])) :*: (S1 ('MetaSel ('Just "compExeDependencyPaths") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [(ConfiguredId, FilePath)]) :*: S1 ('MetaSel ('Just "compOrderLibDependencies") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [UnitId])))))
Methods from :: ElaboratedComponent -> Rep ElaboratedComponent x # to :: Rep ElaboratedComponent x -> ElaboratedComponent #
Show ElaboratedComponent # |
Instance details Defined in Distribution.Client.ProjectPlanning.Types Methods showsPrec :: Int -> ElaboratedComponent -> ShowS # show :: ElaboratedComponent -> String # showList :: [ElaboratedComponent] -> ShowS #
Binary ElaboratedComponent # |
Instance details Defined in Distribution.Client.ProjectPlanning.Types Methods put :: ElaboratedComponent -> Put # get :: Get ElaboratedComponent # putList :: [ElaboratedComponent] -> Put #
Eq ElaboratedComponent # |
Instance details Defined in Distribution.Client.ProjectPlanning.Types Methods (==) :: ElaboratedComponent -> ElaboratedComponent -> Bool # (/=) :: ElaboratedComponent -> ElaboratedComponent -> Bool #
type Rep ElaboratedComponent # |
Instance details Defined in Distribution.Client.ProjectPlanning.Types type Rep ElaboratedComponent = D1 ('MetaData "ElaboratedComponent" "Distribution.Client.ProjectPlanning.Types" "cabal-install-3.10.2.1-EH6AEtqwlbKE3rh89dIk81" 'False) (C1 ('MetaCons "ElaboratedComponent" 'PrefixI 'True) (((S1 ('MetaSel ('Just "compSolverName") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Component) :*: S1 ('MetaSel ('Just "compComponentName") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe ComponentName))) :*: (S1 ('MetaSel ('Just "compLibDependencies") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [ConfiguredId]) :*: S1 ('MetaSel ('Just "compLinkedLibDependencies") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [OpenUnitId]))) :*: ((S1 ('MetaSel ('Just "compExeDependencies") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [ConfiguredId]) :*: S1 ('MetaSel ('Just "compPkgConfigDependencies") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [(PkgconfigName, Maybe PkgconfigVersion)])) :*: (S1 ('MetaSel ('Just "compExeDependencyPaths") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [(ConfiguredId, FilePath)]) :*: S1 ('MetaSel ('Just "compOrderLibDependencies") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [UnitId])))))

data ElaboratedPackage #

Constructors

ElaboratedPackage |
Fields pkgInstalledId :: InstalledPackageId pkgLibDependencies :: ComponentDeps [ConfiguredId] The exact dependencies (on other plan packages) pkgDependsOnSelfLib :: ComponentDeps [()] Components which depend (transitively) on an internally defined library. These are used by `elabRequiresRegistration`, to determine if a user-requested build is going to need a library registration pkgExeDependencies :: ComponentDeps [ConfiguredId] Dependencies on executable packages. pkgExeDependencyPaths :: ComponentDeps [(ConfiguredId, FilePath)] Paths where executable dependencies live. pkgPkgConfigDependencies :: [(PkgconfigName, Maybe PkgconfigVersion)] Dependencies on `pkg-config` packages. NB: this is NOT per-component (although it could be) because Cabal library does not track per-component pkg-config depends; it always does them all at once. pkgStanzasEnabled :: OptionalStanzaSet Which optional stanzas (ie testsuites, benchmarks) will actually be enabled during the package configure step.

#### Instances

Instances details

Structured ElaboratedPackage # |
Instance details Defined in Distribution.Client.ProjectPlanning.Types Methods structure :: Proxy ElaboratedPackage -> Structure # structureHash' :: Tagged ElaboratedPackage MD5
Generic ElaboratedPackage # |
Instance details Defined in Distribution.Client.ProjectPlanning.Types Associated Types
type Rep ElaboratedPackage |
Instance details Defined in Distribution.Client.ProjectPlanning.Types type Rep ElaboratedPackage = D1 ('MetaData "ElaboratedPackage" "Distribution.Client.ProjectPlanning.Types" "cabal-install-3.10.2.1-EH6AEtqwlbKE3rh89dIk81" 'False) (C1 ('MetaCons "ElaboratedPackage" 'PrefixI 'True) ((S1 ('MetaSel ('Just "pkgInstalledId") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 InstalledPackageId) :*: (S1 ('MetaSel ('Just "pkgLibDependencies") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (ComponentDeps [ConfiguredId])) :*: S1 ('MetaSel ('Just "pkgDependsOnSelfLib") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (ComponentDeps [()])))) :*: ((S1 ('MetaSel ('Just "pkgExeDependencies") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (ComponentDeps [ConfiguredId])) :*: S1 ('MetaSel ('Just "pkgExeDependencyPaths") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (ComponentDeps [(ConfiguredId, FilePath)]))) :*: (S1 ('MetaSel ('Just "pkgPkgConfigDependencies") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [(PkgconfigName, Maybe PkgconfigVersion)]) :*: S1 ('MetaSel ('Just "pkgStanzasEnabled") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 OptionalStanzaSet)))))
Methods from :: ElaboratedPackage -> Rep ElaboratedPackage x # to :: Rep ElaboratedPackage x -> ElaboratedPackage #
Show ElaboratedPackage # |
Instance details Defined in Distribution.Client.ProjectPlanning.Types Methods showsPrec :: Int -> ElaboratedPackage -> ShowS # show :: ElaboratedPackage -> String # showList :: [ElaboratedPackage] -> ShowS #
Binary ElaboratedPackage # |
Instance details Defined in Distribution.Client.ProjectPlanning.Types Methods put :: ElaboratedPackage -> Put # get :: Get ElaboratedPackage # putList :: [ElaboratedPackage] -> Put #
Eq ElaboratedPackage # |
Instance details Defined in Distribution.Client.ProjectPlanning.Types Methods (==) :: ElaboratedPackage -> ElaboratedPackage -> Bool # (/=) :: ElaboratedPackage -> ElaboratedPackage -> Bool #
type Rep ElaboratedPackage # |
Instance details Defined in Distribution.Client.ProjectPlanning.Types type Rep ElaboratedPackage = D1 ('MetaData "ElaboratedPackage" "Distribution.Client.ProjectPlanning.Types" "cabal-install-3.10.2.1-EH6AEtqwlbKE3rh89dIk81" 'False) (C1 ('MetaCons "ElaboratedPackage" 'PrefixI 'True) ((S1 ('MetaSel ('Just "pkgInstalledId") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 InstalledPackageId) :*: (S1 ('MetaSel ('Just "pkgLibDependencies") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (ComponentDeps [ConfiguredId])) :*: S1 ('MetaSel ('Just "pkgDependsOnSelfLib") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (ComponentDeps [()])))) :*: ((S1 ('MetaSel ('Just "pkgExeDependencies") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (ComponentDeps [ConfiguredId])) :*: S1 ('MetaSel ('Just "pkgExeDependencyPaths") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (ComponentDeps [(ConfiguredId, FilePath)]))) :*: (S1 ('MetaSel ('Just "pkgPkgConfigDependencies") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [(PkgconfigName, Maybe PkgconfigVersion)]) :*: S1 ('MetaSel ('Just "pkgStanzasEnabled") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 OptionalStanzaSet)))))

pkgOrderDependencies :: ElaboratedPackage -> ComponentDeps [UnitId] #

See `elabOrderDependencies`. This gives the unflattened version, which can be useful in some circumstances.

type ElaboratedPlanPackage = GenericPlanPackage InstalledPackageInfo ElaboratedConfiguredPackage #

data ElaboratedSharedConfig #

Constructors

ElaboratedSharedConfig |
Fields pkgConfigPlatform :: Platform pkgConfigCompiler :: Compiler pkgConfigCompilerProgs :: ProgramDb The programs that the compiler configured (e.g. for GHC, the progs ghc & ghc-pkg). Once constructed, only the `configuredPrograms` are used. pkgConfigReplOptions :: ReplOptions

#### Instances

Instances details

Structured ElaboratedSharedConfig # |
Instance details Defined in Distribution.Client.ProjectPlanning.Types Methods structure :: Proxy ElaboratedSharedConfig -> Structure # structureHash' :: Tagged ElaboratedSharedConfig MD5
Generic ElaboratedSharedConfig # |
Instance details Defined in Distribution.Client.ProjectPlanning.Types Associated Types
type Rep ElaboratedSharedConfig |
Instance details Defined in Distribution.Client.ProjectPlanning.Types type Rep ElaboratedSharedConfig = D1 ('MetaData "ElaboratedSharedConfig" "Distribution.Client.ProjectPlanning.Types" "cabal-install-3.10.2.1-EH6AEtqwlbKE3rh89dIk81" 'False) (C1 ('MetaCons "ElaboratedSharedConfig" 'PrefixI 'True) ((S1 ('MetaSel ('Just "pkgConfigPlatform") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Platform) :*: S1 ('MetaSel ('Just "pkgConfigCompiler") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Compiler)) :*: (S1 ('MetaSel ('Just "pkgConfigCompilerProgs") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 ProgramDb) :*: S1 ('MetaSel ('Just "pkgConfigReplOptions") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 ReplOptions))))
Methods from :: ElaboratedSharedConfig -> Rep ElaboratedSharedConfig x # to :: Rep ElaboratedSharedConfig x -> ElaboratedSharedConfig #
Show ElaboratedSharedConfig # |
Instance details Defined in Distribution.Client.ProjectPlanning.Types Methods showsPrec :: Int -> ElaboratedSharedConfig -> ShowS # show :: ElaboratedSharedConfig -> String # showList :: [ElaboratedSharedConfig] -> ShowS #
Binary ElaboratedSharedConfig # |
Instance details Defined in Distribution.Client.ProjectPlanning.Types Methods put :: ElaboratedSharedConfig -> Put # get :: Get ElaboratedSharedConfig # putList :: [ElaboratedSharedConfig] -> Put #
type Rep ElaboratedSharedConfig # |
Instance details Defined in Distribution.Client.ProjectPlanning.Types type Rep ElaboratedSharedConfig = D1 ('MetaData "ElaboratedSharedConfig" "Distribution.Client.ProjectPlanning.Types" "cabal-install-3.10.2.1-EH6AEtqwlbKE3rh89dIk81" 'False) (C1 ('MetaCons "ElaboratedSharedConfig" 'PrefixI 'True) ((S1 ('MetaSel ('Just "pkgConfigPlatform") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Platform) :*: S1 ('MetaSel ('Just "pkgConfigCompiler") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Compiler)) :*: (S1 ('MetaSel ('Just "pkgConfigCompilerProgs") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 ProgramDb) :*: S1 ('MetaSel ('Just "pkgConfigReplOptions") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 ReplOptions))))

type ElaboratedReadyPackage = GenericReadyPackage ElaboratedConfiguredPackage #

data BuildStyle #

This is used in the install plan to indicate how the package will be built.

Constructors

BuildAndInstall | The classic approach where the package is built, then the files installed into some location and the result registered in a package db. If the package came from a tarball then it's built in a temp dir and the results discarded.
BuildInplaceOnly | The package is built, but the files are not installed anywhere, rather the build dir is kept and the package is registered inplace. Such packages can still subsequently be installed. Typically `BuildAndInstall` packages will only depend on other `BuildAndInstall` style packages and not on `BuildInplaceOnly` ones.

#### Instances

Instances details

Structured BuildStyle # |
Instance details Defined in Distribution.Client.ProjectPlanning.Types Methods structure :: Proxy BuildStyle -> Structure # structureHash' :: Tagged BuildStyle MD5
Monoid BuildStyle # |
Instance details Defined in Distribution.Client.ProjectPlanning.Types Methods mempty :: BuildStyle # mappend :: BuildStyle -> BuildStyle -> BuildStyle # mconcat :: [BuildStyle] -> BuildStyle #
Semigroup BuildStyle # |
Instance details Defined in Distribution.Client.ProjectPlanning.Types Methods (<>) :: BuildStyle -> BuildStyle -> BuildStyle # sconcat :: NonEmpty BuildStyle -> BuildStyle # stimes :: Integral b => b -> BuildStyle -> BuildStyle #
Generic BuildStyle # |
Instance details Defined in Distribution.Client.ProjectPlanning.Types Associated Types
type Rep BuildStyle |
Instance details Defined in Distribution.Client.ProjectPlanning.Types type Rep BuildStyle = D1 ('MetaData "BuildStyle" "Distribution.Client.ProjectPlanning.Types" "cabal-install-3.10.2.1-EH6AEtqwlbKE3rh89dIk81" 'False) (C1 ('MetaCons "BuildAndInstall" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "BuildInplaceOnly" 'PrefixI 'False) (U1 :: Type -> Type))
Methods from :: BuildStyle -> Rep BuildStyle x # to :: Rep BuildStyle x -> BuildStyle #
Show BuildStyle # |
Instance details Defined in Distribution.Client.ProjectPlanning.Types Methods showsPrec :: Int -> BuildStyle -> ShowS # show :: BuildStyle -> String # showList :: [BuildStyle] -> ShowS #
Binary BuildStyle # |
Instance details Defined in Distribution.Client.ProjectPlanning.Types Methods put :: BuildStyle -> Put # get :: Get BuildStyle # putList :: [BuildStyle] -> Put #
Eq BuildStyle # |
Instance details Defined in Distribution.Client.ProjectPlanning.Types Methods (==) :: BuildStyle -> BuildStyle -> Bool # (/=) :: BuildStyle -> BuildStyle -> Bool #
type Rep BuildStyle # |
Instance details Defined in Distribution.Client.ProjectPlanning.Types type Rep BuildStyle = D1 ('MetaData "BuildStyle" "Distribution.Client.ProjectPlanning.Types" "cabal-install-3.10.2.1-EH6AEtqwlbKE3rh89dIk81" 'False) (C1 ('MetaCons "BuildAndInstall" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "BuildInplaceOnly" 'PrefixI 'False) (U1 :: Type -> Type))

type CabalFileText = ByteString #

# Build targets

data ComponentTarget #

Specific targets within a package or component to act on e.g. to build, haddock or open a repl.

Constructors

ComponentTarget ComponentName SubComponentTarget |

#### Instances

Instances details

Structured ComponentTarget # |
Instance details Defined in Distribution.Client.ProjectPlanning.Types Methods structure :: Proxy ComponentTarget -> Structure # structureHash' :: Tagged ComponentTarget MD5
Generic ComponentTarget # |
Instance details Defined in Distribution.Client.ProjectPlanning.Types Associated Types
type Rep ComponentTarget |
Instance details Defined in Distribution.Client.ProjectPlanning.Types type Rep ComponentTarget = D1 ('MetaData "ComponentTarget" "Distribution.Client.ProjectPlanning.Types" "cabal-install-3.10.2.1-EH6AEtqwlbKE3rh89dIk81" 'False) (C1 ('MetaCons "ComponentTarget" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 ComponentName) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 SubComponentTarget)))
Methods from :: ComponentTarget -> Rep ComponentTarget x # to :: Rep ComponentTarget x -> ComponentTarget #
Show ComponentTarget # |
Instance details Defined in Distribution.Client.ProjectPlanning.Types Methods showsPrec :: Int -> ComponentTarget -> ShowS # show :: ComponentTarget -> String # showList :: [ComponentTarget] -> ShowS #
Binary ComponentTarget # |
Instance details Defined in Distribution.Client.ProjectPlanning.Types Methods put :: ComponentTarget -> Put # get :: Get ComponentTarget # putList :: [ComponentTarget] -> Put #
Eq ComponentTarget # |
Instance details Defined in Distribution.Client.ProjectPlanning.Types Methods (==) :: ComponentTarget -> ComponentTarget -> Bool # (/=) :: ComponentTarget -> ComponentTarget -> Bool #
Ord ComponentTarget # |
Instance details Defined in Distribution.Client.ProjectPlanning.Types Methods compare :: ComponentTarget -> ComponentTarget -> Ordering # (<) :: ComponentTarget -> ComponentTarget -> Bool # (<=) :: ComponentTarget -> ComponentTarget -> Bool # (>) :: ComponentTarget -> ComponentTarget -> Bool # (>=) :: ComponentTarget -> ComponentTarget -> Bool # max :: ComponentTarget -> ComponentTarget -> ComponentTarget # min :: ComponentTarget -> ComponentTarget -> ComponentTarget #
type Rep ComponentTarget # |
Instance details Defined in Distribution.Client.ProjectPlanning.Types type Rep ComponentTarget = D1 ('MetaData "ComponentTarget" "Distribution.Client.ProjectPlanning.Types" "cabal-install-3.10.2.1-EH6AEtqwlbKE3rh89dIk81" 'False) (C1 ('MetaCons "ComponentTarget" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 ComponentName) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 SubComponentTarget)))

showComponentTarget :: PackageId -> ComponentTarget -> String #

Unambiguously render a `ComponentTarget`, e.g., to pass to a Cabal Setup script.

showTestComponentTarget :: PackageId -> ComponentTarget -> Maybe String #

showBenchComponentTarget :: PackageId -> ComponentTarget -> Maybe String #

data SubComponentTarget #

Either the component as a whole or detail about a file or module target within a component.

Constructors

WholeComponent | The component as a whole
ModuleTarget ModuleName | A specific module within a component.
FileTarget FilePath | A specific file within a component. Note that this does not carry the file extension.

#### Instances

Instances details

Structured SubComponentTarget # |
Instance details Defined in Distribution.Client.TargetSelector Methods structure :: Proxy SubComponentTarget -> Structure # structureHash' :: Tagged SubComponentTarget MD5
Generic SubComponentTarget # |
Instance details Defined in Distribution.Client.TargetSelector Associated Types
type Rep SubComponentTarget |
Instance details Defined in Distribution.Client.TargetSelector type Rep SubComponentTarget = D1 ('MetaData "SubComponentTarget" "Distribution.Client.TargetSelector" "cabal-install-3.10.2.1-EH6AEtqwlbKE3rh89dIk81" 'False) (C1 ('MetaCons "WholeComponent" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "ModuleTarget" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 ModuleName)) :+: C1 ('MetaCons "FileTarget" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 FilePath))))
Methods from :: SubComponentTarget -> Rep SubComponentTarget x # to :: Rep SubComponentTarget x -> SubComponentTarget #
Show SubComponentTarget # |
Instance details Defined in Distribution.Client.TargetSelector Methods showsPrec :: Int -> SubComponentTarget -> ShowS # show :: SubComponentTarget -> String # showList :: [SubComponentTarget] -> ShowS #
Binary SubComponentTarget # |
Instance details Defined in Distribution.Client.TargetSelector Methods put :: SubComponentTarget -> Put # get :: Get SubComponentTarget # putList :: [SubComponentTarget] -> Put #
Eq SubComponentTarget # |
Instance details Defined in Distribution.Client.TargetSelector Methods (==) :: SubComponentTarget -> SubComponentTarget -> Bool # (/=) :: SubComponentTarget -> SubComponentTarget -> Bool #
Ord SubComponentTarget # |
Instance details Defined in Distribution.Client.TargetSelector Methods compare :: SubComponentTarget -> SubComponentTarget -> Ordering # (<) :: SubComponentTarget -> SubComponentTarget -> Bool # (<=) :: SubComponentTarget -> SubComponentTarget -> Bool # (>) :: SubComponentTarget -> SubComponentTarget -> Bool # (>=) :: SubComponentTarget -> SubComponentTarget -> Bool # max :: SubComponentTarget -> SubComponentTarget -> SubComponentTarget # min :: SubComponentTarget -> SubComponentTarget -> SubComponentTarget #
type Rep SubComponentTarget # |
Instance details Defined in Distribution.Client.TargetSelector type Rep SubComponentTarget = D1 ('MetaData "SubComponentTarget" "Distribution.Client.TargetSelector" "cabal-install-3.10.2.1-EH6AEtqwlbKE3rh89dIk81" 'False) (C1 ('MetaCons "WholeComponent" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "ModuleTarget" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 ModuleName)) :+: C1 ('MetaCons "FileTarget" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 FilePath))))

isSubLibComponentTarget :: ComponentTarget -> Bool #

isForeignLibComponentTarget :: ComponentTarget -> Bool #

isExeComponentTarget :: ComponentTarget -> Bool #

isTestComponentTarget :: ComponentTarget -> Bool #

isBenchComponentTarget :: ComponentTarget -> Bool #

componentOptionalStanza :: Component -> Maybe OptionalStanza #

# Setup script

data SetupScriptStyle #

There are four major cases for Setup.hs handling:

1. `build-type` Custom with a `custom-setup` section
2. `build-type` Custom without a `custom-setup` section
3. `build-type` not Custom with `cabal-version > $our-cabal-version`
4. `build-type` not Custom with `cabal-version <= $our-cabal-version`

It's also worth noting that packages specifying `cabal-version: >= 1.23` or later that have `build-type` Custom will always have a `custom-setup` section. Therefore in case 2, the specified `cabal-version` will always be less than 1.23.

In cases 1 and 2 we obviously have to build an external Setup.hs script, while in case 4 we can use the internal library API. In case 3 we also have to build an external Setup.hs script because the package needs a later Cabal lib version than we can support internally.

Constructors

SetupCustomExplicitDeps |
SetupCustomImplicitDeps |
SetupNonCustomExternalLib |
SetupNonCustomInternalLib |

#### Instances

Instances details

Structured SetupScriptStyle # |
Instance details Defined in Distribution.Client.ProjectPlanning.Types Methods structure :: Proxy SetupScriptStyle -> Structure # structureHash' :: Tagged SetupScriptStyle MD5
Generic SetupScriptStyle # |
Instance details Defined in Distribution.Client.ProjectPlanning.Types Associated Types
type Rep SetupScriptStyle |
Instance details Defined in Distribution.Client.ProjectPlanning.Types type Rep SetupScriptStyle = D1 ('MetaData "SetupScriptStyle" "Distribution.Client.ProjectPlanning.Types" "cabal-install-3.10.2.1-EH6AEtqwlbKE3rh89dIk81" 'False) ((C1 ('MetaCons "SetupCustomExplicitDeps" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "SetupCustomImplicitDeps" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "SetupNonCustomExternalLib" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "SetupNonCustomInternalLib" 'PrefixI 'False) (U1 :: Type -> Type)))
Methods from :: SetupScriptStyle -> Rep SetupScriptStyle x # to :: Rep SetupScriptStyle x -> SetupScriptStyle #
Show SetupScriptStyle # |
Instance details Defined in Distribution.Client.ProjectPlanning.Types Methods showsPrec :: Int -> SetupScriptStyle -> ShowS # show :: SetupScriptStyle -> String # showList :: [SetupScriptStyle] -> ShowS #
Binary SetupScriptStyle # |
Instance details Defined in Distribution.Client.ProjectPlanning.Types Methods put :: SetupScriptStyle -> Put # get :: Get SetupScriptStyle # putList :: [SetupScriptStyle] -> Put #
Eq SetupScriptStyle # |
Instance details Defined in Distribution.Client.ProjectPlanning.Types Methods (==) :: SetupScriptStyle -> SetupScriptStyle -> Bool # (/=) :: SetupScriptStyle -> SetupScriptStyle -> Bool #
type Rep SetupScriptStyle # |
Instance details Defined in Distribution.Client.ProjectPlanning.Types type Rep SetupScriptStyle = D1 ('MetaData "SetupScriptStyle" "Distribution.Client.ProjectPlanning.Types" "cabal-install-3.10.2.1-EH6AEtqwlbKE3rh89dIk81" 'False) ((C1 ('MetaCons "SetupCustomExplicitDeps" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "SetupCustomImplicitDeps" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "SetupNonCustomExternalLib" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "SetupNonCustomInternalLib" 'PrefixI 'False) (U1 :: Type -> Type)))