Safe Haskell | None |
---|---|
Language | Haskell2010 |
Distribution.Types.LocalBuildInfo
Contents
Synopsis
- data LocalBuildInfo = LocalBuildInfo {
- configFlags :: ConfigFlags
- flagAssignment :: FlagAssignment
- componentEnabledSpec :: ComponentRequestedSpec
- extraConfigArgs :: [String]
- installDirTemplates :: InstallDirTemplates
- compiler :: Compiler
- hostPlatform :: Platform
- buildDir :: FilePath
- cabalFilePath :: Maybe FilePath
- componentGraph :: Graph ComponentLocalBuildInfo
- componentNameMap :: Map ComponentName [ComponentLocalBuildInfo]
- installedPkgs :: InstalledPackageIndex
- pkgDescrFile :: Maybe FilePath
- localPkgDescr :: PackageDescription
- withPrograms :: ProgramDb
- withPackageDB :: PackageDBStack
- withVanillaLib :: Bool
- withProfLib :: Bool
- withSharedLib :: Bool
- withStaticLib :: Bool
- withDynExe :: Bool
- withProfExe :: Bool
- withProfLibDetail :: ProfDetailLevel
- withProfExeDetail :: ProfDetailLevel
- withOptimization :: OptimisationLevel
- withDebugInfo :: DebugInfoLevel
- withGHCiLib :: Bool
- splitSections :: Bool
- splitObjs :: Bool
- stripExes :: Bool
- stripLibs :: Bool
- exeCoverage :: Bool
- libCoverage :: Bool
- progPrefix :: PathTemplate
- progSuffix :: PathTemplate
- relocatable :: Bool
- localComponentId :: LocalBuildInfo -> ComponentId
- localUnitId :: LocalBuildInfo -> UnitId
- localCompatPackageKey :: LocalBuildInfo -> String
- localPackage :: LocalBuildInfo -> PackageId
- componentNameCLBIs :: LocalBuildInfo -> ComponentName -> [ComponentLocalBuildInfo]
- componentNameTargets' :: PackageDescription -> LocalBuildInfo -> ComponentName -> [TargetInfo]
- unitIdTarget' :: PackageDescription -> LocalBuildInfo -> UnitId -> Maybe TargetInfo
- allTargetsInBuildOrder' :: PackageDescription -> LocalBuildInfo -> [TargetInfo]
- withAllTargetsInBuildOrder' :: PackageDescription -> LocalBuildInfo -> (TargetInfo -> IO ()) -> IO ()
- neededTargetsInBuildOrder' :: PackageDescription -> LocalBuildInfo -> [UnitId] -> [TargetInfo]
- withNeededTargetsInBuildOrder' :: PackageDescription -> LocalBuildInfo -> [UnitId] -> (TargetInfo -> IO ()) -> IO ()
- testCoverage :: LocalBuildInfo -> Bool
- componentNameTargets :: LocalBuildInfo -> ComponentName -> [TargetInfo]
- unitIdTarget :: LocalBuildInfo -> UnitId -> Maybe TargetInfo
- allTargetsInBuildOrder :: LocalBuildInfo -> [TargetInfo]
- withAllTargetsInBuildOrder :: LocalBuildInfo -> (TargetInfo -> IO ()) -> IO ()
- neededTargetsInBuildOrder :: LocalBuildInfo -> [UnitId] -> [TargetInfo]
- withNeededTargetsInBuildOrder :: LocalBuildInfo -> [UnitId] -> (TargetInfo -> IO ()) -> IO ()
- componentsConfigs :: LocalBuildInfo -> [(ComponentName, ComponentLocalBuildInfo, [ComponentName])]
- externalPackageDeps :: LocalBuildInfo -> [(UnitId, MungedPackageId)]
The type
data LocalBuildInfo #
Data cached after configuration step. See also
ConfigFlags
.
Constructors
LocalBuildInfo | |
Fields
|
Instances
Convenience accessors
localComponentId :: LocalBuildInfo -> ComponentId #
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 #
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 #
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.
localPackage :: LocalBuildInfo -> PackageId #
Extract the PackageIdentifier
of a LocalBuildInfo
.
This is a "safe" use of localPkgDescr
Build targets of the LocalBuildInfo
.
componentNameCLBIs :: LocalBuildInfo -> ComponentName -> [ComponentLocalBuildInfo] #
Return all ComponentLocalBuildInfo
s associated with ComponentName
.
In the presence of Backpack there may be more than one!
componentNameTargets' :: PackageDescription -> LocalBuildInfo -> ComponentName -> [TargetInfo] #
Return all TargetInfo
s 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
.
unitIdTarget' :: PackageDescription -> LocalBuildInfo -> UnitId -> Maybe TargetInfo #
allTargetsInBuildOrder' :: PackageDescription -> LocalBuildInfo -> [TargetInfo] #
Return the list of default TargetInfo
s 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 () #
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] #
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 () #
Execute f
for every TargetInfo
needed to build uid
s, respecting
the build dependency order.
Has a prime because it takes a PackageDescription
argument
which may disagree with localPkgDescr
in LocalBuildInfo
.
testCoverage :: LocalBuildInfo -> Bool #
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] #
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 #
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] #
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 () #
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] #
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 () #
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.
Backwards compatibility.
componentsConfigs :: LocalBuildInfo -> [(ComponentName, ComponentLocalBuildInfo, [ComponentName])] #
Deprecated: Use componentGraph
instead; you can get a list of ComponentLocalBuildInfo
with toList
. There's not a good way to get the list of ComponentName
s the ComponentLocalBuildInfo
depends on because this query doesn't make sense; the graph is indexed by UnitId
not ComponentName
. Given a UnitId
you can lookup the ComponentLocalBuildInfo
(getCLBI
) and then get the ComponentName
('componentLocalName]). To be removed in Cabal 3.0
externalPackageDeps :: LocalBuildInfo -> [(UnitId, MungedPackageId)] #
Deprecated: You almost certainly don't want this function, which agglomerates the dependencies of ALL enabled components. If you're using this to write out information on your dependencies, read off the dependencies directly from the actual component in question. To be removed in Cabal 3.0
External package dependencies for the package as a whole. This is the
union of the individual componentPackageDeps
, less any internal deps.