Cabal-3.9.0.0: A framework for packaging Haskell software
Safe HaskellSafe-Inferred
LanguageHaskell2010

Distribution.Types.LocalBuildInfo

Synopsis

The type

data LocalBuildInfo Source #

Data cached after configuration step. See also ConfigFlags.

Constructors

LocalBuildInfo 

Fields

Instances

Instances details
Structured LocalBuildInfo Source # 
Instance details

Defined in Distribution.Types.LocalBuildInfo

Generic LocalBuildInfo Source # 
Instance details

Defined in Distribution.Types.LocalBuildInfo

Associated Types

type Rep LocalBuildInfo :: Type -> Type Source #

Read LocalBuildInfo Source # 
Instance details

Defined in Distribution.Types.LocalBuildInfo

Show LocalBuildInfo Source # 
Instance details

Defined in Distribution.Types.LocalBuildInfo

Binary LocalBuildInfo Source # 
Instance details

Defined in Distribution.Types.LocalBuildInfo

Methods

put :: LocalBuildInfo -> Put #

get :: Get LocalBuildInfo #

putList :: [LocalBuildInfo] -> Put #

type Rep LocalBuildInfo Source # 
Instance details

Defined in Distribution.Types.LocalBuildInfo

type Rep LocalBuildInfo = D1 ('MetaData "LocalBuildInfo" "Distribution.Types.LocalBuildInfo" "Cabal-3.9.0.0" 'False) (C1 ('MetaCons "LocalBuildInfo" 'PrefixI 'True) (((((S1 ('MetaSel ('Just "configFlags") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 ConfigFlags) :*: S1 ('MetaSel ('Just "flagAssignment") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 FlagAssignment)) :*: (S1 ('MetaSel ('Just "componentEnabledSpec") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 ComponentRequestedSpec) :*: S1 ('MetaSel ('Just "extraConfigArgs") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [String]))) :*: ((S1 ('MetaSel ('Just "installDirTemplates") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 InstallDirTemplates) :*: S1 ('MetaSel ('Just "compiler") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Compiler)) :*: (S1 ('MetaSel ('Just "hostPlatform") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Platform) :*: (S1 ('MetaSel ('Just "buildDir") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 FilePath) :*: S1 ('MetaSel ('Just "cabalFilePath") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe FilePath)))))) :*: (((S1 ('MetaSel ('Just "componentGraph") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Graph ComponentLocalBuildInfo)) :*: S1 ('MetaSel ('Just "componentNameMap") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Map ComponentName [ComponentLocalBuildInfo]))) :*: (S1 ('MetaSel ('Just "installedPkgs") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 InstalledPackageIndex) :*: S1 ('MetaSel ('Just "pkgDescrFile") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe FilePath)))) :*: ((S1 ('MetaSel ('Just "localPkgDescr") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 PackageDescription) :*: S1 ('MetaSel ('Just "withPrograms") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 ProgramDb)) :*: (S1 ('MetaSel ('Just "withPackageDB") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 PackageDBStack) :*: (S1 ('MetaSel ('Just "withVanillaLib") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Bool) :*: S1 ('MetaSel ('Just "withProfLib") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Bool)))))) :*: ((((S1 ('MetaSel ('Just "withSharedLib") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Bool) :*: S1 ('MetaSel ('Just "withStaticLib") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Bool)) :*: (S1 ('MetaSel ('Just "withDynExe") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Bool) :*: S1 ('MetaSel ('Just "withFullyStaticExe") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Bool))) :*: ((S1 ('MetaSel ('Just "withProfExe") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Bool) :*: S1 ('MetaSel ('Just "withProfLibDetail") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 ProfDetailLevel)) :*: (S1 ('MetaSel ('Just "withProfExeDetail") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 ProfDetailLevel) :*: (S1 ('MetaSel ('Just "withOptimization") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 OptimisationLevel) :*: S1 ('MetaSel ('Just "withDebugInfo") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 DebugInfoLevel))))) :*: (((S1 ('MetaSel ('Just "withGHCiLib") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Bool) :*: S1 ('MetaSel ('Just "splitSections") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Bool)) :*: (S1 ('MetaSel ('Just "splitObjs") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Bool) :*: (S1 ('MetaSel ('Just "stripExes") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Bool) :*: S1 ('MetaSel ('Just "stripLibs") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Bool)))) :*: ((S1 ('MetaSel ('Just "exeCoverage") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Bool) :*: S1 ('MetaSel ('Just "libCoverage") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Bool)) :*: (S1 ('MetaSel ('Just "progPrefix") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 PathTemplate) :*: (S1 ('MetaSel ('Just "progSuffix") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 PathTemplate) :*: S1 ('MetaSel ('Just "relocatable") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Bool))))))))

Convenience accessors

localComponentId :: LocalBuildInfo -> ComponentId Source #

Extract the ComponentId from the public library component of a LocalBuildInfo if it exists, or make a fake component ID based on the package ID.

localUnitId :: LocalBuildInfo -> UnitId Source #

Extract the UnitId from the library component of a LocalBuildInfo if it exists, or make a fake unit ID based on the package ID.

localCompatPackageKey :: LocalBuildInfo -> String Source #

Extract the compatibility package key from the public library component of a LocalBuildInfo if it exists, or make a fake package key based on the package ID.

Build targets of the LocalBuildInfo.

componentNameCLBIs :: LocalBuildInfo -> ComponentName -> [ComponentLocalBuildInfo] Source #

Return all ComponentLocalBuildInfos associated with ComponentName. In the presence of Backpack there may be more than one!

componentNameTargets' :: PackageDescription -> LocalBuildInfo -> ComponentName -> [TargetInfo] Source #

Return all TargetInfos associated with ComponentName. In the presence of Backpack there may be more than one! Has a prime because it takes a PackageDescription argument which may disagree with localPkgDescr in LocalBuildInfo.

allTargetsInBuildOrder' :: PackageDescription -> LocalBuildInfo -> [TargetInfo] Source #

Return the list of default TargetInfos associated with a configured package, in the order they need to be built. Has a prime because it takes a PackageDescription argument which may disagree with localPkgDescr in LocalBuildInfo.

withAllTargetsInBuildOrder' :: PackageDescription -> LocalBuildInfo -> (TargetInfo -> IO ()) -> IO () Source #

Execute f for every TargetInfo in the package, respecting the build dependency order. (TODO: We should use Shake!) Has a prime because it takes a PackageDescription argument which may disagree with localPkgDescr in LocalBuildInfo.

neededTargetsInBuildOrder' :: PackageDescription -> LocalBuildInfo -> [UnitId] -> [TargetInfo] Source #

Return the list of all targets needed to build the uids, in the order they need to be built. Has a prime because it takes a PackageDescription argument which may disagree with localPkgDescr in LocalBuildInfo.

withNeededTargetsInBuildOrder' :: PackageDescription -> LocalBuildInfo -> [UnitId] -> (TargetInfo -> IO ()) -> IO () Source #

Execute f for every TargetInfo needed to build uids, respecting the build dependency order. Has a prime because it takes a PackageDescription argument which may disagree with localPkgDescr in LocalBuildInfo.

testCoverage :: LocalBuildInfo -> Bool Source #

Is coverage enabled for test suites? In practice, this requires library and executable profiling to be enabled.

Functions you SHOULD NOT USE (yet), but are defined here to

componentNameTargets :: LocalBuildInfo -> ComponentName -> [TargetInfo] Source #

Warning: By using this function, you may be introducing a bug where you retrieve a Component which does not have HookedBuildInfo applied to it. See the documentation for HookedBuildInfo for an explanation of the issue. If you have a PakcageDescription handy (NOT from the LocalBuildInfo), try using the primed version of the function, which takes it as an extra argument.

unitIdTarget :: LocalBuildInfo -> UnitId -> Maybe TargetInfo Source #

Warning: By using this function, you may be introducing a bug where you retrieve a Component which does not have HookedBuildInfo applied to it. See the documentation for HookedBuildInfo for an explanation of the issue. If you have a PakcageDescription handy (NOT from the LocalBuildInfo), try using the primed version of the function, which takes it as an extra argument.

allTargetsInBuildOrder :: LocalBuildInfo -> [TargetInfo] Source #

Warning: By using this function, you may be introducing a bug where you retrieve a Component which does not have HookedBuildInfo applied to it. See the documentation for HookedBuildInfo for an explanation of the issue. If you have a PakcageDescription handy (NOT from the LocalBuildInfo), try using the primed version of the function, which takes it as an extra argument.

withAllTargetsInBuildOrder :: LocalBuildInfo -> (TargetInfo -> IO ()) -> IO () Source #

Warning: By using this function, you may be introducing a bug where you retrieve a Component which does not have HookedBuildInfo applied to it. See the documentation for HookedBuildInfo for an explanation of the issue. If you have a PakcageDescription handy (NOT from the LocalBuildInfo), try using the primed version of the function, which takes it as an extra argument.

neededTargetsInBuildOrder :: LocalBuildInfo -> [UnitId] -> [TargetInfo] Source #

Warning: By using this function, you may be introducing a bug where you retrieve a Component which does not have HookedBuildInfo applied to it. See the documentation for HookedBuildInfo for an explanation of the issue. If you have a PakcageDescription handy (NOT from the LocalBuildInfo), try using the primed version of the function, which takes it as an extra argument.

withNeededTargetsInBuildOrder :: LocalBuildInfo -> [UnitId] -> (TargetInfo -> IO ()) -> IO () Source #

Warning: By using this function, you may be introducing a bug where you retrieve a Component which does not have HookedBuildInfo applied to it. See the documentation for HookedBuildInfo for an explanation of the issue. If you have a PakcageDescription handy (NOT from the LocalBuildInfo), try using the primed version of the function, which takes it as an extra argument.