This module defines a simple JSON-based format for exporting basic
information about a Cabal package and the compiler configuration Cabal
would use to build it. This can be produced with the
cabal build
--enable-build-info command.
This format is intended for consumption by external tooling and should
therefore be rather stable. Moreover, this allows tooling users to
avoid linking against Cabal. This is an important advantage as direct
API usage tends to be rather fragile in the presence of user-initiated
upgrades of Cabal.
Below is an example of the output this module produces,
{ "cabal-lib-version": "1.23.0.0",
"compiler": {
"flavour": GHC,
"compiler-id": "ghc-7.10.2",
"path": "usrbin/ghc",
},
"components": [
{ "type": "lib",
"name": "lib:Cabal",
"compiler-args":
["-O", "-XHaskell98", "-Wall",
"-package-id", "parallel-3.2.0.6-b79c38c5c25fff77f3ea7271851879eb"]
"modules": [Project.ModA, Project.ModB, Paths_project],
"src-files": [],
"src-dirs": ["src"]
}
]
}
The output format needs to be validated against
'doc
json-schemasbuild-info.schema.json'. If the format changes,
update the schema as well!
The
cabal-lib-version property provides the version of the
Cabal library which generated the output. The
compiler
property gives some basic information about the compiler Cabal would
use to compile the package.
The
components property gives a list of the Cabal
Components defined by the package. Each has,
- type: the type of the component (one of lib,
exe, test, bench, or flib)
- name: a string serving to uniquely identify the component
within the package.
- compiler-args: the command-line arguments Cabal would
pass to the compiler to compile the component
- modules: the modules belonging to the component
- src-dirs: a list of directories where the modules might
be found
- src-files: any other Haskell sources needed by the
component
Note: At the moment this is only supported when using the GHC
compiler.