Portability | portable |
---|---|
Maintainer | cabal-devel@haskell.org |
Safe Haskell | None |
This deals with the configure phase. It provides the configure
action
which is given the package description and configure flags. It then tries
to: configure the compiler; resolves any conditionals in the package
description; resolve the package dependencies; check if all the extensions
used by this package are supported by the compiler; check that all the build
tools are available (including version checks if appropriate); checks for
any required pkg-config
packages (updating the BuildInfo
with the
results)
Then based on all this it saves the info in the LocalBuildInfo
and writes
it out to the dist/setup-config
file. It also displays various details to
the user, the amount of information displayed depending on the verbosity
level.
- configure :: (GenericPackageDescription, HookedBuildInfo) -> ConfigFlags -> IO LocalBuildInfo
- writePersistBuildConfig :: FilePath -> LocalBuildInfo -> IO ()
- getPersistBuildConfig :: FilePath -> IO LocalBuildInfo
- checkPersistBuildConfigOutdated :: FilePath -> FilePath -> IO Bool
- tryGetPersistBuildConfig :: FilePath -> IO (Either ConfigStateFileError LocalBuildInfo)
- maybeGetPersistBuildConfig :: FilePath -> IO (Maybe LocalBuildInfo)
- localBuildInfoFile :: FilePath -> FilePath
- getInstalledPackages :: Verbosity -> Compiler -> PackageDBStack -> ProgramConfiguration -> IO PackageIndex
- getPackageDBContents :: Verbosity -> Compiler -> PackageDB -> ProgramConfiguration -> IO PackageIndex
- configCompiler :: Maybe CompilerFlavor -> Maybe FilePath -> Maybe FilePath -> ProgramConfiguration -> Verbosity -> IO (Compiler, ProgramConfiguration)
- configCompilerAux :: ConfigFlags -> IO (Compiler, ProgramConfiguration)
- configCompilerEx :: Maybe CompilerFlavor -> Maybe FilePath -> Maybe FilePath -> ProgramConfiguration -> Verbosity -> IO (Compiler, Platform, ProgramConfiguration)
- configCompilerAuxEx :: ConfigFlags -> IO (Compiler, Platform, ProgramConfiguration)
- ccLdOptionsBuildInfo :: [String] -> [String] -> BuildInfo
- checkForeignDeps :: PackageDescription -> LocalBuildInfo -> Verbosity -> IO ()
- interpretPackageDbFlags :: Bool -> [Maybe PackageDB] -> PackageDBStack
- data ConfigStateFileErrorType
- type ConfigStateFileError = (String, ConfigStateFileErrorType)
- tryGetConfigStateFile :: Read a => FilePath -> IO (Either ConfigStateFileError a)
- platformDefines :: LocalBuildInfo -> [String]
Documentation
configure :: (GenericPackageDescription, HookedBuildInfo) -> ConfigFlags -> IO LocalBuildInfo
Perform the "./setup configure
" action.
Returns the .setup-config
file.
writePersistBuildConfig :: FilePath -> LocalBuildInfo -> IO ()
After running configure, output the LocalBuildInfo
to the
localBuildInfoFile
.
getPersistBuildConfig :: FilePath -> IO LocalBuildInfo
Read the localBuildInfoFile
. Error if it doesn't exist. Also
fail if the file containing LocalBuildInfo is older than the .cabal
file, indicating that a re-configure is required.
checkPersistBuildConfigOutdated :: FilePath -> FilePath -> IO Bool
Check that localBuildInfoFile is up-to-date with respect to the .cabal file.
tryGetPersistBuildConfig :: FilePath -> IO (Either ConfigStateFileError LocalBuildInfo)
Try to read the localBuildInfoFile
.
maybeGetPersistBuildConfig :: FilePath -> IO (Maybe LocalBuildInfo)
Try to read the localBuildInfoFile
.
localBuildInfoFile :: FilePath -> FilePath
dist/setup-config
getInstalledPackages :: Verbosity -> Compiler -> PackageDBStack -> ProgramConfiguration -> IO PackageIndex
getPackageDBContents :: Verbosity -> Compiler -> PackageDB -> ProgramConfiguration -> IO PackageIndex
Like getInstalledPackages
, but for a single package DB.
configCompiler :: Maybe CompilerFlavor -> Maybe FilePath -> Maybe FilePath -> ProgramConfiguration -> Verbosity -> IO (Compiler, ProgramConfiguration)
Deprecated: configCompiler
is deprecated. Use configCompilerEx
instead.
configCompilerAux :: ConfigFlags -> IO (Compiler, ProgramConfiguration)
Deprecated: configCompilerAux is deprecated. Use configCompilerAuxEx
instead.
configCompilerEx :: Maybe CompilerFlavor -> Maybe FilePath -> Maybe FilePath -> ProgramConfiguration -> Verbosity -> IO (Compiler, Platform, ProgramConfiguration)
configCompilerAuxEx :: ConfigFlags -> IO (Compiler, Platform, ProgramConfiguration)
ccLdOptionsBuildInfo :: [String] -> [String] -> BuildInfo
Makes a BuildInfo
from C compiler and linker flags.
This can be used with the output from configuration programs like pkg-config and similar package-specific programs like mysql-config, freealut-config etc. For example:
ccflags <- rawSystemProgramStdoutConf verbosity prog conf ["--cflags"] ldflags <- rawSystemProgramStdoutConf verbosity prog conf ["--libs"] return (ccldOptionsBuildInfo (words ccflags) (words ldflags))
checkForeignDeps :: PackageDescription -> LocalBuildInfo -> Verbosity -> IO ()
interpretPackageDbFlags :: Bool -> [Maybe PackageDB] -> PackageDBStack
The user interface specifies the package dbs to use with a combination of
--global
, --user
and --package-db=global|user|clear|$file
.
This function combines the global/user flag and interprets the package-db
flag into a single package db stack.
type ConfigStateFileError = (String, ConfigStateFileErrorType)
tryGetConfigStateFile :: Read a => FilePath -> IO (Either ConfigStateFileError a)
platformDefines :: LocalBuildInfo -> [String]