Cabal-1.24.2.0: A framework for packaging Haskell software

Copyright | Isaac Jones 2003-2004
License | BSD3
Maintainer | cabal-devel@haskell.org
Portability | portable
Safe Haskell | None
Language | Haskell98

Distribution.Simple.LocalBuildInfo

Contents

- Buildable package components
- Installation directories

Description

Once a package has been configured we have resolved conditionals and dependencies, configured the compiler and other needed external programs. The `LocalBuildInfo` is used to hold all this information. It holds the install dirs, the compiler, the exact package dependencies, the configured programs, the package database to use and a bunch of miscellaneous configure flags. It gets saved and reloaded from a file (`dist/setup-config`). It gets passed in to very many subsequent build actions.

Synopsis

- data LocalBuildInfo = LocalBuildInfo {
  - configFlags :: ConfigFlags
  - flagAssignment :: FlagAssignment
  - extraConfigArgs :: [String]
  - installDirTemplates :: InstallDirTemplates
  - compiler :: Compiler
  - hostPlatform :: Platform
  - buildDir :: FilePath
  - componentsConfigs :: [(ComponentName, ComponentLocalBuildInfo, [ComponentName])]
  - installedPkgs :: InstalledPackageIndex
  - pkgDescrFile :: Maybe FilePath
  - localPkgDescr :: PackageDescription
  - withPrograms :: ProgramConfiguration
  - withPackageDB :: PackageDBStack
  - withVanillaLib :: Bool
  - withProfLib :: Bool
  - withSharedLib :: Bool
  - withDynExe :: Bool
  - withProfExe :: Bool
  - withProfLibDetail :: ProfDetailLevel
  - withProfExeDetail :: ProfDetailLevel
  - withOptimization :: OptimisationLevel
  - withDebugInfo :: DebugInfoLevel
  - withGHCiLib :: Bool
  - splitObjs :: Bool
  - stripExes :: Bool
  - stripLibs :: Bool
  - progPrefix :: PathTemplate
  - progSuffix :: PathTemplate
  - relocatable :: Bool
  }
- externalPackageDeps :: LocalBuildInfo -> [(UnitId, PackageId)]
- localComponentId :: LocalBuildInfo -> ComponentId
- localUnitId :: LocalBuildInfo -> UnitId
- localCompatPackageKey :: LocalBuildInfo -> String
- data Component
  - = CLib Library
  - | CExe Executable
  - | CTest TestSuite
  - | CBench Benchmark
- data ComponentName
  - = CLibName
  - | CExeName String
  - | CTestName String
  - | CBenchName String
- showComponentName :: ComponentName -> String
- data ComponentLocalBuildInfo
  - = LibComponentLocalBuildInfo {
    - componentPackageDeps :: [(UnitId, PackageId)]
    - componentUnitId :: UnitId
    - componentCompatPackageKey :: String
    - componentExposedModules :: [ExposedModule]
    - componentPackageRenaming :: Map PackageName ModuleRenaming
    }
  - | ExeComponentLocalBuildInfo {
    - componentPackageDeps :: [(UnitId, PackageId)]
    - componentPackageRenaming :: Map PackageName ModuleRenaming
    }
  - | TestComponentLocalBuildInfo {
    - componentPackageDeps :: [(UnitId, PackageId)]
    - componentPackageRenaming :: Map PackageName ModuleRenaming
    }
  - | BenchComponentLocalBuildInfo {
    - componentPackageDeps :: [(UnitId, PackageId)]
    - componentPackageRenaming :: Map PackageName ModuleRenaming
    }
- foldComponent :: (Library -> a) -> (Executable -> a) -> (TestSuite -> a) -> (Benchmark -> a) -> Component -> a
- componentName :: Component -> ComponentName
- componentBuildInfo :: Component -> BuildInfo
- componentEnabled :: Component -> Bool
- componentDisabledReason :: Component -> Maybe ComponentDisabledReason
- data ComponentDisabledReason
  - = DisabledComponent
  - | DisabledAllTests
  - | DisabledAllBenchmarks
- pkgComponents :: PackageDescription -> [Component]
- pkgEnabledComponents :: PackageDescription -> [Component]
- lookupComponent :: PackageDescription -> ComponentName -> Maybe Component
- getComponent :: PackageDescription -> ComponentName -> Component
- getComponentLocalBuildInfo :: LocalBuildInfo -> ComponentName -> ComponentLocalBuildInfo
- allComponentsInBuildOrder :: LocalBuildInfo -> [(ComponentName, ComponentLocalBuildInfo)]
- componentsInBuildOrder :: LocalBuildInfo -> [ComponentName] -> [(ComponentName, ComponentLocalBuildInfo)]
- checkComponentsCyclic :: Ord key => [(node, key, [key])] -> Maybe [(node, key, [key])]
- depLibraryPaths :: Bool -> Bool -> LocalBuildInfo -> ComponentLocalBuildInfo -> IO [FilePath]
- withAllComponentsInBuildOrder :: PackageDescription -> LocalBuildInfo -> (Component -> ComponentLocalBuildInfo -> IO ()) -> IO ()
- withComponentsInBuildOrder :: PackageDescription -> LocalBuildInfo -> [ComponentName] -> (Component -> ComponentLocalBuildInfo -> IO ()) -> IO ()
- withComponentsLBI :: PackageDescription -> LocalBuildInfo -> (Component -> ComponentLocalBuildInfo -> IO ()) -> IO ()
- withLibLBI :: PackageDescription -> LocalBuildInfo -> (Library -> ComponentLocalBuildInfo -> IO ()) -> IO ()
- withExeLBI :: PackageDescription -> LocalBuildInfo -> (Executable -> ComponentLocalBuildInfo -> IO ()) -> IO ()
- withTestLBI :: PackageDescription -> LocalBuildInfo -> (TestSuite -> ComponentLocalBuildInfo -> IO ()) -> IO ()
- module Distribution.Simple.InstallDirs
- absoluteInstallDirs :: PackageDescription -> LocalBuildInfo -> CopyDest -> InstallDirs FilePath
- prefixRelativeInstallDirs :: PackageId -> LocalBuildInfo -> InstallDirs (Maybe FilePath)
- substPathTemplate :: PackageId -> LocalBuildInfo -> PathTemplate -> FilePath

# Documentation

data LocalBuildInfo Source #

Data cached after configuration step. See also `ConfigFlags`.

Constructors

LocalBuildInfo |
Fields configFlags :: ConfigFlags Options passed to the configuration step. Needed to re-run configuration when .cabal is out of date flagAssignment :: FlagAssignment The final set of flags which were picked for this package extraConfigArgs :: [String] Extra args on the command line for the configuration step. Needed to re-run configuration when .cabal is out of date installDirTemplates :: InstallDirTemplates The installation directories for the various different kinds of files TODO: inplaceDirTemplates :: InstallDirs FilePath compiler :: Compiler The compiler we're building with hostPlatform :: Platform The platform we're building for buildDir :: FilePath Where to build the package. componentsConfigs :: [(ComponentName, ComponentLocalBuildInfo, [ComponentName])] All the components to build, ordered by topological sort, and with their dependencies over the intrapackage dependency graph installedPkgs :: InstalledPackageIndex All the info about the installed packages that the current package depends on (directly or indirectly). pkgDescrFile :: Maybe FilePath the filename containing the .cabal file, if available localPkgDescr :: PackageDescription The resolved package description, that does not contain any conditionals. withPrograms :: ProgramConfiguration Location and args for all programs withPackageDB :: PackageDBStack What package database to use, global/user withVanillaLib :: Bool Whether to build normal libs. withProfLib :: Bool Whether to build profiling versions of libs. withSharedLib :: Bool Whether to build shared versions of libs. withDynExe :: Bool Whether to link executables dynamically withProfExe :: Bool Whether to build executables for profiling. withProfLibDetail :: ProfDetailLevel Level of automatic profile detail. withProfExeDetail :: ProfDetailLevel Level of automatic profile detail. withOptimization :: OptimisationLevel Whether to build with optimization (if available). withDebugInfo :: DebugInfoLevel Whether to emit debug info (if available). withGHCiLib :: Bool Whether to build libs suitable for use with GHCi. splitObjs :: Bool Use -split-objs with GHC, if available stripExes :: Bool Whether to strip executables during install stripLibs :: Bool Whether to strip libraries during install progPrefix :: PathTemplate Prefix to be prepended to installed executables progSuffix :: PathTemplate Suffix to be appended to installed executables relocatable :: Bool

Instances

Read LocalBuildInfo # |
Methods readsPrec :: Int -> ReadS LocalBuildInfo Source # readList :: ReadS [LocalBuildInfo] Source # readPrec :: ReadPrec LocalBuildInfo Source # readListPrec :: ReadPrec [LocalBuildInfo] Source #
Show LocalBuildInfo # |
Methods showsPrec :: Int -> LocalBuildInfo -> ShowS Source # show :: LocalBuildInfo -> String Source # showList :: [LocalBuildInfo] -> ShowS Source #
Generic LocalBuildInfo # |
Associated Types type Rep LocalBuildInfo :: * -> * Source # Methods from :: LocalBuildInfo -> Rep LocalBuildInfo x Source # to :: Rep LocalBuildInfo x -> LocalBuildInfo Source #
Binary LocalBuildInfo # |
Methods put :: LocalBuildInfo -> Put Source # get :: Get LocalBuildInfo Source # putList :: [LocalBuildInfo] -> Put Source #
type Rep LocalBuildInfo # |
type Rep LocalBuildInfo = D1 (MetaData "LocalBuildInfo" "Distribution.Simple.LocalBuildInfo" "Cabal-1.24.2.0" False) (C1 (MetaCons "LocalBuildInfo" PrefixI True) ((:*:) ((:*:) ((:*:) ((:*:) (S1 (MetaSel (Just Symbol "configFlags") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 ConfigFlags)) ((:*:) (S1 (MetaSel (Just Symbol "flagAssignment") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 FlagAssignment)) (S1 (MetaSel (Just Symbol "extraConfigArgs") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 [String])))) ((:*:) ((:*:) (S1 (MetaSel (Just Symbol "installDirTemplates") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 InstallDirTemplates)) (S1 (MetaSel (Just Symbol "compiler") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 Compiler))) ((:*:) (S1 (MetaSel (Just Symbol "hostPlatform") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 Platform)) (S1 (MetaSel (Just Symbol "buildDir") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 FilePath))))) ((:*:) ((:*:) (S1 (MetaSel (Just Symbol "componentsConfigs") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 [(ComponentName, ComponentLocalBuildInfo, [ComponentName])])) ((:*:) (S1 (MetaSel (Just Symbol "installedPkgs") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 InstalledPackageIndex)) (S1 (MetaSel (Just Symbol "pkgDescrFile") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 (Maybe FilePath))))) ((:*:) ((:*:) (S1 (MetaSel (Just Symbol "localPkgDescr") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 PackageDescription)) (S1 (MetaSel (Just Symbol "withPrograms") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 ProgramConfiguration))) ((:*:) (S1 (MetaSel (Just Symbol "withPackageDB") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 PackageDBStack)) (S1 (MetaSel (Just Symbol "withVanillaLib") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 Bool)))))) ((:*:) ((:*:) ((:*:) (S1 (MetaSel (Just Symbol "withProfLib") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 Bool)) ((:*:) (S1 (MetaSel (Just Symbol "withSharedLib") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 Bool)) (S1 (MetaSel (Just Symbol "withDynExe") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 Bool)))) ((:*:) ((:*:) (S1 (MetaSel (Just Symbol "withProfExe") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 Bool)) (S1 (MetaSel (Just Symbol "withProfLibDetail") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 ProfDetailLevel))) ((:*:) (S1 (MetaSel (Just Symbol "withProfExeDetail") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 ProfDetailLevel)) (S1 (MetaSel (Just Symbol "withOptimization") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 OptimisationLevel))))) ((:*:) ((:*:) ((:*:) (S1 (MetaSel (Just Symbol "withDebugInfo") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 DebugInfoLevel)) (S1 (MetaSel (Just Symbol "withGHCiLib") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 Bool))) ((:*:) (S1 (MetaSel (Just Symbol "splitObjs") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 Bool)) (S1 (MetaSel (Just Symbol "stripExes") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 Bool)))) ((:*:) ((:*:) (S1 (MetaSel (Just Symbol "stripLibs") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 Bool)) (S1 (MetaSel (Just Symbol "progPrefix") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 PathTemplate))) ((:*:) (S1 (MetaSel (Just Symbol "progSuffix") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 PathTemplate)) (S1 (MetaSel (Just Symbol "relocatable") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 Bool))))))))

externalPackageDeps :: LocalBuildInfo -> [(UnitId, PackageId)] Source #

External package dependencies for the package as a whole. This is the union of the individual `componentPackageDeps`, less any internal deps.

localComponentId :: LocalBuildInfo -> ComponentId Source #

Extract the `ComponentId` from the 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 `ComponentId` from the library component of a `LocalBuildInfo` if it exists, or make a fake compatibility package key based on the package ID.

# Buildable package components

data Component Source #

Constructors

CLib Library |
CExe Executable |
CTest TestSuite |
CBench Benchmark |

Instances

Eq Component # |
Methods (==) :: Component -> Component -> Bool # (/=) :: Component -> Component -> Bool #
Read Component # |
Methods readsPrec :: Int -> ReadS Component Source # readList :: ReadS [Component] Source # readPrec :: ReadPrec Component Source # readListPrec :: ReadPrec [Component] Source #
Show Component # |
Methods showsPrec :: Int -> Component -> ShowS Source # show :: Component -> String Source # showList :: [Component] -> ShowS Source #

data ComponentName Source #

Constructors

CLibName |
CExeName String |
CTestName String |
CBenchName String |

Instances

Eq ComponentName # |
Methods (==) :: ComponentName -> ComponentName -> Bool # (/=) :: ComponentName -> ComponentName -> Bool #
Ord ComponentName # |
Methods compare :: ComponentName -> ComponentName -> Ordering # (<) :: ComponentName -> ComponentName -> Bool # (<=) :: ComponentName -> ComponentName -> Bool # (>) :: ComponentName -> ComponentName -> Bool # (>=) :: ComponentName -> ComponentName -> Bool # max :: ComponentName -> ComponentName -> ComponentName # min :: ComponentName -> ComponentName -> ComponentName #
Read ComponentName # |
Methods readsPrec :: Int -> ReadS ComponentName Source # readList :: ReadS [ComponentName] Source # readPrec :: ReadPrec ComponentName Source # readListPrec :: ReadPrec [ComponentName] Source #
Show ComponentName # |
Methods showsPrec :: Int -> ComponentName -> ShowS Source # show :: ComponentName -> String Source # showList :: [ComponentName] -> ShowS Source #
Generic ComponentName # |
Associated Types type Rep ComponentName :: * -> * Source # Methods from :: ComponentName -> Rep ComponentName x Source # to :: Rep ComponentName x -> ComponentName Source #
Binary ComponentName # |
Methods put :: ComponentName -> Put Source # get :: Get ComponentName Source # putList :: [ComponentName] -> Put Source #
type Rep ComponentName # |
type Rep ComponentName = D1 (MetaData "ComponentName" "Distribution.Simple.LocalBuildInfo" "Cabal-1.24.2.0" False) ((:+:) ((:+:) (C1 (MetaCons "CLibName" PrefixI False) U1) (C1 (MetaCons "CExeName" PrefixI False) (S1 (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 String)))) ((:+:) (C1 (MetaCons "CTestName" PrefixI False) (S1 (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 String))) (C1 (MetaCons "CBenchName" PrefixI False) (S1 (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 String)))))

showComponentName :: ComponentName -> String Source #

data ComponentLocalBuildInfo Source #

Constructors

LibComponentLocalBuildInfo |
Fields componentPackageDeps :: [(UnitId, PackageId)] 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. componentUnitId :: UnitId componentCompatPackageKey :: String componentExposedModules :: [ExposedModule] componentPackageRenaming :: Map PackageName ModuleRenaming
ExeComponentLocalBuildInfo |
Fields componentPackageDeps :: [(UnitId, PackageId)] 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. componentPackageRenaming :: Map PackageName ModuleRenaming
TestComponentLocalBuildInfo |
Fields componentPackageDeps :: [(UnitId, PackageId)] 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. componentPackageRenaming :: Map PackageName ModuleRenaming
BenchComponentLocalBuildInfo |
Fields componentPackageDeps :: [(UnitId, PackageId)] 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. componentPackageRenaming :: Map PackageName ModuleRenaming

Instances

Read ComponentLocalBuildInfo # |
Methods readsPrec :: Int -> ReadS ComponentLocalBuildInfo Source # readList :: ReadS [ComponentLocalBuildInfo] Source # readPrec :: ReadPrec ComponentLocalBuildInfo Source # readListPrec :: ReadPrec [ComponentLocalBuildInfo] Source #
Show ComponentLocalBuildInfo # |
Methods showsPrec :: Int -> ComponentLocalBuildInfo -> ShowS Source # show :: ComponentLocalBuildInfo -> String Source # showList :: [ComponentLocalBuildInfo] -> ShowS Source #
Generic ComponentLocalBuildInfo # |
Associated Types type Rep ComponentLocalBuildInfo :: * -> * Source # Methods from :: ComponentLocalBuildInfo -> Rep ComponentLocalBuildInfo x Source # to :: Rep ComponentLocalBuildInfo x -> ComponentLocalBuildInfo Source #
Binary ComponentLocalBuildInfo # |
Methods put :: ComponentLocalBuildInfo -> Put Source # get :: Get ComponentLocalBuildInfo Source # putList :: [ComponentLocalBuildInfo] -> Put Source #
type Rep ComponentLocalBuildInfo # |
type Rep ComponentLocalBuildInfo = D1 (MetaData "ComponentLocalBuildInfo" "Distribution.Simple.LocalBuildInfo" "Cabal-1.24.2.0" False) ((:+:) ((:+:) (C1 (MetaCons "LibComponentLocalBuildInfo" PrefixI True) ((:*:) ((:*:) (S1 (MetaSel (Just Symbol "componentPackageDeps") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 [(UnitId, PackageId)])) (S1 (MetaSel (Just Symbol "componentUnitId") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 UnitId))) ((:*:) (S1 (MetaSel (Just Symbol "componentCompatPackageKey") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 String)) ((:*:) (S1 (MetaSel (Just Symbol "componentExposedModules") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 [ExposedModule])) (S1 (MetaSel (Just Symbol "componentPackageRenaming") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 (Map PackageName ModuleRenaming))))))) (C1 (MetaCons "ExeComponentLocalBuildInfo" PrefixI True) ((:*:) (S1 (MetaSel (Just Symbol "componentPackageDeps") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 [(UnitId, PackageId)])) (S1 (MetaSel (Just Symbol "componentPackageRenaming") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 (Map PackageName ModuleRenaming)))))) ((:+:) (C1 (MetaCons "TestComponentLocalBuildInfo" PrefixI True) ((:*:) (S1 (MetaSel (Just Symbol "componentPackageDeps") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 [(UnitId, PackageId)])) (S1 (MetaSel (Just Symbol "componentPackageRenaming") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 (Map PackageName ModuleRenaming))))) (C1 (MetaCons "BenchComponentLocalBuildInfo" PrefixI True) ((:*:) (S1 (MetaSel (Just Symbol "componentPackageDeps") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 [(UnitId, PackageId)])) (S1 (MetaSel (Just Symbol "componentPackageRenaming") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 (Map PackageName ModuleRenaming)))))))

foldComponent :: (Library -> a) -> (Executable -> a) -> (TestSuite -> a) -> (Benchmark -> a) -> Component -> a Source #

componentName :: Component -> ComponentName Source #

componentBuildInfo :: Component -> BuildInfo Source #

componentEnabled :: Component -> Bool Source #

componentDisabledReason :: Component -> Maybe ComponentDisabledReason Source #

data ComponentDisabledReason Source #

Constructors

DisabledComponent |
DisabledAllTests |
DisabledAllBenchmarks |

pkgComponents :: PackageDescription -> [Component] Source #

All the components in the package (libs, exes, or test suites).

pkgEnabledComponents :: PackageDescription -> [Component] Source #

All the components in the package that are buildable and enabled. Thus this excludes non-buildable components and test suites or benchmarks that have been disabled.

lookupComponent :: PackageDescription -> ComponentName -> Maybe Component Source #

getComponent :: PackageDescription -> ComponentName -> Component Source #

getComponentLocalBuildInfo :: LocalBuildInfo -> ComponentName -> ComponentLocalBuildInfo Source #

allComponentsInBuildOrder :: LocalBuildInfo -> [(ComponentName, ComponentLocalBuildInfo)] Source #

componentsInBuildOrder :: LocalBuildInfo -> [ComponentName] -> [(ComponentName, ComponentLocalBuildInfo)] Source #

checkComponentsCyclic :: Ord key => [(node, key, [key])] -> Maybe [(node, key, [key])] Source #

depLibraryPaths Source #

Arguments

:: Bool | Building for inplace?
-> Bool | Generate prefix-relative library paths
-> LocalBuildInfo |
-> ComponentLocalBuildInfo | Component that is being built
-> IO [FilePath] |

Determine the directories containing the dynamic libraries of the transitive dependencies of the component we are building.

When wanted, and possible, returns paths relative to the installDirs `prefix`

withAllComponentsInBuildOrder :: PackageDescription -> LocalBuildInfo -> (Component -> ComponentLocalBuildInfo -> IO ()) -> IO () Source #

Perform the action on each buildable `Library` or `Executable` (Component) in the PackageDescription, subject to the build order specified by the `compBuildOrder` field of the given `LocalBuildInfo`

withComponentsInBuildOrder :: PackageDescription -> LocalBuildInfo -> [ComponentName] -> (Component -> ComponentLocalBuildInfo -> IO ()) -> IO () Source #

withComponentsLBI :: PackageDescription -> LocalBuildInfo -> (Component -> ComponentLocalBuildInfo -> IO ()) -> IO () Source #

Deprecated: Use withAllComponentsInBuildOrder

withLibLBI :: PackageDescription -> LocalBuildInfo -> (Library -> ComponentLocalBuildInfo -> IO ()) -> IO () Source #

If the package description has a library section, call the given function with the library build info as argument. Extended version of `withLib` that also gives corresponding build info.

withExeLBI :: PackageDescription -> LocalBuildInfo -> (Executable -> ComponentLocalBuildInfo -> IO ()) -> IO () Source #

Perform the action on each buildable `Executable` in the package description. Extended version of `withExe` that also gives corresponding build info.

withTestLBI :: PackageDescription -> LocalBuildInfo -> (TestSuite -> ComponentLocalBuildInfo -> IO ()) -> IO () Source #

# Installation directories

module Distribution.Simple.InstallDirs

absoluteInstallDirs :: PackageDescription -> LocalBuildInfo -> CopyDest -> InstallDirs FilePath Source #

See `absoluteInstallDirs`

prefixRelativeInstallDirs :: PackageId -> LocalBuildInfo -> InstallDirs (Maybe FilePath) Source #

See `prefixRelativeInstallDirs`

substPathTemplate :: PackageId -> LocalBuildInfo -> PathTemplate -> FilePath Source #