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

Safe Haskell | None
Language | Haskell2010

Distribution.Client.ProjectPlanning

Contents

- elaborated install plan types
- Producing the elaborated install plan
- Build targets
- Selecting a plan subset
- Utils required for building
- Setup.hs CLI flags for building
- Path construction

Description

Planning how to build everything in a project.

Synopsis

- type ElaboratedInstallPlan = GenericInstallPlan InstalledPackageInfo 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
  }
- 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
- rebuildProjectConfig :: Verbosity -> HttpTransport -> DistDirLayout -> ProjectConfig -> IO (ProjectConfig, [PackageSpecifier UnresolvedSourcePackage])
- rebuildInstallPlan :: Verbosity -> DistDirLayout -> CabalDirLayout -> ProjectConfig -> [PackageSpecifier UnresolvedSourcePackage] -> Maybe InstalledPackageIndex -> IO (ElaboratedInstallPlan, ElaboratedInstallPlan, ElaboratedSharedConfig, TotalIndexState, ActiveRepos)
- availableTargets :: ElaboratedInstallPlan -> Map (PackageId, ComponentName) [AvailableTarget (UnitId, ComponentName)]
- data AvailableTarget k = AvailableTarget {
  - availableTargetPackageId :: PackageId
  - availableTargetComponentName :: ComponentName
  - availableTargetStatus :: AvailableTargetStatus k
  - availableTargetLocalToProject :: Bool
  }
- data AvailableTargetStatus k
  - = TargetDisabledByUser
  - | TargetDisabledBySolver
  - | TargetNotBuildable
  - | TargetNotLocal
  - | TargetBuildable k TargetRequested
- data TargetRequested
  - = TargetRequestedByDefault
  - | TargetNotRequestedByDefault
- data ComponentTarget = ComponentTarget ComponentName SubComponentTarget
- data SubComponentTarget
  - = WholeComponent
  - | ModuleTarget ModuleName
  - | FileTarget FilePath
- showComponentTarget :: PackageId -> ComponentTarget -> String
- nubComponentTargets :: [(ComponentTarget, a)] -> [(ComponentTarget, NonEmpty a)]
- pruneInstallPlanToTargets :: TargetAction -> Map UnitId [ComponentTarget] -> ElaboratedInstallPlan -> ElaboratedInstallPlan
- data TargetAction
  - = TargetActionConfigure
  - | TargetActionBuild
  - | TargetActionRepl
  - | TargetActionTest
  - | TargetActionBench
  - | TargetActionHaddock
- pruneInstallPlanToDependencies :: Set UnitId -> ElaboratedInstallPlan -> Either CannotPruneDependencies ElaboratedInstallPlan
- newtype CannotPruneDependencies = CannotPruneDependencies [(ElaboratedPlanPackage, [ElaboratedPlanPackage])]
- pkgHasEphemeralBuildTargets :: ElaboratedConfiguredPackage -> Bool
- elabBuildTargetWholeComponents :: ElaboratedConfiguredPackage -> Set ComponentName
- configureCompiler :: Verbosity -> DistDirLayout -> ProjectConfig -> Rebuild (Compiler, Platform, ProgramDb)
- setupHsScriptOptions :: ElaboratedReadyPackage -> ElaboratedInstallPlan -> ElaboratedSharedConfig -> DistDirLayout -> FilePath -> FilePath -> Bool -> Lock -> SetupScriptOptions
- setupHsConfigureFlags :: ElaboratedReadyPackage -> ElaboratedSharedConfig -> Verbosity -> FilePath -> ConfigFlags
- setupHsConfigureArgs :: ElaboratedConfiguredPackage -> [String]
- setupHsBuildFlags :: ElaboratedConfiguredPackage -> ElaboratedSharedConfig -> Verbosity -> FilePath -> BuildFlags
- setupHsBuildArgs :: ElaboratedConfiguredPackage -> [String]
- setupHsReplFlags :: ElaboratedConfiguredPackage -> ElaboratedSharedConfig -> Verbosity -> FilePath -> ReplFlags
- setupHsReplArgs :: ElaboratedConfiguredPackage -> [String]
- setupHsTestFlags :: ElaboratedConfiguredPackage -> ElaboratedSharedConfig -> Verbosity -> FilePath -> TestFlags
- setupHsTestArgs :: ElaboratedConfiguredPackage -> [String]
- setupHsBenchFlags :: ElaboratedConfiguredPackage -> ElaboratedSharedConfig -> Verbosity -> FilePath -> BenchmarkFlags
- setupHsBenchArgs :: ElaboratedConfiguredPackage -> [String]
- setupHsCopyFlags :: ElaboratedConfiguredPackage -> ElaboratedSharedConfig -> Verbosity -> FilePath -> FilePath -> CopyFlags
- setupHsRegisterFlags :: ElaboratedConfiguredPackage -> ElaboratedSharedConfig -> Verbosity -> FilePath -> FilePath -> RegisterFlags
- setupHsHaddockFlags :: ElaboratedConfiguredPackage -> ElaboratedSharedConfig -> Verbosity -> FilePath -> HaddockFlags
- setupHsHaddockArgs :: ElaboratedConfiguredPackage -> [String]
- packageHashInputs :: ElaboratedSharedConfig -> ElaboratedConfiguredPackage -> PackageHashInputs
- binDirectoryFor :: DistDirLayout -> ElaboratedSharedConfig -> ElaboratedConfiguredPackage -> FilePath -> FilePath
- binDirectories :: DistDirLayout -> ElaboratedSharedConfig -> ElaboratedConfiguredPackage -> [FilePath]
- storePackageInstallDirs :: StoreDirLayout -> CompilerId -> InstalledPackageId -> InstallDirs FilePath
- storePackageInstallDirs' :: StoreDirLayout -> CompilerId -> UnitId -> InstallDirs FilePath

# 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).

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)))))))))

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 #

# Producing the elaborated install plan

rebuildProjectConfig :: Verbosity -> HttpTransport -> DistDirLayout -> ProjectConfig -> IO (ProjectConfig, [PackageSpecifier UnresolvedSourcePackage]) #

Return the up-to-date project config and information about the local packages within the project.

rebuildInstallPlan #

Arguments

:: Verbosity |
-> DistDirLayout |
-> CabalDirLayout |
-> ProjectConfig |
-> [PackageSpecifier UnresolvedSourcePackage] |
-> Maybe InstalledPackageIndex |

-> IO (ElaboratedInstallPlan, ElaboratedInstallPlan, ElaboratedSharedConfig, TotalIndexState, ActiveRepos)

    (improvedPlan, elaboratedPlan, _, _, _)

Return an up-to-date elaborated install plan.

Two variants of the install plan are returned: with and without packages from the store. That is, the "improved" plan where source packages are replaced by pre-existing installed packages from the store (when their ids match), and also the original elaborated plan which uses primarily source packages.

# Build targets

availableTargets :: ElaboratedInstallPlan -> Map (PackageId, ComponentName) [AvailableTarget (UnitId, ComponentName)] #

Given the install plan, produce the set of `AvailableTarget`s for each package-component pair.

Typically there will only be one such target for each component, but for example if we have a plan with both normal and profiling variants of a component then we would get both as available targets, or similarly if we had a plan that contained two instances of the same version of a package. This approach makes it relatively easy to select all instances/variants of a component.

data AvailableTarget k #

An available target represents a component within a package that a user command could plausibly refer to. In this sense, all the components defined within the package are things the user could refer to, whether or not it would actually be possible to build that component.

In particular the available target contains an `AvailableTargetStatus` which informs us about whether it's actually possible to select this component to be built, and if not why not. This detail makes it possible for command implementations (like `build`, `test` etc) to accurately report why a target cannot be used.

Note that the type parameter is used to help enforce that command implementations can only select targets that can actually be built (by forcing them to return the `k` value for the selected targets). In particular `resolveTargets` makes use of this (with `k` as `(`UnitId`, ComponentName')`) to identify the targets thus selected.

Constructors

AvailableTarget |

Fields

- availableTargetPackageId :: PackageId
- availableTargetComponentName :: ComponentName
- availableTargetStatus :: AvailableTargetStatus k
- availableTargetLocalToProject :: Bool

#### Instances

Instances details

Functor AvailableTarget # |
Instance details Defined in Distribution.Client.ProjectPlanning Methods fmap :: (a -> b) -> AvailableTarget a -> AvailableTarget b # (<$) :: a -> AvailableTarget b -> AvailableTarget a #
Show k => Show (AvailableTarget k) # |
Instance details Defined in Distribution.Client.ProjectPlanning Methods showsPrec :: Int -> AvailableTarget k -> ShowS # show :: AvailableTarget k -> String # showList :: [AvailableTarget k] -> ShowS #
Eq k => Eq (AvailableTarget k) # |
Instance details Defined in Distribution.Client.ProjectPlanning Methods (==) :: AvailableTarget k -> AvailableTarget k -> Bool # (/=) :: AvailableTarget k -> AvailableTarget k -> Bool #

data AvailableTargetStatus k #

The status of a an `AvailableTarget` component. This tells us whether it's actually possible to select this component to be built, and if not why not.

Constructors

TargetDisabledByUser | When the user does `tests: False`
TargetDisabledBySolver | When the solver could not enable tests
TargetNotBuildable | When the component has `buildable: False`
TargetNotLocal | When the component is non-core in a non-local package
TargetBuildable k TargetRequested | The target can or should be built

#### Instances

Instances details

Functor AvailableTargetStatus # |
Instance details Defined in Distribution.Client.ProjectPlanning Methods fmap :: (a -> b) -> AvailableTargetStatus a -> AvailableTargetStatus b # (<$) :: a -> AvailableTargetStatus b -> AvailableTargetStatus a #
Show k => Show (AvailableTargetStatus k) # |
Instance details Defined in Distribution.Client.ProjectPlanning Methods showsPrec :: Int -> AvailableTargetStatus k -> ShowS # show :: AvailableTargetStatus k -> String # showList :: [AvailableTargetStatus k] -> ShowS #
Eq k => Eq (AvailableTargetStatus k) # |
Instance details Defined in Distribution.Client.ProjectPlanning Methods (==) :: AvailableTargetStatus k -> AvailableTargetStatus k -> Bool # (/=) :: AvailableTargetStatus k -> AvailableTargetStatus k -> Bool #
Ord k => Ord (AvailableTargetStatus k) # |

Instance details

Defined in Distribution.Client.ProjectPlanning

Methods

compare :: AvailableTargetStatus k -> AvailableTargetStatus k -> Ordering #

(<) :: AvailableTargetStatus k -> AvailableTargetStatus k -> Bool #

(<=) :: AvailableTargetStatus k -> AvailableTargetStatus k -> Bool #

(>) :: AvailableTargetStatus k -> AvailableTargetStatus k -> Bool #

(>=) :: AvailableTargetStatus k -> AvailableTargetStatus k -> Bool #

max :: AvailableTargetStatus k -> AvailableTargetStatus k -> AvailableTargetStatus k #

min :: AvailableTargetStatus k -> AvailableTargetStatus k -> AvailableTargetStatus k #

data TargetRequested #

This tells us whether a target ought to be built by default, or only if specifically requested. The policy is that components like libraries and executables are built by default by `build`, but test suites and benchmarks are not, unless this is overridden in the project configuration.

Constructors

TargetRequestedByDefault | To be built by default
TargetNotRequestedByDefault | Not to be built by default

#### Instances

Instances details

Show TargetRequested # |
Instance details Defined in Distribution.Client.ProjectPlanning Methods showsPrec :: Int -> TargetRequested -> ShowS # show :: TargetRequested -> String # showList :: [TargetRequested] -> ShowS #
Eq TargetRequested # |
Instance details Defined in Distribution.Client.ProjectPlanning Methods (==) :: TargetRequested -> TargetRequested -> Bool # (/=) :: TargetRequested -> TargetRequested -> Bool #
Ord TargetRequested # |

Instance details

Defined in Distribution.Client.ProjectPlanning

Methods

compare :: TargetRequested -> TargetRequested -> Ordering #

(<) :: TargetRequested -> TargetRequested -> Bool #

(<=) :: TargetRequested -> TargetRequested -> Bool #

(>) :: TargetRequested -> TargetRequested -> Bool #

(>=) :: TargetRequested -> TargetRequested -> Bool #

max :: TargetRequested -> TargetRequested -> TargetRequested #

min :: TargetRequested -> TargetRequested -> TargetRequested #

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)))

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))))

showComponentTarget :: PackageId -> ComponentTarget -> String #

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

nubComponentTargets :: [(ComponentTarget, a)] -> [(ComponentTarget, NonEmpty a)] #

Merge component targets that overlap each other. Specially when we have multiple targets for the same component and one of them refers to the whole component (rather than a module or file within) then all the other targets for that component are subsumed.

We also allow for information associated with each component target, and whenever we targets subsume each other we aggregate their associated info.

# Selecting a plan subset

pruneInstallPlanToTargets :: TargetAction -> Map UnitId [ComponentTarget] -> ElaboratedInstallPlan -> ElaboratedInstallPlan #

Given a set of per-package/per-component targets, take the subset of the install plan needed to build those targets. Also, update the package config to specify which optional stanzas to enable, and which targets within each package to build.

NB: Pruning happens after improvement, which is important because we will prune differently depending on what is already installed (to implement "sticky" test suite enabling behavior).

data TargetAction #

How `pruneInstallPlanToTargets` should interpret the per-package `ComponentTarget`s: as build, repl or haddock targets.

Constructors

TargetActionConfigure |
TargetActionBuild |
TargetActionRepl |
TargetActionTest |
TargetActionBench |
TargetActionHaddock |

pruneInstallPlanToDependencies :: Set UnitId -> ElaboratedInstallPlan -> Either CannotPruneDependencies ElaboratedInstallPlan #

Try to remove the given targets from the install plan.

This is not always possible.

newtype CannotPruneDependencies #

It is not always possible to prune to only the dependencies of a set of targets. It may be the case that removing a package leaves something else that still needed the pruned package.

This lists all the packages that would be broken, and their dependencies that would be missing if we did prune.

Constructors

CannotPruneDependencies [(ElaboratedPlanPackage, [ElaboratedPlanPackage])] |

#### Instances

Instances details

Show CannotPruneDependencies # |
Instance details Defined in Distribution.Client.ProjectPlanning Methods showsPrec :: Int -> CannotPruneDependencies -> ShowS # show :: CannotPruneDependencies -> String # showList :: [CannotPruneDependencies] -> ShowS #

# Utils required for building

pkgHasEphemeralBuildTargets :: ElaboratedConfiguredPackage -> Bool #

elabBuildTargetWholeComponents :: ElaboratedConfiguredPackage -> Set ComponentName #

The components that we'll build all of, meaning that after they're built we can skip building them again (unlike with building just some modules or other files within a component).

configureCompiler :: Verbosity -> DistDirLayout -> ProjectConfig -> Rebuild (Compiler, Platform, ProgramDb) #

# Setup.hs CLI flags for building

setupHsScriptOptions :: ElaboratedReadyPackage -> ElaboratedInstallPlan -> ElaboratedSharedConfig -> DistDirLayout -> FilePath -> FilePath -> Bool -> Lock -> SetupScriptOptions #

setupHsConfigureFlags :: ElaboratedReadyPackage -> ElaboratedSharedConfig -> Verbosity -> FilePath -> ConfigFlags #

setupHsConfigureArgs :: ElaboratedConfiguredPackage -> [String] #

setupHsBuildFlags :: ElaboratedConfiguredPackage -> ElaboratedSharedConfig -> Verbosity -> FilePath -> BuildFlags #

setupHsBuildArgs :: ElaboratedConfiguredPackage -> [String] #

setupHsReplFlags :: ElaboratedConfiguredPackage -> ElaboratedSharedConfig -> Verbosity -> FilePath -> ReplFlags #

setupHsReplArgs :: ElaboratedConfiguredPackage -> [String] #

setupHsTestFlags :: ElaboratedConfiguredPackage -> ElaboratedSharedConfig -> Verbosity -> FilePath -> TestFlags #

setupHsTestArgs :: ElaboratedConfiguredPackage -> [String] #

setupHsBenchFlags :: ElaboratedConfiguredPackage -> ElaboratedSharedConfig -> Verbosity -> FilePath -> BenchmarkFlags #

setupHsBenchArgs :: ElaboratedConfiguredPackage -> [String] #

setupHsCopyFlags :: ElaboratedConfiguredPackage -> ElaboratedSharedConfig -> Verbosity -> FilePath -> FilePath -> CopyFlags #

setupHsRegisterFlags :: ElaboratedConfiguredPackage -> ElaboratedSharedConfig -> Verbosity -> FilePath -> FilePath -> RegisterFlags #

setupHsHaddockFlags :: ElaboratedConfiguredPackage -> ElaboratedSharedConfig -> Verbosity -> FilePath -> HaddockFlags #

setupHsHaddockArgs :: ElaboratedConfiguredPackage -> [String] #

packageHashInputs :: ElaboratedSharedConfig -> ElaboratedConfiguredPackage -> PackageHashInputs #

# Path construction

binDirectoryFor :: DistDirLayout -> ElaboratedSharedConfig -> ElaboratedConfiguredPackage -> FilePath -> FilePath #

The path to the directory that contains a specific executable. NB: For inplace NOT InstallPaths.bindir installDirs; for an inplace build those values are utter nonsense. So we have to guess where the directory is going to be. Fortunately this is "stable" part of Cabal API. But the way we get the build directory is A HORRIBLE HACK.

binDirectories :: DistDirLayout -> ElaboratedSharedConfig -> ElaboratedConfiguredPackage -> [FilePath] #

Get the bin/ directories that a package's executables should reside in.

The result may be empty if the package does not build any executables.

The result may have several entries if this is an inplace build of a package with multiple executables.

storePackageInstallDirs :: StoreDirLayout -> CompilerId -> InstalledPackageId -> InstallDirs FilePath #

storePackageInstallDirs' :: StoreDirLayout -> CompilerId -> UnitId -> InstallDirs FilePath #