Cabal-3.10.1.0: A framework for packaging Haskell software

Safe Haskell | Safe-Inferred
Language | Haskell2010

Distribution.Types.ComponentLocalBuildInfo

Synopsis

- data ComponentLocalBuildInfo
  - = LibComponentLocalBuildInfo {
    - componentLocalName :: ComponentName
    - componentComponentId :: ComponentId
    - componentUnitId :: UnitId
    - componentIsIndefinite_ :: Bool
    - componentInstantiatedWith :: [(ModuleName, OpenModule)]
    - componentPackageDeps :: [(UnitId, MungedPackageId)]
    - componentIncludes :: [(OpenUnitId, ModuleRenaming)]
    - componentExeDeps :: [UnitId]
    - componentInternalDeps :: [UnitId]
    - componentCompatPackageKey :: String
    - componentCompatPackageName :: MungedPackageName
    - componentExposedModules :: [ExposedModule]
    - componentIsPublic :: Bool
    }
  - | FLibComponentLocalBuildInfo {
    - componentLocalName :: ComponentName
    - componentComponentId :: ComponentId
    - componentUnitId :: UnitId
    - componentPackageDeps :: [(UnitId, MungedPackageId)]
    - componentIncludes :: [(OpenUnitId, ModuleRenaming)]
    - componentExeDeps :: [UnitId]
    - componentInternalDeps :: [UnitId]
    }
  - | ExeComponentLocalBuildInfo {
    - componentLocalName :: ComponentName
    - componentComponentId :: ComponentId
    - componentUnitId :: UnitId
    - componentPackageDeps :: [(UnitId, MungedPackageId)]
    - componentIncludes :: [(OpenUnitId, ModuleRenaming)]
    - componentExeDeps :: [UnitId]
    - componentInternalDeps :: [UnitId]
    }
  - | TestComponentLocalBuildInfo {
    - componentLocalName :: ComponentName
    - componentComponentId :: ComponentId
    - componentUnitId :: UnitId
    - componentPackageDeps :: [(UnitId, MungedPackageId)]
    - componentIncludes :: [(OpenUnitId, ModuleRenaming)]
    - componentExeDeps :: [UnitId]
    - componentInternalDeps :: [UnitId]
    }
  - | BenchComponentLocalBuildInfo {
    - componentLocalName :: ComponentName
    - componentComponentId :: ComponentId
    - componentUnitId :: UnitId
    - componentPackageDeps :: [(UnitId, MungedPackageId)]
    - componentIncludes :: [(OpenUnitId, ModuleRenaming)]
    - componentExeDeps :: [UnitId]
    - componentInternalDeps :: [UnitId]
    }
- componentIsIndefinite :: ComponentLocalBuildInfo -> Bool
- maybeComponentInstantiatedWith :: ComponentLocalBuildInfo -> Maybe [(ModuleName, OpenModule)]

# Documentation

data ComponentLocalBuildInfo Source #

The first five fields are common across all algebraic variants.

Constructors

LibComponentLocalBuildInfo |

Fields

- componentLocalName :: ComponentName

  It would be very convenient to store the literal Library here, but if we do that, it will get serialized (via the Binary) instance twice. So instead we just provide the ComponentName, which can be used to find the Component in the PackageDescription. NB: eventually, this will NOT uniquely identify the ComponentLocalBuildInfo.

- componentComponentId :: ComponentId

  The computed `ComponentId` of this component.

- componentUnitId :: UnitId

  The computed `UnitId` which uniquely identifies this component. Might be hashed.

- componentIsIndefinite_ :: Bool

  Is this an indefinite component (i.e. has unfilled holes)?

- componentInstantiatedWith :: [(ModuleName, OpenModule)]

  How the component was instantiated

- componentPackageDeps :: [(UnitId, MungedPackageId)]

  Resolved internal and external package dependencies for this component. The `BuildInfo` specifies a set of build dependencies that must be satisfied in terms of version ranges. This field fixes those dependencies to the specific versions available on this machine for this compiler.

- componentIncludes :: [(OpenUnitId, ModuleRenaming)]

  The set of packages that are brought into scope during compilation, including a `ModuleRenaming` which may used to hide or rename modules. This is what gets translated into `-package-id` arguments. This is a modernized version of `componentPackageDeps`, which is kept around for BC purposes.

- componentExeDeps :: [UnitId]
- componentInternalDeps :: [UnitId]

  The internal dependencies which induce a graph on the `ComponentLocalBuildInfo` of this package. This does NOT coincide with `componentPackageDeps` because it ALSO records 'build-tool' dependencies on executables. Maybe one day `cabal-install` will also handle these correctly too!

- componentCompatPackageKey :: String

  Compatibility "package key" that we pass to older versions of GHC.

- componentCompatPackageName :: MungedPackageName

  Compatibility "package name" that we register this component as.

- componentExposedModules :: [ExposedModule]

  A list of exposed modules (either defined in this component, or reexported from another component.)

- componentIsPublic :: Bool

  Convenience field, specifying whether or not this is the "public library" that has the same name as the package.

FLibComponentLocalBuildInfo |

Fields

- componentLocalName :: ComponentName

  It would be very convenient to store the literal Library here, but if we do that, it will get serialized (via the Binary) instance twice. So instead we just provide the ComponentName, which can be used to find the Component in the PackageDescription. NB: eventually, this will NOT uniquely identify the ComponentLocalBuildInfo.

- componentComponentId :: ComponentId

  The computed `ComponentId` of this component.

- componentUnitId :: UnitId

  The computed `UnitId` which uniquely identifies this component. Might be hashed.

- componentPackageDeps :: [(UnitId, MungedPackageId)]

  Resolved internal and external package dependencies for this component. The `BuildInfo` specifies a set of build dependencies that must be satisfied in terms of version ranges. This field fixes those dependencies to the specific versions available on this machine for this compiler.

- componentIncludes :: [(OpenUnitId, ModuleRenaming)]

  The set of packages that are brought into scope during compilation, including a `ModuleRenaming` which may used to hide or rename modules. This is what gets translated into `-package-id` arguments. This is a modernized version of `componentPackageDeps`, which is kept around for BC purposes.

- componentExeDeps :: [UnitId]
- componentInternalDeps :: [UnitId]

  The internal dependencies which induce a graph on the `ComponentLocalBuildInfo` of this package. This does NOT coincide with `componentPackageDeps` because it ALSO records 'build-tool' dependencies on executables. Maybe one day `cabal-install` will also handle these correctly too!

ExeComponentLocalBuildInfo |

Fields

- componentLocalName :: ComponentName

  It would be very convenient to store the literal Library here, but if we do that, it will get serialized (via the Binary) instance twice. So instead we just provide the ComponentName, which can be used to find the Component in the PackageDescription. NB: eventually, this will NOT uniquely identify the ComponentLocalBuildInfo.

- componentComponentId :: ComponentId

  The computed `ComponentId` of this component.

- componentUnitId :: UnitId

  The computed `UnitId` which uniquely identifies this component. Might be hashed.

- componentPackageDeps :: [(UnitId, MungedPackageId)]

  Resolved internal and external package dependencies for this component. The `BuildInfo` specifies a set of build dependencies that must be satisfied in terms of version ranges. This field fixes those dependencies to the specific versions available on this machine for this compiler.

- componentIncludes :: [(OpenUnitId, ModuleRenaming)]

  The set of packages that are brought into scope during compilation, including a `ModuleRenaming` which may used to hide or rename modules. This is what gets translated into `-package-id` arguments. This is a modernized version of `componentPackageDeps`, which is kept around for BC purposes.

- componentExeDeps :: [UnitId]
- componentInternalDeps :: [UnitId]

  The internal dependencies which induce a graph on the `ComponentLocalBuildInfo` of this package. This does NOT coincide with `componentPackageDeps` because it ALSO records 'build-tool' dependencies on executables. Maybe one day `cabal-install` will also handle these correctly too!

TestComponentLocalBuildInfo |

Fields

- componentLocalName :: ComponentName

  It would be very convenient to store the literal Library here, but if we do that, it will get serialized (via the Binary) instance twice. So instead we just provide the ComponentName, which can be used to find the Component in the PackageDescription. NB: eventually, this will NOT uniquely identify the ComponentLocalBuildInfo.

- componentComponentId :: ComponentId

  The computed `ComponentId` of this component.

- componentUnitId :: UnitId

  The computed `UnitId` which uniquely identifies this component. Might be hashed.

- componentPackageDeps :: [(UnitId, MungedPackageId)]

  Resolved internal and external package dependencies for this component. The `BuildInfo` specifies a set of build dependencies that must be satisfied in terms of version ranges. This field fixes those dependencies to the specific versions available on this machine for this compiler.

- componentIncludes :: [(OpenUnitId, ModuleRenaming)]

  The set of packages that are brought into scope during compilation, including a `ModuleRenaming` which may used to hide or rename modules. This is what gets translated into `-package-id` arguments. This is a modernized version of `componentPackageDeps`, which is kept around for BC purposes.

- componentExeDeps :: [UnitId]
- componentInternalDeps :: [UnitId]

  The internal dependencies which induce a graph on the `ComponentLocalBuildInfo` of this package. This does NOT coincide with `componentPackageDeps` because it ALSO records 'build-tool' dependencies on executables. Maybe one day `cabal-install` will also handle these correctly too!

BenchComponentLocalBuildInfo |

Fields

- componentLocalName :: ComponentName

  It would be very convenient to store the literal Library here, but if we do that, it will get serialized (via the Binary) instance twice. So instead we just provide the ComponentName, which can be used to find the Component in the PackageDescription. NB: eventually, this will NOT uniquely identify the ComponentLocalBuildInfo.

- componentComponentId :: ComponentId

  The computed `ComponentId` of this component.

- componentUnitId :: UnitId

  The computed `UnitId` which uniquely identifies this component. Might be hashed.

- componentPackageDeps :: [(UnitId, MungedPackageId)]

  Resolved internal and external package dependencies for this component. The `BuildInfo` specifies a set of build dependencies that must be satisfied in terms of version ranges. This field fixes those dependencies to the specific versions available on this machine for this compiler.

- componentIncludes :: [(OpenUnitId, ModuleRenaming)]

  The set of packages that are brought into scope during compilation, including a `ModuleRenaming` which may used to hide or rename modules. This is what gets translated into `-package-id` arguments. This is a modernized version of `componentPackageDeps`, which is kept around for BC purposes.

- componentExeDeps :: [UnitId]
- componentInternalDeps :: [UnitId]

  The internal dependencies which induce a graph on the `ComponentLocalBuildInfo` of this package. This does NOT coincide with `componentPackageDeps` because it ALSO records 'build-tool' dependencies on executables. Maybe one day `cabal-install` will also handle these correctly too!

#### Instances

Instances details

IsNode ComponentLocalBuildInfo Source # |
Instance details Defined in Distribution.Types.ComponentLocalBuildInfo Associated Types type Key ComponentLocalBuildInfo Source # Methods nodeKey :: ComponentLocalBuildInfo -> Key ComponentLocalBuildInfo Source # nodeNeighbors :: ComponentLocalBuildInfo -> [Key ComponentLocalBuildInfo] Source #
Structured ComponentLocalBuildInfo Source # |
Instance details Defined in Distribution.Types.ComponentLocalBuildInfo Methods structure :: Proxy ComponentLocalBuildInfo -> Structure Source # structureHash' :: Tagged ComponentLocalBuildInfo MD5
Generic ComponentLocalBuildInfo Source # |
Instance details Defined in Distribution.Types.ComponentLocalBuildInfo Associated Types type Rep ComponentLocalBuildInfo :: Type -> Type Source # Methods from :: ComponentLocalBuildInfo -> Rep ComponentLocalBuildInfo x Source # to :: Rep ComponentLocalBuildInfo x -> ComponentLocalBuildInfo Source #
Read ComponentLocalBuildInfo Source # |
Instance details Defined in Distribution.Types.ComponentLocalBuildInfo Methods readsPrec :: Int -> ReadS ComponentLocalBuildInfo Source # readList :: ReadS [ComponentLocalBuildInfo] Source # readPrec :: ReadPrec ComponentLocalBuildInfo Source # readListPrec :: ReadPrec [ComponentLocalBuildInfo] Source #
Show ComponentLocalBuildInfo Source # |
Instance details Defined in Distribution.Types.ComponentLocalBuildInfo Methods showsPrec :: Int -> ComponentLocalBuildInfo -> ShowS Source # show :: ComponentLocalBuildInfo -> String Source # showList :: [ComponentLocalBuildInfo] -> ShowS Source #
Binary ComponentLocalBuildInfo Source # |
Instance details Defined in Distribution.Types.ComponentLocalBuildInfo Methods put :: ComponentLocalBuildInfo -> Put # get :: Get ComponentLocalBuildInfo # putList :: [ComponentLocalBuildInfo] -> Put #
type Key ComponentLocalBuildInfo Source # |
Instance details Defined in Distribution.Types.ComponentLocalBuildInfo type Key ComponentLocalBuildInfo = UnitId
type Rep ComponentLocalBuildInfo Source # |

Instance details

Defined in Distribution.Types.ComponentLocalBuildInfo

type Rep ComponentLocalBuildInfo = D1 ('MetaData "ComponentLocalBuildInfo" "Distribution.Types.ComponentLocalBuildInfo" "Cabal-3.10.1.0" 'False) ((C1 ('MetaCons "LibComponentLocalBuildInfo" 'PrefixI 'True) (((S1 ('MetaSel ('Just "componentLocalName") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 ComponentName) :*: (S1 ('MetaSel ('Just "componentComponentId") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 ComponentId) :*: S1 ('MetaSel ('Just "componentUnitId") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 UnitId))) :*: (S1 ('MetaSel ('Just "componentIsIndefinite_") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Bool) :*: (S1 ('MetaSel ('Just "componentInstantiatedWith") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [(ModuleName, OpenModule)]) :*: S1 ('MetaSel ('Just "componentPackageDeps") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [(UnitId, MungedPackageId)])))) :*: ((S1 ('MetaSel ('Just "componentIncludes") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [(OpenUnitId, ModuleRenaming)]) :*: (S1 ('MetaSel ('Just "componentExeDeps") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [UnitId]) :*: S1 ('MetaSel ('Just "componentInternalDeps") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [UnitId]))) :*: ((S1 ('MetaSel ('Just "componentCompatPackageKey") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 String) :*: S1 ('MetaSel ('Just "componentCompatPackageName") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 MungedPackageName)) :*: (S1 ('MetaSel ('Just "componentExposedModules") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [ExposedModule]) :*: S1 ('MetaSel ('Just "componentIsPublic") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Bool))))) :+: C1 ('MetaCons "FLibComponentLocalBuildInfo" 'PrefixI 'True) ((S1 ('MetaSel ('Just "componentLocalName") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 ComponentName) :*: (S1 ('MetaSel ('Just "componentComponentId") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 ComponentId) :*: S1 ('MetaSel ('Just "componentUnitId") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 UnitId))) :*: ((S1 ('MetaSel ('Just "componentPackageDeps") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [(UnitId, MungedPackageId)]) :*: S1 ('MetaSel ('Just "componentIncludes") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [(OpenUnitId, ModuleRenaming)])) :*: (S1 ('MetaSel ('Just "componentExeDeps") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [UnitId]) :*: S1 ('MetaSel ('Just "componentInternalDeps") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [UnitId]))))) :+: (C1 ('MetaCons "ExeComponentLocalBuildInfo" 'PrefixI 'True) ((S1 ('MetaSel ('Just "componentLocalName") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 ComponentName) :*: (S1 ('MetaSel ('Just "componentComponentId") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 ComponentId) :*: S1 ('MetaSel ('Just "componentUnitId") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 UnitId))) :*: ((S1 ('MetaSel ('Just "componentPackageDeps") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [(UnitId, MungedPackageId)]) :*: S1 ('MetaSel ('Just "componentIncludes") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [(OpenUnitId, ModuleRenaming)])) :*: (S1 ('MetaSel ('Just "componentExeDeps") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [UnitId]) :*: S1 ('MetaSel ('Just "componentInternalDeps") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [UnitId])))) :+: (C1 ('MetaCons "TestComponentLocalBuildInfo" 'PrefixI 'True) ((S1 ('MetaSel ('Just "componentLocalName") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 ComponentName) :*: (S1 ('MetaSel ('Just "componentComponentId") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 ComponentId) :*: S1 ('MetaSel ('Just "componentUnitId") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 UnitId))) :*: ((S1 ('MetaSel ('Just "componentPackageDeps") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [(UnitId, MungedPackageId)]) :*: S1 ('MetaSel ('Just "componentIncludes") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [(OpenUnitId, ModuleRenaming)])) :*: (S1 ('MetaSel ('Just "componentExeDeps") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [UnitId]) :*: S1 ('MetaSel ('Just "componentInternalDeps") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [UnitId])))) :+: C1 ('MetaCons "BenchComponentLocalBuildInfo" 'PrefixI 'True) ((S1 ('MetaSel ('Just "componentLocalName") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 ComponentName) :*: (S1 ('MetaSel ('Just "componentComponentId") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 ComponentId) :*: S1 ('MetaSel ('Just "componentUnitId") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 UnitId))) :*: ((S1 ('MetaSel ('Just "componentPackageDeps") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [(UnitId, MungedPackageId)]) :*: S1 ('MetaSel ('Just "componentIncludes") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [(OpenUnitId, ModuleRenaming)])) :*: (S1 ('MetaSel ('Just "componentExeDeps") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [UnitId]) :*: S1 ('MetaSel ('Just "componentInternalDeps") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [UnitId])))))))

componentIsIndefinite :: ComponentLocalBuildInfo -> Bool Source #

maybeComponentInstantiatedWith :: ComponentLocalBuildInfo -> Maybe [(ModuleName, OpenModule)] Source #