![](haskell_icon.gif) | Cabal-1.10.1.0: A framework for packaging Haskell software | Contents | Index |
|
Distribution.PackageDescription.Configuration | Portability | portable | Maintainer | cabal-devel@haskell.org |
|
|
|
Description |
This is about the cabal configurations feature. It exports
finalizePackageDescription and flattenPackageDescription which are
functions for converting GenericPackageDescriptions down to
PackageDescriptions. It has code for working with the tree of conditions
and resolving or flattening conditions.
|
|
Synopsis |
|
|
|
Documentation |
|
finalizePackageDescription |
:: FlagAssignment | Explicitly specified flag assignments
| -> Dependency -> Bool | Is a given depenency satisfiable from the set of available packages?
If this is unknown then use True.
| -> Platform | The Arch and OS
| -> CompilerId | Compiler + Version
| -> [Dependency] | Additional constraints
| -> GenericPackageDescription | | -> Either [Dependency] (PackageDescription, FlagAssignment) | Either missing dependencies or the resolved package
description along with the flag assignments chosen.
| Create a package description with all configurations resolved.
This function takes a GenericPackageDescription and several environment
parameters and tries to generate PackageDescription by finding a flag
assignment that result in satisfiable dependencies.
It takes as inputs a not necessarily complete specifications of flags
assignments, an optional package index as well as platform parameters. If
some flags are not assigned explicitly, this function will try to pick an
assignment that causes this function to succeed. The package index is
optional since on some platforms we cannot determine which packages have
been installed before. When no package index is supplied, every dependency
is assumed to be satisfiable, therefore all not explicitly assigned flags
will get their default values.
This function will fail if it cannot find a flag assignment that leads to
satisfiable dependencies. (It will not try alternative assignments for
explicitly specified flags.) In case of failure it will return a minimum
number of dependencies that could not be satisfied. On success, it will
return the package description and the full flag assignment chosen.
|
|
|
flattenPackageDescription :: GenericPackageDescription -> PackageDescription |
Flatten a generic package description by ignoring all conditions and just
join the field descriptors into on package description. Note, however,
that this may lead to inconsistent field values, since all values are
joined into one field, which may not be possible in the original package
description, due to the use of exclusive choices (if ... else ...).
TODO: One particularly tricky case is defaulting. In the original package
description, e.g., the source directory might either be the default or a
certain, explicitly set path. Since defaults are filled in only after the
package has been resolved and when no explicit value has been set, the
default path will be missing from the package description returned by this
function.
|
|
parseCondition :: ReadP r (Condition ConfVar) |
Parse a configuration condition from a string.
|
|
freeVars :: CondTree ConfVar c a -> [FlagName] |
|
mapCondTree :: (a -> b) -> (c -> d) -> (Condition v -> Condition w) -> CondTree v c a -> CondTree w d b |
|
mapTreeData :: (a -> b) -> CondTree v c a -> CondTree v c b |
|
mapTreeConds :: (Condition v -> Condition w) -> CondTree v c a -> CondTree w c a |
|
mapTreeConstrs :: (c -> d) -> CondTree v c a -> CondTree v d a |
|
Produced by Haddock version 2.6.1 |