Cabal-1.10.1.0: A framework for packaging Haskell softwareContentsIndex
Distribution.Simple.LocalBuildInfo
Portabilityportable
Maintainercabal-devel@haskell.org
Contents
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
extraConfigArgs :: [String]
installDirTemplates :: InstallDirTemplates
compiler :: Compiler
buildDir :: FilePath
scratchDir :: FilePath
libraryConfig :: Maybe ComponentLocalBuildInfo
executableConfigs :: [(String, ComponentLocalBuildInfo)]
testSuiteConfigs :: [(String, ComponentLocalBuildInfo)]
installedPkgs :: PackageIndex
pkgDescrFile :: Maybe FilePath
localPkgDescr :: PackageDescription
withPrograms :: ProgramConfiguration
withPackageDB :: PackageDBStack
withVanillaLib :: Bool
withProfLib :: Bool
withSharedLib :: Bool
withProfExe :: Bool
withOptimization :: OptimisationLevel
withGHCiLib :: Bool
splitObjs :: Bool
stripExes :: Bool
progPrefix :: PathTemplate
progSuffix :: PathTemplate
}
externalPackageDeps :: LocalBuildInfo -> [(InstalledPackageId, PackageId)]
inplacePackageId :: PackageId -> InstalledPackageId
withLibLBI :: PackageDescription -> LocalBuildInfo -> (Library -> ComponentLocalBuildInfo -> IO ()) -> IO ()
withExeLBI :: PackageDescription -> LocalBuildInfo -> (Executable -> ComponentLocalBuildInfo -> IO ()) -> IO ()
withTestLBI :: PackageDescription -> LocalBuildInfo -> (TestSuite -> ComponentLocalBuildInfo -> IO ()) -> IO ()
data ComponentLocalBuildInfo = ComponentLocalBuildInfo {
componentPackageDeps :: [(InstalledPackageId, PackageId)]
}
module Distribution.Simple.InstallDirs
absoluteInstallDirs :: PackageDescription -> LocalBuildInfo -> CopyDest -> InstallDirs FilePath
prefixRelativeInstallDirs :: PackageId -> LocalBuildInfo -> InstallDirs (Maybe FilePath)
substPathTemplate :: PackageId -> LocalBuildInfo -> PathTemplate -> FilePath
Documentation
data LocalBuildInfo
Data cached after configuration step. See also ConfigFlags.
Constructors
LocalBuildInfo
configFlags :: ConfigFlagsOptions passed to the configuration step. Needed to re-run configuration when .cabal is out of date
extraConfigArgs :: [String]Extra args on the command line for the configuration step. Needed to re-run configuration when .cabal is out of date
installDirTemplates :: InstallDirTemplatesThe installation directories for the various differnt kinds of files TODO: inplaceDirTemplates :: InstallDirs FilePath
compiler :: CompilerThe compiler we're building with
buildDir :: FilePathWhere to build the package. TODO: eliminate hugs's scratchDir, use builddir
scratchDir :: FilePathWhere to put the result of the Hugs build.
libraryConfig :: Maybe ComponentLocalBuildInfo
executableConfigs :: [(String, ComponentLocalBuildInfo)]
testSuiteConfigs :: [(String, ComponentLocalBuildInfo)]
installedPkgs :: PackageIndexAll the info about the installed packages that the current package depends on (directly or indirectly).
pkgDescrFile :: Maybe FilePaththe filename containing the .cabal file, if available
localPkgDescr :: PackageDescriptionThe resolved package description, that does not contain any conditionals.
withPrograms :: ProgramConfigurationLocation and args for all programs
withPackageDB :: PackageDBStackWhat package database to use, global/user
withVanillaLib :: BoolWhether to build normal libs.
withProfLib :: BoolWhether to build profiling versions of libs.
withSharedLib :: BoolWhether to build shared versions of libs.
withProfExe :: BoolWhether to build executables for profiling.
withOptimization :: OptimisationLevelWhether to build with optimization (if available).
withGHCiLib :: BoolWhether to build libs suitable for use with GHCi.
splitObjs :: BoolUse -split-objs with GHC, if available
stripExes :: BoolWhether to strip executables during install
progPrefix :: PathTemplatePrefix to be prepended to installed executables
progSuffix :: PathTemplateSuffix to be appended to installed executables
show/hide Instances
externalPackageDeps :: LocalBuildInfo -> [(InstalledPackageId, PackageId)]
External package dependencies for the package as a whole, the union of the individual targetPackageDeps.
inplacePackageId :: PackageId -> InstalledPackageId
The installed package Id we use for local packages registered in the local package db. This is what is used for intra-package deps between components.
withLibLBI :: PackageDescription -> LocalBuildInfo -> (Library -> ComponentLocalBuildInfo -> IO ()) -> IO ()
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 ()
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 ()
data ComponentLocalBuildInfo
Constructors
ComponentLocalBuildInfo
componentPackageDeps :: [(InstalledPackageId, 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.
show/hide Instances
Installation directories
module Distribution.Simple.InstallDirs
absoluteInstallDirs :: PackageDescription -> LocalBuildInfo -> CopyDest -> InstallDirs FilePath
See absoluteInstallDirs
prefixRelativeInstallDirs :: PackageId -> LocalBuildInfo -> InstallDirs (Maybe FilePath)
See prefixRelativeInstallDirs
substPathTemplate :: PackageId -> LocalBuildInfo -> PathTemplate -> FilePath
Produced by Haddock version 2.6.1