| Cabal-1.2.2.0: A framework for packaging Haskell software | Contents | Index |
|
Distribution.PackageDescription | Portability | portable | Stability | alpha | Maintainer | Isaac Jones <ijones@syntaxpolice.org> |
|
|
|
|
|
Description |
Package description and parsing.
|
|
Synopsis |
|
|
|
|
Package descriptions
|
|
data PackageDescription |
This data type is the internal representation of the file pkg.cabal.
It contains two kinds of information about the package: information
which is needed for all packages, such as the package name and version, and
information which is needed for the simple build system only, such as
the compiler options and library name.
| Constructors | PackageDescription | | package :: PackageIdentifier | | license :: License | | licenseFile :: FilePath | | copyright :: String | | maintainer :: String | | author :: String | | stability :: String | | testedWith :: [(CompilerFlavor, VersionRange)] | | homepage :: String | | pkgUrl :: String | | synopsis :: String | A one-line summary of this package
| description :: String | A more verbose description of this package
| category :: String | | buildDepends :: [Dependency] | | descCabalVersion :: VersionRange | If this package depends on a specific version of Cabal, give that here.
| buildType :: BuildType | | library :: (Maybe Library) | | executables :: [Executable] | | dataFiles :: [FilePath] | | extraSrcFiles :: [FilePath] | | extraTmpFiles :: [FilePath] | |
|
| Instances | |
|
|
data GenericPackageDescription |
Constructors | GenericPackageDescription | | |
| Instances | |
|
|
finalizePackageDescription |
:: [(String, Bool)] | Explicitly specified flag assignments
| -> Maybe [PackageIdentifier] | Available dependencies. Pass Nothing if this
is unknown.
| -> String | OS-name
| -> String | Arch-name
| -> (String, Version) | Compiler + Version
| -> GenericPackageDescription | | -> Either [Dependency] (PackageDescription, [(String, Bool)]) | Either missing dependencies or the resolved package
description along with the flag assignments 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 ...).
XXX: One particularly tricky case is defaulting. In the original package
description, e.g., the source dirctory 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.
|
|
emptyPackageDescription :: PackageDescription |
|
readPackageDescription :: Verbosity -> FilePath -> IO GenericPackageDescription |
Parse the given package file.
|
|
writePackageDescription :: FilePath -> PackageDescription -> IO () |
|
parsePackageDescription :: String -> ParseResult GenericPackageDescription |
Parses the given file into a GenericPackageDescription.
In Cabal 1.2 the syntax for package descriptions was changed to a format
with sections and possibly indented property descriptions.
|
|
showPackageDescription :: PackageDescription -> String |
|
data BuildType |
The type of build system used by this package.
| Constructors | Simple | calls Distribution.Simple.defaultMain
| Configure | calls Distribution.Simple.defaultMainWithHooks defaultUserHooks,
which invokes configure to generate additional build
information used by later phases.
| Make | calls Distribution.Make.defaultMain
| Custom | uses user-supplied Setup.hs or Setup.lhs (default)
|
| Instances | |
|
|
Libraries
|
|
data Library |
Constructors | Library | | exposedModules :: [String] | | libBuildInfo :: BuildInfo | |
|
| Instances | |
|
|
withLib :: PackageDescription -> a -> (Library -> IO a) -> IO a |
If the package description has a library section, call the given
function with the library build info as argument.
|
|
hasLibs :: PackageDescription -> Bool |
does this package have any libraries?
|
|
libModules :: PackageDescription -> [String] |
Get all the module names from the libraries in this package
|
|
Executables
|
|
data Executable |
Constructors | Executable | | exeName :: String | | modulePath :: FilePath | | buildInfo :: BuildInfo | |
|
| Instances | |
|
|
withExe :: PackageDescription -> (Executable -> IO a) -> IO () |
Perform the action on each buildable Executable in the package
description.
|
|
hasExes :: PackageDescription -> Bool |
does this package have any executables?
|
|
exeModules :: PackageDescription -> [String] |
Get all the module names from the exes in this package
|
|
Parsing
|
|
data FieldDescr a |
Field descriptor. The parameter a parameterizes over where the field's
value is stored in.
| Constructors | FieldDescr | | fieldName :: String | | fieldGet :: (a -> Doc) | | fieldSet :: (LineNo -> String -> a -> ParseResult a) | fieldSet n str x Parses the field value from the given input
string str and stores the result in x if the parse was
successful. Otherwise, reports an error on line number n.
|
|
|
|
|
type LineNo = Int |
|
Sanity checking
|
|
sanityCheckPackage :: PackageDescription -> IO ([String], [String]) |
Sanity check this description file.
|
|
Build information
|
|
data BuildInfo |
Constructors | BuildInfo | | buildable :: Bool | component is buildable here
| buildTools :: [Dependency] | tools needed to build this bit
| cppOptions :: [String] | options for pre-processing Haskell code
| ccOptions :: [String] | options for C compiler
| ldOptions :: [String] | options for linker
| pkgconfigDepends :: [Dependency] | pkg-config packages that are used
| frameworks :: [String] | support frameworks for Mac OS X
| cSources :: [FilePath] | | hsSourceDirs :: [FilePath] | where to look for the haskell module hierarchy
| otherModules :: [String] | non-exposed or non-main modules
| extensions :: [Extension] | | extraLibs :: [String] | what libraries to link with when compiling a program that uses your package
| extraLibDirs :: [String] | | includeDirs :: [FilePath] | directories to find .h files
| includes :: [FilePath] | The .h files to be found in includeDirs
| installIncludes :: [FilePath] | .h files to install with the package
| options :: [(CompilerFlavor, [String])] | | ghcProfOptions :: [String] | | ghcSharedOptions :: [String] | |
|
| Instances | |
|
|
emptyBuildInfo :: BuildInfo |
|
allBuildInfo :: PackageDescription -> [BuildInfo] |
The BuildInfo for the library (if there is one and it's buildable) and
all the buildable executables. Useful for gathering dependencies.
|
|
Supplementary build information
|
|
type HookedBuildInfo = (Maybe BuildInfo, [(String, BuildInfo)]) |
|
emptyHookedBuildInfo :: HookedBuildInfo |
|
readHookedBuildInfo :: Verbosity -> FilePath -> IO HookedBuildInfo |
|
parseHookedBuildInfo :: String -> ParseResult HookedBuildInfo |
|
writeHookedBuildInfo :: FilePath -> HookedBuildInfo -> IO () |
|
showHookedBuildInfo :: HookedBuildInfo -> String |
|
updatePackageDescription :: HookedBuildInfo -> PackageDescription -> PackageDescription |
Update the given package description with the output from the
pre-hooks.
|
|
Utilities
|
|
satisfyDependency :: [PackageIdentifier] -> Dependency -> Maybe PackageIdentifier |
|
data ParseResult a |
Constructors | | Instances | |
|
|
hcOptions :: CompilerFlavor -> [(CompilerFlavor, [String])] -> [String] |
Select options for a particular Haskell compiler.
|
|
autogenModuleName :: PackageDescription -> String |
The name of the auto-generated module associated with a package
|
|
haddockName :: PackageDescription -> FilePath |
|
setupMessage :: Verbosity -> String -> PackageDescription -> IO () |
|
cabalVersion :: Version |
|
Produced by Haddock version 0.8 |