Distribution.Simple.Configure

Cabal-1.22.5.0: A framework for packaging Haskell software

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

Distribution.Simple.Configure

Description

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.

Synopsis

- configure :: (GenericPackageDescription, HookedBuildInfo) -> ConfigFlags -> IO LocalBuildInfo
- writePersistBuildConfig :: FilePath -> LocalBuildInfo -> IO ()
- getConfigStateFile :: FilePath -> IO LocalBuildInfo
- 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 InstalledPackageIndex
- getPackageDBContents :: Verbosity -> Compiler -> PackageDB -> ProgramConfiguration -> IO InstalledPackageIndex
- 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 ConfigStateFileError
  - = ConfigStateFileNoHeader
  - | ConfigStateFileBadHeader
  - | ConfigStateFileNoParse
  - | ConfigStateFileMissing
  - | ConfigStateFileBadVersion PackageIdentifier PackageIdentifier (Either ConfigStateFileError LocalBuildInfo)
- tryGetConfigStateFile :: FilePath -> IO (Either ConfigStateFileError LocalBuildInfo)
- 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`.

getConfigStateFile :: FilePath -> IO LocalBuildInfo

getPersistBuildConfig :: FilePath -> IO LocalBuildInfo

Read the `localBuildInfoFile`. Throw an exception if the file is missing, if the file cannot be read, or if the file was created by an older version of Cabal.

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 InstalledPackageIndex

getPackageDBContents :: Verbosity -> Compiler -> PackageDB -> ProgramConfiguration -> IO InstalledPackageIndex

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.

data ConfigStateFileError

Constructors

ConfigStateFileNoHeader |
ConfigStateFileBadHeader |
ConfigStateFileNoParse |
ConfigStateFileMissing |
ConfigStateFileBadVersion PackageIdentifier PackageIdentifier (Either ConfigStateFileError LocalBuildInfo) |

Instances

Show ConfigStateFileError |
Exception ConfigStateFileError |

tryGetConfigStateFile :: FilePath -> IO (Either ConfigStateFileError LocalBuildInfo)

platformDefines :: LocalBuildInfo -> [String]