Distribution.Simple.ShowBuildInfo

Cabal-3.0.1.0: A framework for packaging Haskell software

Safe Haskell | None
Language | Haskell2010

Distribution.Simple.ShowBuildInfo

Description

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 new-show-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-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 `cabal-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 `Component`s 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.

Synopsis

- mkBuildInfo :: PackageDescription -> LocalBuildInfo -> BuildFlags -> [TargetInfo] -> Json

# Documentation

mkBuildInfo Source #

Arguments

:: PackageDescription | Mostly information from the .cabal file
-> LocalBuildInfo | Configuration information
-> BuildFlags | Flags that the user passed to build
-> [TargetInfo] |
-> Json |

Construct a JSON document describing the build information for a package.