cabal man page

cabal — a system for building and packaging Haskell libraries and programs

TL;DR

cabal list search_string

cabal info package_name

cabal install package_name

cabal init

cabal build

cabal test

Synopsis

cabal command <arguments|[options]>...

Where the commands are

cabal install - Install packages.
cabal update - Updates list of known packages.
cabal list - List packages matching a search string.
cabal info - Display detailed information about a particular package.
cabal fetch - Downloads packages for later installation.
cabal freeze - Freeze dependencies.
cabal get - Download/Extract a package's source code (repository).
cabal check - Check the package for common mistakes.
cabal sdist - Generate a source distribution file (.tar.gz).
cabal upload - Uploads source packages or documentation to Hackage.
cabal report - Upload build reports to a remote server.
cabal run - Builds and runs an executable.
cabal init - Create a new .cabal package file (interactively).
cabal configure - Prepare to build the package.
cabal build - Compile all/specific components.
cabal repl - Open an interpreter session for the given component.
cabal sandbox - Create/modify/delete a sandbox.
cabal haddock - Generate Haddock HTML documentation.
cabal exec - Give a command access to the sandbox package repository.
cabal user-config - Display and update the user's global cabal configuration.
cabal clean - Clean up after a build.
cabal gen-bounds - Generate dependency bounds.
cabal copy - Copy the files into the install locations.
cabal hscolour - Generate HsColour colourised code, in HTML format.
cabal register - Register this package with the compiler.
cabal test - Run all/specific tests in the test suite.
cabal bench - Run all/specific benchmarks.

Description

Cabal is the standard package system for Haskell software. It helps people to configure,  build and install Haskell software and to distribute it easily to other users and developers.

The command line cabal tool (also referred to as cabal-install) helps with  installing existing packages and developing new packages.  It can be used to work with local packages or to install packages from online package archives,  including automatically installing dependencies. By default it is configured to use Hackage,  which is Haskell’s central package archive that contains thousands of libraries and applications  in the Cabal package format.

Options

Global options:
-V, --version

Print version information

--numeric-version

Print just the version number

--config-file FILE

Set an alternate location for the config file

--sandbox-config-file FILE

Set an alternate location for the sandbox config file (default: './cabal.sandbox.config')

--default-user-config FILE

Set a location for a cabal.config file for projects without their own cabal.config freeze file.

--require-sandbox
--no-require-sandbox

requiring the presence of a sandbox for sandbox-aware commands

--ignore-sandbox

Ignore any existing sandbox

--ignore-expiry

Ignore expiry dates on signed metadata (use only in exceptional circumstances)

--http-transport HttpTransport

Set a transport for http(s) requests. Accepts 'curl', 'wget', 'powershell', and 'plain-http'. (default: 'curl')

--remote-repo NAME:URL

The name and url for a remote repository

--remote-repo-cache DIR

The location where downloads from all remote repos are cached

--local-repo DIR

The location of a local repository

--logs-dir DIR

The location to put log files

--world-file FILE

The location of the world file

Commands

cabal install

Usage: cabal install [FLAGS]
  or: cabal install [FLAGS] PACKAGES

Installs one or more packages. By default, the installed package will be registered in the user's package database or, if a sandbox is present in the current directory, inside the sandbox.

If PACKAGES are specified, downloads and installs those packages. Otherwise, install the package in the current directory (and/or its dependencies) (there must be exactly one .cabal file in the current directory).

When using a sandbox, the flags for `install` only affect the current command and have no effect on future commands. (To achieve that, `configure` must be used.) In contrast, without a sandbox, the flags to `install` are saved and affect future commands such as `build` and `repl`. See the help for `configure` for a list of commands being affected.

Installed executables will by default (and without a sandbox) be put into `~/.cabal/bin/`. If you want installed executable to be available globally, make sure that the PATH environment variable contains that directory. When using a sandbox, executables will be put into `$SANDBOX/bin/` (by default: `./.cabal-sandbox/bin/`).

When specifying --bindir, consider also specifying --datadir; this way the sandbox can be deleted and the executable should continue working as long as bindir and datadir are left untouched.

The flags --with-PROG and --PROG-option(s) can be used with the following programs:
 alex ar c2hs cpphs gcc ghc ghc-pkg ghcjs ghcjs-pkg greencard haddock happy
 haskell-suite haskell-suite-pkg hmake hpc hsc2hs hscolour jhc ld lhc lhc-pkg
 pkg-config strip tar uhc

Examples:
 cabal install                     Package in the current directory
 cabal install foo                 Package from the hackage server
 cabal install foo-1.0             Specific version of a package
 cabal install 'foo < 2'           Constrained package version
 cabal install haddock --bindir=$HOME/hask-bin/ --datadir=$HOME/hask-data/
                                   Change installation destination

Flags:

-v, --verbose [n]

Control verbosity (n is 0--3, default verbosity level is 1)

--builddir, --distdir, --distpref DIR

The directory where Cabal puts generated build files (default dist)

-g, --ghc

compile with GHC

--ghcjs

compile with GHCJS

--jhc

compile with JHC

--lhc

compile with LHC

--uhc

compile with UHC

--haskell-suite

compile with a haskell-suite compiler

-w, --with-compiler PATH

give the path to a particular compiler

--with-hc-pkg PATH

give the path to the package tool

--prefix DIR

bake this prefix in preparation of installation

--bindir DIR

installation directory for executables

--libdir DIR

installation directory for libraries

--libsubdir DIR

subdirectory of libdir in which libs are installed

--dynlibdir DIR

installation directory for dynamic libraries

--libexecdir DIR

installation directory for program executables

--datadir DIR

installation directory for read-only data

--datasubdir DIR

subdirectory of datadir in which data files are installed

--docdir DIR

installation directory for documentation

--htmldir DIR

installation directory for HTML documentation

--haddockdir DIR

installation directory for haddock interfaces

--sysconfdir DIR

installation directory for configuration files

--program-prefix PREFIX

prefix to be applied to installed executables

--program-suffix SUFFIX

suffix to be applied to installed executables

--enable-library-vanilla
--disable-library-vanilla

Vanilla libraries

-p, --enable-library-profiling
--disable-library-profiling

Library profiling

--enable-shared
--disable-shared

Shared library

--enable-executable-dynamic
--disable-executable-dynamic

Executable dynamic linking

--enable-profiling
--disable-profiling

Executable and library profiling

--enable-executable-profiling
--disable-executable-profiling

Executable profiling (DEPRECATED)

--profiling-detail level

Profiling detail level for executable and library (default, none, exported-functions, toplevel-functions,  all-functions).

--library-profiling-detail level

Profiling detail level for libraries only.

-O, --enable-optimization, --enable-optimisation [n]

Build with optimization (n is 0--2, default is 1)

--disable-optimization, --disable-optimisation

Build without optimization

--enable-debug-info [n]

Emit debug info (n is 0--3, default is 0)

--disable-debug-info

Don't emit debug info

--enable-library-for-ghci
--disable-library-for-ghci

compile library for use with GHCi

--enable-split-objs
--disable-split-objs

split library into smaller objects to reduce binary sizes (GHC 6.6+)

--enable-executable-stripping
--disable-executable-stripping

strip executables upon installation to reduce binary sizes

--enable-library-stripping
--disable-library-stripping

strip libraries upon installation to reduce binary sizes

--configure-option OPT

Extra option for configure

--user
--global

doing a per-user installation

--package-db DB

Append the given package database to the list of package databases used (to satisfy dependencies and register into). May be a specific file, 'global' or 'user'. The initial list is ['global'], ['global', 'user'], or ['global', $sandbox], depending on context. Use 'clear' to reset the list to empty. See the user guide for details.

-f, --flags FLAGS

Force values for the given flags in Cabal conditionals in the .cabal file.  E.g., --flags="debug -usebytestrings" forces the flag "debug" to true and "usebytestrings" to false.

--extra-include-dirs PATH

A list of directories to search for header files

--ipid IPID

Installed package ID to compile this package as

--extra-lib-dirs PATH

A list of directories to search for external libraries

--extra-framework-dirs PATH

A list of directories to search for external frameworks (OS X only)

--extra-prog-path PATH

A list of directories to search for required programs (in addition to the normal search locations)

--enable-tests
--disable-tests

dependency checking and compilation for test suites listed in the package description file.

--enable-coverage
--disable-coverage

build package with Haskell Program Coverage. (GHC only)

--enable-library-coverage
--disable-library-coverage

build package with Haskell Program Coverage. (GHC only) (DEPRECATED)

--allow-newer [DEPS]

Ignore upper bounds in all dependencies or DEPS

--enable-benchmarks
--disable-benchmarks

dependency checking and compilation for benchmarks listed in the package description file.

--enable-relocatable
--disable-relocatable

building a package that is relocatable. (GHC only)

--with-alex PATH

give the path to alex

--with-ar PATH

give the path to ar

--with-c2hs PATH

give the path to c2hs

--with-cpphs PATH

give the path to cpphs

--with-gcc PATH

give the path to gcc

--with-ghc PATH

give the path to ghc

--with-ghc-pkg PATH

give the path to ghc-pkg

--with-ghcjs PATH

give the path to ghcjs

--with-ghcjs-pkg PATH

give the path to ghcjs-pkg

--with-greencard PATH

give the path to greencard

--with-haddock PATH

give the path to haddock

--with-happy PATH

give the path to happy

--with-haskell-suite PATH

give the path to haskell-suite

--with-haskell-suite-pkg PATH

give the path to haskell-suite-pkg

--with-hmake PATH

give the path to hmake

--with-hpc PATH

give the path to hpc

--with-hsc2hs PATH

give the path to hsc2hs

--with-hscolour PATH

give the path to hscolour

--with-jhc PATH

give the path to jhc

--with-ld PATH

give the path to ld

--with-lhc PATH

give the path to lhc

--with-lhc-pkg PATH

give the path to lhc-pkg

--with-pkg-config PATH

give the path to pkg-config

--with-strip PATH

give the path to strip

--with-tar PATH

give the path to tar

--with-uhc PATH

give the path to uhc

--alex-option OPT

give an extra option to alex (no need to quote options containing spaces)

--ar-option OPT

give an extra option to ar (no need to quote options containing spaces)

--c2hs-option OPT

give an extra option to c2hs (no need to quote options containing spaces)

--cpphs-option OPT

give an extra option to cpphs (no need to quote options containing spaces)

--gcc-option OPT

give an extra option to gcc (no need to quote options containing spaces)

--ghc-option OPT

give an extra option to ghc (no need to quote options containing spaces)

--ghc-pkg-option OPT

give an extra option to ghc-pkg (no need to quote options containing spaces)

--ghcjs-option OPT

give an extra option to ghcjs (no need to quote options containing spaces)

--ghcjs-pkg-option OPT

give an extra option to ghcjs-pkg (no need to quote options containing spaces)

--greencard-option OPT

give an extra option to greencard (no need to quote options containing spaces)

--haddock-option OPT

give an extra option to haddock (no need to quote options containing spaces)

--happy-option OPT

give an extra option to happy (no need to quote options containing spaces)

--haskell-suite-option OPT

give an extra option to haskell-suite (no need to quote options containing spaces)

--haskell-suite-pkg-option OPT

give an extra option to haskell-suite-pkg (no need to quote options containing spaces)

--hmake-option OPT

give an extra option to hmake (no need to quote options containing spaces)

--hpc-option OPT

give an extra option to hpc (no need to quote options containing spaces)

--hsc2hs-option OPT

give an extra option to hsc2hs (no need to quote options containing spaces)

--hscolour-option OPT

give an extra option to hscolour (no need to quote options containing spaces)

--jhc-option OPT

give an extra option to jhc (no need to quote options containing spaces)

--ld-option OPT

give an extra option to ld (no need to quote options containing spaces)

--lhc-option OPT

give an extra option to lhc (no need to quote options containing spaces)

--lhc-pkg-option OPT

give an extra option to lhc-pkg (no need to quote options containing spaces)

--pkg-config-option OPT

give an extra option to pkg-config (no need to quote options containing spaces)

--strip-option OPT

give an extra option to strip (no need to quote options containing spaces)

--tar-option OPT

give an extra option to tar (no need to quote options containing spaces)

--uhc-option OPT

give an extra option to uhc (no need to quote options containing spaces)

--alex-options OPTS

give extra options to alex

--ar-options OPTS

give extra options to ar

--c2hs-options OPTS

give extra options to c2hs

--cpphs-options OPTS

give extra options to cpphs

--gcc-options OPTS

give extra options to gcc

--ghc-options OPTS

give extra options to ghc

--ghc-pkg-options OPTS

give extra options to ghc-pkg

--ghcjs-options OPTS

give extra options to ghcjs

--ghcjs-pkg-options OPTS

give extra options to ghcjs-pkg

--greencard-options OPTS

give extra options to greencard

--haddock-options OPTS

give extra options to haddock

--happy-options OPTS

give extra options to happy

--haskell-suite-options OPTS

give extra options to haskell-suite

--haskell-suite-pkg-options OPTS

give extra options to haskell-suite-pkg

--hmake-options OPTS

give extra options to hmake

--hpc-options OPTS

give extra options to hpc

--hsc2hs-options OPTS

give extra options to hsc2hs

--hscolour-options OPTS

give extra options to hscolour

--jhc-options OPTS

give extra options to jhc

--ld-options OPTS

give extra options to ld

--lhc-options OPTS

give extra options to lhc

--lhc-pkg-options OPTS

give extra options to lhc-pkg

--pkg-config-options OPTS

give extra options to pkg-config

--strip-options OPTS

give extra options to strip

--tar-options OPTS

give extra options to tar

--uhc-options OPTS

give extra options to uhc

--cabal-lib-version VERSION

Select which version of the Cabal lib to use to build packages (useful for testing).

--constraint CONSTRAINT

Specify constraints on a package (version, installed/source, flags)

--preference CONSTRAINT

Specify preferences (soft constraints) on the version of a package

--solver SOLVER

Select dependency solver to use (default: choose). Choices: topdown, modular, choose, where 'choose' chooses between 'topdown' and 'modular' based on compiler version.

--enable-documentation
--disable-documentation

building of documentation

--doc-index-file TEMPLATE

A central index of haddock API documentation (template cannot use $pkgid)

--dry-run

Do not install anything, only print what would be installed.

--max-backjumps NUM

Maximum number of backjumps allowed while solving (default: 2000). Use a negative number to enable unlimited backtracking. Use 0 to disable backtracking completely.

--reorder-goals
--no-reorder-goals

Try to reorder goals according to certain heuristics. Slows things down on average, but may make backtracking faster for some packages.

--shadow-installed-packages
--no-shadow-installed-packages

If multiple package instances of the same version are installed, treat all but one as shadowed.

--strong-flags
--no-strong-flags

Do not defer flag choices (this used to be the default in cabal-install <= 1.20).

--reinstall
--no-reinstall

Install even if it means installing the same version again.

--avoid-reinstalls
--no-avoid-reinstalls

Do not select versions that would destructively overwrite installed packages.

--force-reinstalls
--no-force-reinstalls

Reinstall packages even if they will most likely break other installed packages.

--upgrade-dependencies
--no-upgrade-dependencies

Pick the latest version for all dependencies, rather than trying to pick an installed version.

--only-dependencies
--no-only-dependencies

Install only the dependencies necessary to build the given packages

--dependencies-only
--no-dependencies-only

A synonym for --only-dependencies

--root-cmd COMMAND

Command used to gain root privileges, when installing with --global.

--symlink-bindir DIR

Add symlinks to installed executables into this directory.

--build-summary TEMPLATE

Save build summaries to file (name template can use $pkgid, $compiler, $os, $arch)

--build-log TEMPLATE

Log all builds to file (name template can use $pkgid, $compiler, $os, $arch)

--remote-build-reporting LEVEL

Generate build reports to send to a remote server (none, anonymous or detailed).

--report-planning-failure

Generate build reports when the dependency solver fails. This is used by the Hackage build bot.

--one-shot
--no-one-shot

Do not record the packages in the world file.

--run-tests

Run package test suites during installation.

-j, --jobs [NUM]

Run NUM jobs simultaneously (or '$ncpus' if no NUM is given).

--offline
--no-offline

Don't download packages from the Internet.

--only

Only installs the package in the current directory.

--haddock-hoogle

Generate a hoogle database

--haddock-html

Generate HTML documentation (the default)

--haddock-html-location URL

Location of HTML documentation for pre-requisite packages

--haddock-executables

Run haddock for Executables targets

--haddock-tests

Run haddock for Test Suite targets

--haddock-benchmarks

Run haddock for Benchmark targets

--haddock-all

Run haddock for all targets

--haddock-internal

Run haddock for internal modules and include all symbols

--haddock-css PATH

Use PATH as the haddock stylesheet

--haddock-hyperlink-source, --haddock-hyperlink-sources

Hyperlink the documentation to the source code (using HsColour)

--haddock-hscolour-css PATH

Use PATH as the HsColour stylesheet

--haddock-contents-location URL

Bake URL in as the location for the contents page

cabal update

Usage: cabal update [FLAGS]

For all known remote repositories, download the package list.

Relevant global configuration keys:
 remote-repo
 remote-repo-cache
 local-repo

Flags:

-v, --verbose [n]

Control verbosity (n is 0--3, default verbosity level is 1)

cabal list

Usage: cabal list [FLAGS]
  or: cabal list [FLAGS] STRINGS

List all packages, or all packages matching one of the search strings.

If there is a sandbox in the current directory and config:ignore-sandbox is False, use the sandbox package database. Otherwise, use the package database specified with --package-db. If not specified, use the user package database.

Examples:
 cabal list pandoc
   Will find pandoc, pandoc-citeproc, pandoc-lens, ...

Flags:

-v, --verbose [n]

Control verbosity (n is 0--3, default verbosity level is 1)

--installed

Only print installed packages

--simple-output

Print in a easy-to-parse format

--package-db DB

Append the given package database to the list of package databases used (to satisfy dependencies and register into). May be a specific file, 'global' or 'user'. The initial list is ['global'], ['global', 'user'], or ['global', $sandbox], depending on context. Use 'clear' to reset the list to empty. See the user guide for details.

cabal info

Usage: cabal info [FLAGS] PACKAGES

If there is a sandbox in the current directory and config:ignore-sandbox is False, use the sandbox package database. Otherwise, use the package database specified with --package-db. If not specified, use the user package database.

Flags:

-v, --verbose [n]

Control verbosity (n is 0--3, default verbosity level is 1)

--package-db DB

Append the given package database to the list of package databases used (to satisfy dependencies and register into). May be a specific file, 'global' or 'user'. The initial list is ['global'], ['global', 'user'], or ['global', $sandbox], depending on context. Use 'clear' to reset the list to empty. See the user guide for details.

cabal fetch

Usage: cabal fetch [FLAGS] PACKAGES

Note that it currently is not possible to fetch the dependencies for a package in the current directory.

Flags:

-v, --verbose [n]

Control verbosity (n is 0--3, default verbosity level is 1)

--dependencies, --deps

Resolve and fetch dependencies (default)

--no-dependencies, --no-deps

Ignore dependencies

--dry-run

Do not install anything, only print what would be installed.

--solver SOLVER

Select dependency solver to use (default: choose). Choices: topdown, modular, choose, where 'choose' chooses between 'topdown' and 'modular' based on compiler version.

--max-backjumps NUM

Maximum number of backjumps allowed while solving (default: 2000). Use a negative number to enable unlimited backtracking. Use 0 to disable backtracking completely.

--reorder-goals
--no-reorder-goals

Try to reorder goals according to certain heuristics. Slows things down on average, but may make backtracking faster for some packages.

--shadow-installed-packages
--no-shadow-installed-packages

If multiple package instances of the same version are installed, treat all but one as shadowed.

--strong-flags
--no-strong-flags

Do not defer flag choices (this used to be the default in cabal-install <= 1.20).

cabal freeze

Usage: cabal freeze [FLAGS]

Calculates a valid set of dependencies and their exact versions. If successful, saves the result to the file `cabal.config`.

The package versions specified in `cabal.config` will be used for any future installs.

An existing `cabal.config` is ignored and overwritten.

Flags:

-v, --verbose [n]

Control verbosity (n is 0--3, default verbosity level is 1)

--dry-run

Do not freeze anything, only print what would be frozen

--enable-tests
--disable-tests

freezing of the dependencies of any tests suites in the package description file.

--enable-benchmarks
--disable-benchmarks

freezing of the dependencies of any benchmarks suites in the package description file.

--solver SOLVER

Select dependency solver to use (default: choose). Choices: topdown, modular, choose, where 'choose' chooses between 'topdown' and 'modular' based on compiler version.

--max-backjumps NUM

Maximum number of backjumps allowed while solving (default: 2000). Use a negative number to enable unlimited backtracking. Use 0 to disable backtracking completely.

--reorder-goals
--no-reorder-goals

Try to reorder goals according to certain heuristics. Slows things down on average, but may make backtracking faster for some packages.

--shadow-installed-packages
--no-shadow-installed-packages

If multiple package instances of the same version are installed, treat all but one as shadowed.

--strong-flags
--no-strong-flags

Do not defer flag choices (this used to be the default in cabal-install <= 1.20).

cabal get

Usage: cabal get [PACKAGES]

Creates a local copy of a package's source code. By default it gets the source tarball and unpacks it in a local subdirectory. Alternatively, with -s it will get the code from the source repository specified by the package.

Examples:
 cabal get hlint
   Download the latest stable version of hlint;
 cabal get lens --source-repository=head
   Download the source repository (i.e. git clone from github).

Flags:

-v, --verbose [n]

Control verbosity (n is 0--3, default verbosity level is 1)

-d, --destdir PATH

Where to place the package source, defaults to the current directory.

-s, --source-repository [[head|this|...]]

Copy the package's source repository (ie git clone, darcs get, etc as appropriate).

--pristine

Unpack the original pristine tarball, rather than updating the .cabal file with the latest revision from the package archive.

cabal check

Usage: cabal check

Expects a .cabal package file in the current directory.

The checks correspond to the requirements to packages on Hackage. If no errors and warnings are reported, Hackage will accept this package.

Flags:

cabal sdist

Usage: cabal sdist [FLAGS]

Flags:

-v, --verbose [n]

Control verbosity (n is 0--3, default verbosity level is 1)

--builddir, --distdir, --distpref DIR

The directory where Cabal puts generated build files (default dist)

--list-sources FILE

Just write a list of the package's sources to a file

--snapshot

Produce a snapshot source distribution

--output-directory DIR

Generate a source distribution in the given directory, without creating a tarball

--targz

Produce a '.tar.gz' format archive (default and required for uploading to hackage)

--zip

Produce a '.zip' format archive

cabal upload

Usage: cabal upload [FLAGS] TARFILES

You can store your Hackage login in the ~/.cabal/config file Relevant global configuration keys:
 username
 password

Flags:

-v, --verbose [n]

Control verbosity (n is 0--3, default verbosity level is 1)

-c, --check

Do not upload, just do QA checks.

-d, --documentation

Upload documentation instead of a source package. Cannot be used together with --check.

-u, --username USERNAME

Hackage username.

-p, --password PASSWORD

Hackage password.

-P, --password-command PASSWORD

Command to get Hackage password.

cabal report

Usage: cabal report [FLAGS]

You can store your Hackage login in the ~/.cabal/config file

Flags:

-v, --verbose [n]

Control verbosity (n is 0--3, default verbosity level is 1)

-u, --username USERNAME

Hackage username.

-p, --password PASSWORD

Hackage password.

cabal run

Usage: cabal run [FLAGS] [EXECUTABLE] [-- EXECUTABLE_FLAGS]

Builds and then runs the specified executable. If no executable is specified, but the package contains just one executable, that one is built and executed.

Use `cabal test --show-details=streaming` to run a test-suite and get its full output.

Examples:
 cabal run
   Run the only executable in the current package;
 cabal run foo -- --fooflag
   Works similar to `./foo --fooflag`.

Flags:

-v, --verbose [n]

Control verbosity (n is 0--3, default verbosity level is 1)

--builddir, --distdir, --distpref DIR

The directory where Cabal puts generated build files (default dist)

-j, --jobs [NUM]

Run NUM jobs simultaneously (or '$ncpus' if no NUM is given).

--with-alex PATH

give the path to alex

--with-ar PATH

give the path to ar

--with-c2hs PATH

give the path to c2hs

--with-cpphs PATH

give the path to cpphs

--with-gcc PATH

give the path to gcc

--with-ghc PATH

give the path to ghc

--with-ghc-pkg PATH

give the path to ghc-pkg

--with-ghcjs PATH

give the path to ghcjs

--with-ghcjs-pkg PATH

give the path to ghcjs-pkg

--with-greencard PATH

give the path to greencard

--with-haddock PATH

give the path to haddock

--with-happy PATH

give the path to happy

--with-haskell-suite PATH

give the path to haskell-suite

--with-haskell-suite-pkg PATH

give the path to haskell-suite-pkg

--with-hmake PATH

give the path to hmake

--with-hpc PATH

give the path to hpc

--with-hsc2hs PATH

give the path to hsc2hs

--with-hscolour PATH

give the path to hscolour

--with-jhc PATH

give the path to jhc

--with-ld PATH

give the path to ld

--with-lhc PATH

give the path to lhc

--with-lhc-pkg PATH

give the path to lhc-pkg

--with-pkg-config PATH

give the path to pkg-config

--with-strip PATH

give the path to strip

--with-tar PATH

give the path to tar

--with-uhc PATH

give the path to uhc

--alex-option OPT

give an extra option to alex (no need to quote options containing spaces)

--ar-option OPT

give an extra option to ar (no need to quote options containing spaces)

--c2hs-option OPT

give an extra option to c2hs (no need to quote options containing spaces)

--cpphs-option OPT

give an extra option to cpphs (no need to quote options containing spaces)

--gcc-option OPT

give an extra option to gcc (no need to quote options containing spaces)

--ghc-option OPT

give an extra option to ghc (no need to quote options containing spaces)

--ghc-pkg-option OPT

give an extra option to ghc-pkg (no need to quote options containing spaces)

--ghcjs-option OPT

give an extra option to ghcjs (no need to quote options containing spaces)

--ghcjs-pkg-option OPT

give an extra option to ghcjs-pkg (no need to quote options containing spaces)

--greencard-option OPT

give an extra option to greencard (no need to quote options containing spaces)

--haddock-option OPT

give an extra option to haddock (no need to quote options containing spaces)

--happy-option OPT

give an extra option to happy (no need to quote options containing spaces)

--haskell-suite-option OPT

give an extra option to haskell-suite (no need to quote options containing spaces)

--haskell-suite-pkg-option OPT

give an extra option to haskell-suite-pkg (no need to quote options containing spaces)

--hmake-option OPT

give an extra option to hmake (no need to quote options containing spaces)

--hpc-option OPT

give an extra option to hpc (no need to quote options containing spaces)

--hsc2hs-option OPT

give an extra option to hsc2hs (no need to quote options containing spaces)

--hscolour-option OPT

give an extra option to hscolour (no need to quote options containing spaces)

--jhc-option OPT

give an extra option to jhc (no need to quote options containing spaces)

--ld-option OPT

give an extra option to ld (no need to quote options containing spaces)

--lhc-option OPT

give an extra option to lhc (no need to quote options containing spaces)

--lhc-pkg-option OPT

give an extra option to lhc-pkg (no need to quote options containing spaces)

--pkg-config-option OPT

give an extra option to pkg-config (no need to quote options containing spaces)

--strip-option OPT

give an extra option to strip (no need to quote options containing spaces)

--tar-option OPT

give an extra option to tar (no need to quote options containing spaces)

--uhc-option OPT

give an extra option to uhc (no need to quote options containing spaces)

--alex-options OPTS

give extra options to alex

--ar-options OPTS

give extra options to ar

--c2hs-options OPTS

give extra options to c2hs

--cpphs-options OPTS

give extra options to cpphs

--gcc-options OPTS

give extra options to gcc

--ghc-options OPTS

give extra options to ghc

--ghc-pkg-options OPTS

give extra options to ghc-pkg

--ghcjs-options OPTS

give extra options to ghcjs

--ghcjs-pkg-options OPTS

give extra options to ghcjs-pkg

--greencard-options OPTS

give extra options to greencard

--haddock-options OPTS

give extra options to haddock

--happy-options OPTS

give extra options to happy

--haskell-suite-options OPTS

give extra options to haskell-suite

--haskell-suite-pkg-options OPTS

give extra options to haskell-suite-pkg

--hmake-options OPTS

give extra options to hmake

--hpc-options OPTS

give extra options to hpc

--hsc2hs-options OPTS

give extra options to hsc2hs

--hscolour-options OPTS

give extra options to hscolour

--jhc-options OPTS

give extra options to jhc

--ld-options OPTS

give extra options to ld

--lhc-options OPTS

give extra options to lhc

--lhc-pkg-options OPTS

give extra options to lhc-pkg

--pkg-config-options OPTS

give extra options to pkg-config

--strip-options OPTS

give extra options to strip

--tar-options OPTS

give extra options to tar

--uhc-options OPTS

give extra options to uhc

--only

Don't reinstall add-source dependencies (sandbox-only)

cabal init

Usage: cabal init [FLAGS]

Cabalise a project by creating a .cabal, Setup.hs, and optionally a LICENSE file.

Calling init with no arguments (recommended) uses an interactive mode, which will try to guess as much as possible and prompt you for the rest. Command-line arguments are provided for scripting purposes. If you don't want interactive mode, be sure to pass the -n flag.

Flags:

-n, --non-interactive

Non-interactive mode.

-q, --quiet

Do not generate log messages to stdout.

--no-comments

Do not generate explanatory comments in the .cabal file.

-m, --minimal

Generate a minimal .cabal file, that is, do not include extra empty fields.  Also implies --no-comments.

--overwrite

Overwrite any existing .cabal, LICENSE, or Setup.hs files without warning.

--package-dir DIRECTORY

Root directory of the package (default = current directory).

-p, --package-name PACKAGE

Name of the Cabal package to create.

--version VERSION

Initial version of the package.

--cabal-version VERSION_RANGE

Required version of the Cabal library.

-l, --license LICENSE

Project license.

-a, --author NAME

Name of the project's author.

-e, --email EMAIL

Email address of the maintainer.

-u, --homepage URL

Project homepage and/or repository.

-s, --synopsis TEXT

Short project synopsis.

-c, --category CATEGORY

Project category.

-x, --extra-source-file FILE

Extra source file to be distributed with tarball.

--is-library

Build a library.

--is-executable

Build an executable.

--main-is FILE

Specify the main module.

--language LANGUAGE

Specify the default language.

-o, --expose-module MODULE

Export a module from the package.

--extension EXTENSION

Use a LANGUAGE extension (in the other-extensions field).

-d, --dependency PACKAGE

Package dependency.

--source-dir DIR

Directory containing package source.

--build-tool TOOL

Required external build tool.

-v, --verbose [n]

Control verbosity (n is 0--3, default verbosity level is 1)

cabal configure

Usage: cabal configure [FLAGS]

Configure how the package is built by setting package (and other) flags.

The configuration affects several other commands, including build, test, bench, run, repl.

The flags --with-PROG and --PROG-option(s) can be used with the following programs:
 alex ar c2hs cpphs gcc ghc ghc-pkg ghcjs ghcjs-pkg greencard haddock happy
 haskell-suite haskell-suite-pkg hmake hpc hsc2hs hscolour jhc ld lhc lhc-pkg
 pkg-config strip tar uhc

Examples:
 cabal configure
   Configure with defaults;
 cabal configure --enable-tests -fcustomflag
   Configure building package including tests,
   with some package-specific flag.

Flags:

-v, --verbose [n]

Control verbosity (n is 0--3, default verbosity level is 1)

--builddir, --distdir, --distpref DIR

The directory where Cabal puts generated build files (default dist)

-g, --ghc

compile with GHC

--ghcjs

compile with GHCJS

--jhc

compile with JHC

--lhc

compile with LHC

--uhc

compile with UHC

--haskell-suite

compile with a haskell-suite compiler

-w, --with-compiler PATH

give the path to a particular compiler

--with-hc-pkg PATH

give the path to the package tool

--prefix DIR

bake this prefix in preparation of installation

--bindir DIR

installation directory for executables

--libdir DIR

installation directory for libraries

--libsubdir DIR

subdirectory of libdir in which libs are installed

--dynlibdir DIR

installation directory for dynamic libraries

--libexecdir DIR

installation directory for program executables

--datadir DIR

installation directory for read-only data

--datasubdir DIR

subdirectory of datadir in which data files are installed

--docdir DIR

installation directory for documentation

--htmldir DIR

installation directory for HTML documentation

--haddockdir DIR

installation directory for haddock interfaces

--sysconfdir DIR

installation directory for configuration files

--program-prefix PREFIX

prefix to be applied to installed executables

--program-suffix SUFFIX

suffix to be applied to installed executables

--enable-library-vanilla
--disable-library-vanilla

Vanilla libraries

-p, --enable-library-profiling
--disable-library-profiling

Library profiling

--enable-shared
--disable-shared

Shared library

--enable-executable-dynamic
--disable-executable-dynamic

Executable dynamic linking

--enable-profiling
--disable-profiling

Executable and library profiling

--enable-executable-profiling
--disable-executable-profiling

Executable profiling (DEPRECATED)

--profiling-detail level

Profiling detail level for executable and library (default, none, exported-functions, toplevel-functions,  all-functions).

--library-profiling-detail level

Profiling detail level for libraries only.

-O, --enable-optimization, --enable-optimisation [n]

Build with optimization (n is 0--2, default is 1)

--disable-optimization, --disable-optimisation

Build without optimization

--enable-debug-info [n]

Emit debug info (n is 0--3, default is 0)

--disable-debug-info

Don't emit debug info

--enable-library-for-ghci
--disable-library-for-ghci

compile library for use with GHCi

--enable-split-objs
--disable-split-objs

split library into smaller objects to reduce binary sizes (GHC 6.6+)

--enable-executable-stripping
--disable-executable-stripping

strip executables upon installation to reduce binary sizes

--enable-library-stripping
--disable-library-stripping

strip libraries upon installation to reduce binary sizes

--configure-option OPT

Extra option for configure

--user
--global

doing a per-user installation

--package-db DB

Append the given package database to the list of package databases used (to satisfy dependencies and register into). May be a specific file, 'global' or 'user'. The initial list is ['global'], ['global', 'user'], or ['global', $sandbox], depending on context. Use 'clear' to reset the list to empty. See the user guide for details.

-f, --flags FLAGS

Force values for the given flags in Cabal conditionals in the .cabal file.  E.g., --flags="debug -usebytestrings" forces the flag "debug" to true and "usebytestrings" to false.

--extra-include-dirs PATH

A list of directories to search for header files

--ipid IPID

Installed package ID to compile this package as

--extra-lib-dirs PATH

A list of directories to search for external libraries

--extra-framework-dirs PATH

A list of directories to search for external frameworks (OS X only)

--extra-prog-path PATH

A list of directories to search for required programs (in addition to the normal search locations)

--enable-tests
--disable-tests

dependency checking and compilation for test suites listed in the package description file.

--enable-coverage
--disable-coverage

build package with Haskell Program Coverage. (GHC only)

--enable-library-coverage
--disable-library-coverage

build package with Haskell Program Coverage. (GHC only) (DEPRECATED)

--allow-newer [DEPS]

Ignore upper bounds in all dependencies or DEPS

--enable-benchmarks
--disable-benchmarks

dependency checking and compilation for benchmarks listed in the package description file.

--enable-relocatable
--disable-relocatable

building a package that is relocatable. (GHC only)

--with-alex PATH

give the path to alex

--with-ar PATH

give the path to ar

--with-c2hs PATH

give the path to c2hs

--with-cpphs PATH

give the path to cpphs

--with-gcc PATH

give the path to gcc

--with-ghc PATH

give the path to ghc

--with-ghc-pkg PATH

give the path to ghc-pkg

--with-ghcjs PATH

give the path to ghcjs

--with-ghcjs-pkg PATH

give the path to ghcjs-pkg

--with-greencard PATH

give the path to greencard

--with-haddock PATH

give the path to haddock

--with-happy PATH

give the path to happy

--with-haskell-suite PATH

give the path to haskell-suite

--with-haskell-suite-pkg PATH

give the path to haskell-suite-pkg

--with-hmake PATH

give the path to hmake

--with-hpc PATH

give the path to hpc

--with-hsc2hs PATH

give the path to hsc2hs

--with-hscolour PATH

give the path to hscolour

--with-jhc PATH

give the path to jhc

--with-ld PATH

give the path to ld

--with-lhc PATH

give the path to lhc

--with-lhc-pkg PATH

give the path to lhc-pkg

--with-pkg-config PATH

give the path to pkg-config

--with-strip PATH

give the path to strip

--with-tar PATH

give the path to tar

--with-uhc PATH

give the path to uhc

--alex-option OPT

give an extra option to alex (no need to quote options containing spaces)

--ar-option OPT

give an extra option to ar (no need to quote options containing spaces)

--c2hs-option OPT

give an extra option to c2hs (no need to quote options containing spaces)

--cpphs-option OPT

give an extra option to cpphs (no need to quote options containing spaces)

--gcc-option OPT

give an extra option to gcc (no need to quote options containing spaces)

--ghc-option OPT

give an extra option to ghc (no need to quote options containing spaces)

--ghc-pkg-option OPT

give an extra option to ghc-pkg (no need to quote options containing spaces)

--ghcjs-option OPT

give an extra option to ghcjs (no need to quote options containing spaces)

--ghcjs-pkg-option OPT

give an extra option to ghcjs-pkg (no need to quote options containing spaces)

--greencard-option OPT

give an extra option to greencard (no need to quote options containing spaces)

--haddock-option OPT

give an extra option to haddock (no need to quote options containing spaces)

--happy-option OPT

give an extra option to happy (no need to quote options containing spaces)

--haskell-suite-option OPT

give an extra option to haskell-suite (no need to quote options containing spaces)

--haskell-suite-pkg-option OPT

give an extra option to haskell-suite-pkg (no need to quote options containing spaces)

--hmake-option OPT

give an extra option to hmake (no need to quote options containing spaces)

--hpc-option OPT

give an extra option to hpc (no need to quote options containing spaces)

--hsc2hs-option OPT

give an extra option to hsc2hs (no need to quote options containing spaces)

--hscolour-option OPT

give an extra option to hscolour (no need to quote options containing spaces)

--jhc-option OPT

give an extra option to jhc (no need to quote options containing spaces)

--ld-option OPT

give an extra option to ld (no need to quote options containing spaces)

--lhc-option OPT

give an extra option to lhc (no need to quote options containing spaces)

--lhc-pkg-option OPT

give an extra option to lhc-pkg (no need to quote options containing spaces)

--pkg-config-option OPT

give an extra option to pkg-config (no need to quote options containing spaces)

--strip-option OPT

give an extra option to strip (no need to quote options containing spaces)

--tar-option OPT

give an extra option to tar (no need to quote options containing spaces)

--uhc-option OPT

give an extra option to uhc (no need to quote options containing spaces)

--alex-options OPTS

give extra options to alex

--ar-options OPTS

give extra options to ar

--c2hs-options OPTS

give extra options to c2hs

--cpphs-options OPTS

give extra options to cpphs

--gcc-options OPTS

give extra options to gcc

--ghc-options OPTS

give extra options to ghc

--ghc-pkg-options OPTS

give extra options to ghc-pkg

--ghcjs-options OPTS

give extra options to ghcjs

--ghcjs-pkg-options OPTS

give extra options to ghcjs-pkg

--greencard-options OPTS

give extra options to greencard

--haddock-options OPTS

give extra options to haddock

--happy-options OPTS

give extra options to happy

--haskell-suite-options OPTS

give extra options to haskell-suite

--haskell-suite-pkg-options OPTS

give extra options to haskell-suite-pkg

--hmake-options OPTS

give extra options to hmake

--hpc-options OPTS

give extra options to hpc

--hsc2hs-options OPTS

give extra options to hsc2hs

--hscolour-options OPTS

give extra options to hscolour

--jhc-options OPTS

give extra options to jhc

--ld-options OPTS

give extra options to ld

--lhc-options OPTS

give extra options to lhc

--lhc-pkg-options OPTS

give extra options to lhc-pkg

--pkg-config-options OPTS

give extra options to pkg-config

--strip-options OPTS

give extra options to strip

--tar-options OPTS

give extra options to tar

--uhc-options OPTS

give extra options to uhc

--cabal-lib-version VERSION

Select which version of the Cabal lib to use to build packages (useful for testing).

--constraint CONSTRAINT

Specify constraints on a package (version, installed/source, flags)

--preference CONSTRAINT

Specify preferences (soft constraints) on the version of a package

--solver SOLVER

Select dependency solver to use (default: choose). Choices: topdown, modular, choose, where 'choose' chooses between 'topdown' and 'modular' based on compiler version.

cabal build

Usage: cabal build [FLAGS]
  or: cabal build COMPONENTS [FLAGS]

Components encompass executables, tests, and benchmarks.

Affected by configuration options, see `configure`.

Examples:
 cabal build               All the components in the package
 cabal build foo           A component (i.e. lib, exe, test suite)

The flags --with-PROG and --PROG-option(s) can be used with the following programs:
 alex ar c2hs cpphs gcc ghc ghc-pkg ghcjs ghcjs-pkg greencard haddock happy
 haskell-suite haskell-suite-pkg hmake hpc hsc2hs hscolour jhc ld lhc lhc-pkg
 pkg-config strip tar uhc

Flags:

-v, --verbose [n]

Control verbosity (n is 0--3, default verbosity level is 1)

--builddir, --distdir, --distpref DIR

The directory where Cabal puts generated build files (default dist)

-j, --jobs [NUM]

Run NUM jobs simultaneously (or '$ncpus' if no NUM is given).

--with-alex PATH

give the path to alex

--with-ar PATH

give the path to ar

--with-c2hs PATH

give the path to c2hs

--with-cpphs PATH

give the path to cpphs

--with-gcc PATH

give the path to gcc

--with-ghc PATH

give the path to ghc

--with-ghc-pkg PATH

give the path to ghc-pkg

--with-ghcjs PATH

give the path to ghcjs

--with-ghcjs-pkg PATH

give the path to ghcjs-pkg

--with-greencard PATH

give the path to greencard

--with-haddock PATH

give the path to haddock

--with-happy PATH

give the path to happy

--with-haskell-suite PATH

give the path to haskell-suite

--with-haskell-suite-pkg PATH

give the path to haskell-suite-pkg

--with-hmake PATH

give the path to hmake

--with-hpc PATH

give the path to hpc

--with-hsc2hs PATH

give the path to hsc2hs

--with-hscolour PATH

give the path to hscolour

--with-jhc PATH

give the path to jhc

--with-ld PATH

give the path to ld

--with-lhc PATH

give the path to lhc

--with-lhc-pkg PATH

give the path to lhc-pkg

--with-pkg-config PATH

give the path to pkg-config

--with-strip PATH

give the path to strip

--with-tar PATH

give the path to tar

--with-uhc PATH

give the path to uhc

--alex-option OPT

give an extra option to alex (no need to quote options containing spaces)

--ar-option OPT

give an extra option to ar (no need to quote options containing spaces)

--c2hs-option OPT

give an extra option to c2hs (no need to quote options containing spaces)

--cpphs-option OPT

give an extra option to cpphs (no need to quote options containing spaces)

--gcc-option OPT

give an extra option to gcc (no need to quote options containing spaces)

--ghc-option OPT

give an extra option to ghc (no need to quote options containing spaces)

--ghc-pkg-option OPT

give an extra option to ghc-pkg (no need to quote options containing spaces)

--ghcjs-option OPT

give an extra option to ghcjs (no need to quote options containing spaces)

--ghcjs-pkg-option OPT

give an extra option to ghcjs-pkg (no need to quote options containing spaces)

--greencard-option OPT

give an extra option to greencard (no need to quote options containing spaces)

--haddock-option OPT

give an extra option to haddock (no need to quote options containing spaces)

--happy-option OPT

give an extra option to happy (no need to quote options containing spaces)

--haskell-suite-option OPT

give an extra option to haskell-suite (no need to quote options containing spaces)

--haskell-suite-pkg-option OPT

give an extra option to haskell-suite-pkg (no need to quote options containing spaces)

--hmake-option OPT

give an extra option to hmake (no need to quote options containing spaces)

--hpc-option OPT

give an extra option to hpc (no need to quote options containing spaces)

--hsc2hs-option OPT

give an extra option to hsc2hs (no need to quote options containing spaces)

--hscolour-option OPT

give an extra option to hscolour (no need to quote options containing spaces)

--jhc-option OPT

give an extra option to jhc (no need to quote options containing spaces)

--ld-option OPT

give an extra option to ld (no need to quote options containing spaces)

--lhc-option OPT

give an extra option to lhc (no need to quote options containing spaces)

--lhc-pkg-option OPT

give an extra option to lhc-pkg (no need to quote options containing spaces)

--pkg-config-option OPT

give an extra option to pkg-config (no need to quote options containing spaces)

--strip-option OPT

give an extra option to strip (no need to quote options containing spaces)

--tar-option OPT

give an extra option to tar (no need to quote options containing spaces)

--uhc-option OPT

give an extra option to uhc (no need to quote options containing spaces)

--alex-options OPTS

give extra options to alex

--ar-options OPTS

give extra options to ar

--c2hs-options OPTS

give extra options to c2hs

--cpphs-options OPTS

give extra options to cpphs

--gcc-options OPTS

give extra options to gcc

--ghc-options OPTS

give extra options to ghc

--ghc-pkg-options OPTS

give extra options to ghc-pkg

--ghcjs-options OPTS

give extra options to ghcjs

--ghcjs-pkg-options OPTS

give extra options to ghcjs-pkg

--greencard-options OPTS

give extra options to greencard

--haddock-options OPTS

give extra options to haddock

--happy-options OPTS

give extra options to happy

--haskell-suite-options OPTS

give extra options to haskell-suite

--haskell-suite-pkg-options OPTS

give extra options to haskell-suite-pkg

--hmake-options OPTS

give extra options to hmake

--hpc-options OPTS

give extra options to hpc

--hsc2hs-options OPTS

give extra options to hsc2hs

--hscolour-options OPTS

give extra options to hscolour

--jhc-options OPTS

give extra options to jhc

--ld-options OPTS

give extra options to ld

--lhc-options OPTS

give extra options to lhc

--lhc-pkg-options OPTS

give extra options to lhc-pkg

--pkg-config-options OPTS

give extra options to pkg-config

--strip-options OPTS

give extra options to strip

--tar-options OPTS

give extra options to tar

--uhc-options OPTS

give extra options to uhc

--only

Don't reinstall add-source dependencies (sandbox-only)

cabal repl

Usage: cabal repl [COMPONENT] [FLAGS]

If the current directory contains no package, ignores COMPONENT parameters and opens an interactive interpreter session; if a sandbox is present, its package database will be used.

Otherwise, (re)configures with the given or default flags, and loads the interpreter with the relevant modules. For executables, tests and benchmarks, loads the main module (and its dependencies); for libraries all exposed/other modules.

The default component is the library itself, or the executable if that is the only component.

Support for loading specific modules is planned but not implemented yet. For certain scenarios, `cabal exec -- ghci :l Foo` may be used instead. Note that `exec` will not (re)configure and you will have to specify the location of other modules, if required.

Examples:
 cabal repl               The first component in the package
 cabal repl foo           A named component (i.e. lib, exe, test suite)
 cabal repl --ghc-options="-lstdc++"  Specifying flags for interpreter

Flags:

-v, --verbose [n]

Control verbosity (n is 0--3, default verbosity level is 1)

--builddir, --distdir, --distpref DIR

The directory where Cabal puts generated build files (default dist)

--with-alex PATH

give the path to alex

--with-ar PATH

give the path to ar

--with-c2hs PATH

give the path to c2hs

--with-cpphs PATH

give the path to cpphs

--with-gcc PATH

give the path to gcc

--with-ghc PATH

give the path to ghc

--with-ghc-pkg PATH

give the path to ghc-pkg

--with-ghcjs PATH

give the path to ghcjs

--with-ghcjs-pkg PATH

give the path to ghcjs-pkg

--with-greencard PATH

give the path to greencard

--with-haddock PATH

give the path to haddock

--with-happy PATH

give the path to happy

--with-haskell-suite PATH

give the path to haskell-suite

--with-haskell-suite-pkg PATH

give the path to haskell-suite-pkg

--with-hmake PATH

give the path to hmake

--with-hpc PATH

give the path to hpc

--with-hsc2hs PATH

give the path to hsc2hs

--with-hscolour PATH

give the path to hscolour

--with-jhc PATH

give the path to jhc

--with-ld PATH

give the path to ld

--with-lhc PATH

give the path to lhc

--with-lhc-pkg PATH

give the path to lhc-pkg

--with-pkg-config PATH

give the path to pkg-config

--with-strip PATH

give the path to strip

--with-tar PATH

give the path to tar

--with-uhc PATH

give the path to uhc

--alex-option OPT

give an extra option to alex (no need to quote options containing spaces)

--ar-option OPT

give an extra option to ar (no need to quote options containing spaces)

--c2hs-option OPT

give an extra option to c2hs (no need to quote options containing spaces)

--cpphs-option OPT

give an extra option to cpphs (no need to quote options containing spaces)

--gcc-option OPT

give an extra option to gcc (no need to quote options containing spaces)

--ghc-option OPT

give an extra option to ghc (no need to quote options containing spaces)

--ghc-pkg-option OPT

give an extra option to ghc-pkg (no need to quote options containing spaces)

--ghcjs-option OPT

give an extra option to ghcjs (no need to quote options containing spaces)

--ghcjs-pkg-option OPT

give an extra option to ghcjs-pkg (no need to quote options containing spaces)

--greencard-option OPT

give an extra option to greencard (no need to quote options containing spaces)

--haddock-option OPT

give an extra option to haddock (no need to quote options containing spaces)

--happy-option OPT

give an extra option to happy (no need to quote options containing spaces)

--haskell-suite-option OPT

give an extra option to haskell-suite (no need to quote options containing spaces)

--haskell-suite-pkg-option OPT

give an extra option to haskell-suite-pkg (no need to quote options containing spaces)

--hmake-option OPT

give an extra option to hmake (no need to quote options containing spaces)

--hpc-option OPT

give an extra option to hpc (no need to quote options containing spaces)

--hsc2hs-option OPT

give an extra option to hsc2hs (no need to quote options containing spaces)

--hscolour-option OPT

give an extra option to hscolour (no need to quote options containing spaces)

--jhc-option OPT

give an extra option to jhc (no need to quote options containing spaces)

--ld-option OPT

give an extra option to ld (no need to quote options containing spaces)

--lhc-option OPT

give an extra option to lhc (no need to quote options containing spaces)

--lhc-pkg-option OPT

give an extra option to lhc-pkg (no need to quote options containing spaces)

--pkg-config-option OPT

give an extra option to pkg-config (no need to quote options containing spaces)

--strip-option OPT

give an extra option to strip (no need to quote options containing spaces)

--tar-option OPT

give an extra option to tar (no need to quote options containing spaces)

--uhc-option OPT

give an extra option to uhc (no need to quote options containing spaces)

--alex-options OPTS

give extra options to alex

--ar-options OPTS

give extra options to ar

--c2hs-options OPTS

give extra options to c2hs

--cpphs-options OPTS

give extra options to cpphs

--gcc-options OPTS

give extra options to gcc

--ghc-options OPTS

give extra options to ghc

--ghc-pkg-options OPTS

give extra options to ghc-pkg

--ghcjs-options OPTS

give extra options to ghcjs

--ghcjs-pkg-options OPTS

give extra options to ghcjs-pkg

--greencard-options OPTS

give extra options to greencard

--haddock-options OPTS

give extra options to haddock

--happy-options OPTS

give extra options to happy

--haskell-suite-options OPTS

give extra options to haskell-suite

--haskell-suite-pkg-options OPTS

give extra options to haskell-suite-pkg

--hmake-options OPTS

give extra options to hmake

--hpc-options OPTS

give extra options to hpc

--hsc2hs-options OPTS

give extra options to hsc2hs

--hscolour-options OPTS

give extra options to hscolour

--jhc-options OPTS

give extra options to jhc

--ld-options OPTS

give extra options to ld

--lhc-options OPTS

give extra options to lhc

--lhc-pkg-options OPTS

give extra options to lhc-pkg

--pkg-config-options OPTS

give extra options to pkg-config

--strip-options OPTS

give extra options to strip

--tar-options OPTS

give extra options to tar

--uhc-options OPTS

give extra options to uhc

--reload

Used from within an interpreter to update files.

--only

Don't reinstall add-source dependencies (sandbox-only)

cabal sandbox

Usage: cabal sandbox init          [FLAGS]
  or: cabal sandbox delete        [FLAGS]
  or: cabal sandbox add-source    [FLAGS] PATHS
  or: cabal sandbox delete-source [FLAGS] PATHS
  or: cabal sandbox list-sources  [FLAGS]
  or: cabal sandbox hc-pkg        [FLAGS] [--] COMMAND [--] [ARGS]

Sandboxes are isolated package databases that can be used to prevent dependency conflicts that arise when many different packages are installed in the same database (i.e. the user's database in the home directory).

A sandbox in the current directory (created by `sandbox init`) will be used instead of the user's database for commands such as `install` and `build`. Note that (a directly invoked) GHC will not automatically be aware of sandboxes; only if called via appropriate cabal commands, e.g. `repl`, `build`, `exec`.

Currently, cabal will not search for a sandbox in folders above the current one, so cabal will not see the sandbox if you are in a subfolder of a sandbox.

Subcommands:

init:
 Initialize a sandbox in the current directory. An existing package database
 will not be modified, but settings (such as the location of the database)
 can be modified this way.

delete:
 Remove the sandbox; deleting all the packages installed inside.

add-source:
 Make one or more local packages available in the sandbox. PATHS may be
 relative or absolute. Typical usecase is when you need to make a (temporary)
 modification to a dependency: You download the package into a different
 directory, make the modification, and add that directory to the sandbox with
 `add-source`.

 Unless given `--snapshot`, any add-source'd dependency that was modified
 since the last build will be re-installed automatically.

delete-source:
 Remove an add-source dependency; however, this will not delete the
 package(s) that have been installed in the sandbox from this dependency. You
 can either unregister the package(s) via `cabal sandbox hc-pkg unregister`
 or re-create the sandbox (`sandbox delete; sandbox init`).

list-sources:
 List the directories of local packages made available via `cabal
 add-source`.

hc-pkg:
 Similar to `ghc-pkg`, but for the sandbox package database. Can be used to
 list specific/all packages that are installed in the sandbox. For
 subcommands, see the help for ghc-pkg. Affected by the compiler version
 specified by `configure`.

Relevant global configuration keys:
 require-sandbox
 ignore-sandbox

Examples:
 Set up a sandbox with one local dependency, located at ../foo:
   cabal sandbox init
   cabal sandbox add-source ../foo
   cabal install --only-dependencies
 Reset the sandbox:
   cabal sandbox delete
   cabal sandbox init
   cabal install --only-dependencies
 List the packages in the sandbox:
   cabal sandbox hc-pkg list
 Unregister the `broken` package from the sandbox:
   cabal sandbox hc-pkg -- --force unregister broken

Flags:

-v, --verbose [n]

Control verbosity (n is 0--3, default verbosity level is 1)

--snapshot

Take a snapshot instead of creating a link (only applies to 'add-source')

--sandbox DIR

Sandbox location (default: './.cabal-sandbox').

cabal haddock

Usage: cabal haddock [FLAGS]

Requires the program haddock, version 2.x.

Flags:

-v, --verbose [n]

Control verbosity (n is 0--3, default verbosity level is 1)

--builddir, --distdir, --distpref DIR

The directory where Cabal puts generated build files (default dist)

--keep-temp-files

Keep temporary files

--hoogle

Generate a hoogle database

--html

Generate HTML documentation (the default)

--html-location URL

Location of HTML documentation for pre-requisite packages

--for-hackage

Collection of flags to generate documentation suitable for upload to hackage

--executables

Run haddock for Executables targets

--tests

Run haddock for Test Suite targets

--benchmarks

Run haddock for Benchmark targets

--all

Run haddock for all targets

--internal

Run haddock for internal modules and include all symbols

--css PATH

Use PATH as the haddock stylesheet

--hyperlink-source, --hyperlink-sources

Hyperlink the documentation to the source code (using HsColour)

--hscolour-css PATH

Use PATH as the HsColour stylesheet

--contents-location URL

Bake URL in as the location for the contents page

--with-ghc PATH

give the path to ghc

--with-haddock PATH

give the path to haddock

--ghc-option OPT

give an extra option to ghc (no need to quote options containing spaces)

--haddock-option OPT

give an extra option to haddock (no need to quote options containing spaces)

--ghc-options OPTS

give extra options to ghc

--haddock-options OPTS

give extra options to haddock

cabal exec

Usage: cabal exec [FLAGS] [--] COMMAND [--] [ARGS]

A directly invoked GHC will not automatically be aware of any sandboxes: the GHC_PACKAGE_PATH environment variable controls what GHC uses. `cabal exec` can be used to modify this variable: COMMAND will be executed in a modified environment and thereby uses the sandbox package database.

If there is no sandbox, behaves as identity (executing COMMAND).

Note that other cabal commands change the environment variable appropriately already, so there is no need to wrap those in `cabal exec`. But with `cabal exec`, the user has more control and can, for example, execute custom scripts which indirectly execute GHC.

Note that `cabal repl` is different from `cabal exec -- ghci` as the latter will not forward any additional flags being defined in the local package to ghci.

See `cabal sandbox`.

Examples:
 cabal exec -- ghci -Wall
   Start a repl session with sandbox packages and all warnings;
 cabal exec gitit -- -f gitit.cnf
   Give gitit access to the sandbox packages, and pass it a flag;
 cabal exec runghc Foo.hs
   Execute runghc on Foo.hs with runghc configured to use the
   sandbox package database (if a sandbox is being used).

Flags:

-v, --verbose [n]

Control verbosity (n is 0--3, default verbosity level is 1)

cabal user-config

Usage: cabal user-config init
  or: cabal user-config diff
  or: cabal user-config update

When upgrading cabal, the set of configuration keys and their default values may change. This command provides means to merge the existing config in ~/.cabal/config (i.e. all bindings that are actually defined and not commented out) and the default config of the new version.

init: Creates a new config file at either ~/.cabal/config or as specified by --config-file, if given. An existing file won't be overwritten unless -f or --force is given. diff: Shows a pseudo-diff of the user's ~/.cabal/config file and the default configuration that would be created by cabal if the config file did not exist. update: Applies the pseudo-diff to the configuration that would be created by default, and write the result back to ~/.cabal/config.

Flags:

-v, --verbose [n]

Control verbosity (n is 0--3, default verbosity level is 1)

-f, --force

Overwrite the config file if it already exists.

cabal clean

Usage: cabal clean [FLAGS]

Removes .hi, .o, preprocessed sources, etc.

Flags:

-v, --verbose [n]

Control verbosity (n is 0--3, default verbosity level is 1)

--builddir, --distdir, --distpref DIR

The directory where Cabal puts generated build files (default dist)

-s, --save-configure

Do not remove the configuration file (dist/setup-config) during cleaning.  Saves need to reconfigure.

cabal gen-bounds

Usage: cabal gen-bounds [FLAGS]

Generates bounds for all dependencies that do not currently have them. Generated bounds are printed to stdout. You can then paste them into your

Flags:

-v, --verbose [n]

Control verbosity (n is 0--3, default verbosity level is 1)

cabal copy

Usage: cabal copy [FLAGS]

Does not call register, and allows a prefix at install time. Without the --destdir flag, configure determines location.

Flags:

-v, --verbose [n]

Control verbosity (n is 0--3, default verbosity level is 1)

--builddir, --distdir, --distpref DIR

The directory where Cabal puts generated build files (default dist)

--destdir DIR

directory to copy files to, prepended to installation directories

cabal hscolour

Usage: cabal hscolour [FLAGS]

Requires the hscolour program.

Flags:

-v, --verbose [n]

Control verbosity (n is 0--3, default verbosity level is 1)

--builddir, --distdir, --distpref DIR

The directory where Cabal puts generated build files (default dist)

--executables

Run hscolour for Executables targets

--tests

Run hscolour for Test Suite targets

--benchmarks

Run hscolour for Benchmark targets

--all

Run hscolour for all targets

--css PATH

Use a cascading style sheet

cabal register

Usage: cabal register [FLAGS]

Flags:

-v, --verbose [n]

Control verbosity (n is 0--3, default verbosity level is 1)

--builddir, --distdir, --distpref DIR

The directory where Cabal puts generated build files (default dist)

--user

upon registration, register this package in the user's local package database

--global

(default)upon registration, register this package in the system-wide package database

--inplace

register the package in the build location, so it can be used without being installed

--gen-script

instead of registering, generate a script to register later

--gen-pkg-config [PKG]

instead of registering, generate a package registration file

--print-ipid

print the installed package ID calculated for this package

cabal test

Usage: cabal test [FLAGS]
  or: cabal test TESTCOMPONENTS [FLAGS]

If necessary (re)configures with `--enable-tests` flag and builds the test suite.

Remember that the tests' dependencies must be installed if there are additional ones; e.g. with `cabal install --only-dependencies --enable-tests`.

By defining UserHooks in a custom Setup.hs, the package can define actions to be executed before and after running tests.

Flags:

-v, --verbose [n]

Control verbosity (n is 0--3, default verbosity level is 1)

--builddir, --distdir, --distpref DIR

The directory where Cabal puts generated build files (default dist)

--log TEMPLATE

Log all test suite results to file (name template can use $pkgid, $compiler, $os, $arch, $test-suite, $result)

--machine-log TEMPLATE

Produce a machine-readable log file (name template can use $pkgid, $compiler, $os, $arch, $result)

--show-details FILTER

--keep-tix-files

keep .tix files for HPC between test runs

--test-options TEMPLATES

give extra options to test executables (name templates can use $pkgid, $compiler, $os, $arch, $test-suite)

--test-option TEMPLATE

give extra option to test executables (no need to quote options containing spaces, name template can use $pkgid, $compiler, $os, $arch, $test-suite)

-j, --jobs [NUM]

Run NUM jobs simultaneously (or '$ncpus' if no NUM is given).

--with-alex PATH

give the path to alex

--with-ar PATH

give the path to ar

--with-c2hs PATH

give the path to c2hs

--with-cpphs PATH

give the path to cpphs

--with-gcc PATH

give the path to gcc

--with-ghc PATH

give the path to ghc

--with-ghc-pkg PATH

give the path to ghc-pkg

--with-ghcjs PATH

give the path to ghcjs

--with-ghcjs-pkg PATH

give the path to ghcjs-pkg

--with-greencard PATH

give the path to greencard

--with-haddock PATH

give the path to haddock

--with-happy PATH

give the path to happy

--with-haskell-suite PATH

give the path to haskell-suite

--with-haskell-suite-pkg PATH

give the path to haskell-suite-pkg

--with-hmake PATH

give the path to hmake

--with-hpc PATH

give the path to hpc

--with-hsc2hs PATH

give the path to hsc2hs

--with-hscolour PATH

give the path to hscolour

--with-jhc PATH

give the path to jhc

--with-ld PATH

give the path to ld

--with-lhc PATH

give the path to lhc

--with-lhc-pkg PATH

give the path to lhc-pkg

--with-pkg-config PATH

give the path to pkg-config

--with-strip PATH

give the path to strip

--with-tar PATH

give the path to tar

--with-uhc PATH

give the path to uhc

--alex-option OPT

give an extra option to alex (no need to quote options containing spaces)

--ar-option OPT

give an extra option to ar (no need to quote options containing spaces)

--c2hs-option OPT

give an extra option to c2hs (no need to quote options containing spaces)

--cpphs-option OPT

give an extra option to cpphs (no need to quote options containing spaces)

--gcc-option OPT

give an extra option to gcc (no need to quote options containing spaces)

--ghc-option OPT

give an extra option to ghc (no need to quote options containing spaces)

--ghc-pkg-option OPT

give an extra option to ghc-pkg (no need to quote options containing spaces)

--ghcjs-option OPT

give an extra option to ghcjs (no need to quote options containing spaces)

--ghcjs-pkg-option OPT

give an extra option to ghcjs-pkg (no need to quote options containing spaces)

--greencard-option OPT

give an extra option to greencard (no need to quote options containing spaces)

--haddock-option OPT

give an extra option to haddock (no need to quote options containing spaces)

--happy-option OPT

give an extra option to happy (no need to quote options containing spaces)

--haskell-suite-option OPT

give an extra option to haskell-suite (no need to quote options containing spaces)

--haskell-suite-pkg-option OPT

give an extra option to haskell-suite-pkg (no need to quote options containing spaces)

--hmake-option OPT

give an extra option to hmake (no need to quote options containing spaces)

--hpc-option OPT

give an extra option to hpc (no need to quote options containing spaces)

--hsc2hs-option OPT

give an extra option to hsc2hs (no need to quote options containing spaces)

--hscolour-option OPT

give an extra option to hscolour (no need to quote options containing spaces)

--jhc-option OPT

give an extra option to jhc (no need to quote options containing spaces)

--ld-option OPT

give an extra option to ld (no need to quote options containing spaces)

--lhc-option OPT

give an extra option to lhc (no need to quote options containing spaces)

--lhc-pkg-option OPT

give an extra option to lhc-pkg (no need to quote options containing spaces)

--pkg-config-option OPT

give an extra option to pkg-config (no need to quote options containing spaces)

--strip-option OPT

give an extra option to strip (no need to quote options containing spaces)

--tar-option OPT

give an extra option to tar (no need to quote options containing spaces)

--uhc-option OPT

give an extra option to uhc (no need to quote options containing spaces)

--alex-options OPTS

give extra options to alex

--ar-options OPTS

give extra options to ar

--c2hs-options OPTS

give extra options to c2hs

--cpphs-options OPTS

give extra options to cpphs

--gcc-options OPTS

give extra options to gcc

--ghc-options OPTS

give extra options to ghc

--ghc-pkg-options OPTS

give extra options to ghc-pkg

--ghcjs-options OPTS

give extra options to ghcjs

--ghcjs-pkg-options OPTS

give extra options to ghcjs-pkg

--greencard-options OPTS

give extra options to greencard

--haddock-options OPTS

give extra options to haddock

--happy-options OPTS

give extra options to happy

--haskell-suite-options OPTS

give extra options to haskell-suite

--haskell-suite-pkg-options OPTS

give extra options to haskell-suite-pkg

--hmake-options OPTS

give extra options to hmake

--hpc-options OPTS

give extra options to hpc

--hsc2hs-options OPTS

give extra options to hsc2hs

--hscolour-options OPTS

give extra options to hscolour

--jhc-options OPTS

give extra options to jhc

--ld-options OPTS

give extra options to ld

--lhc-options OPTS

give extra options to lhc

--lhc-pkg-options OPTS

give extra options to lhc-pkg

--pkg-config-options OPTS

give extra options to pkg-config

--strip-options OPTS

give extra options to strip

--tar-options OPTS

give extra options to tar

--uhc-options OPTS

give extra options to uhc

--only

Don't reinstall add-source dependencies (sandbox-only)

cabal bench

Usage: cabal bench [FLAGS]
  or: cabal bench BENCHCOMPONENTS [FLAGS]

If necessary (re)configures with `--enable-benchmarks` flag and builds the benchmarks.

Remember that the benchmarks' dependencies must be installed if there are additional ones; e.g. with `cabal install --only-dependencies --enable-benchmarks`.

By defining UserHooks in a custom Setup.hs, the package can define actions to be executed before and after running benchmarks.

Flags:

-v, --verbose [n]

Control verbosity (n is 0--3, default verbosity level is 1)

--builddir, --distdir, --distpref DIR

The directory where Cabal puts generated build files (default dist)

--benchmark-options TEMPLATES

give extra options to benchmark executables (name templates can use $pkgid, $compiler, $os, $arch, $benchmark)

--benchmark-option TEMPLATE

give extra option to benchmark executables (no need to quote options containing spaces, name template can use $pkgid, $compiler, $os, $arch, $benchmark)

-j, --jobs [NUM]

Run NUM jobs simultaneously (or '$ncpus' if no NUM is given).

--with-alex PATH

give the path to alex

--with-ar PATH

give the path to ar

--with-c2hs PATH

give the path to c2hs

--with-cpphs PATH

give the path to cpphs

--with-gcc PATH

give the path to gcc

--with-ghc PATH

give the path to ghc

--with-ghc-pkg PATH

give the path to ghc-pkg

--with-ghcjs PATH

give the path to ghcjs

--with-ghcjs-pkg PATH

give the path to ghcjs-pkg

--with-greencard PATH

give the path to greencard

--with-haddock PATH

give the path to haddock

--with-happy PATH

give the path to happy

--with-haskell-suite PATH

give the path to haskell-suite

--with-haskell-suite-pkg PATH

give the path to haskell-suite-pkg

--with-hmake PATH

give the path to hmake

--with-hpc PATH

give the path to hpc

--with-hsc2hs PATH

give the path to hsc2hs

--with-hscolour PATH

give the path to hscolour

--with-jhc PATH

give the path to jhc

--with-ld PATH

give the path to ld

--with-lhc PATH

give the path to lhc

--with-lhc-pkg PATH

give the path to lhc-pkg

--with-pkg-config PATH

give the path to pkg-config

--with-strip PATH

give the path to strip

--with-tar PATH

give the path to tar

--with-uhc PATH

give the path to uhc

--alex-option OPT

give an extra option to alex (no need to quote options containing spaces)

--ar-option OPT

give an extra option to ar (no need to quote options containing spaces)

--c2hs-option OPT

give an extra option to c2hs (no need to quote options containing spaces)

--cpphs-option OPT

give an extra option to cpphs (no need to quote options containing spaces)

--gcc-option OPT

give an extra option to gcc (no need to quote options containing spaces)

--ghc-option OPT

give an extra option to ghc (no need to quote options containing spaces)

--ghc-pkg-option OPT

give an extra option to ghc-pkg (no need to quote options containing spaces)

--ghcjs-option OPT

give an extra option to ghcjs (no need to quote options containing spaces)

--ghcjs-pkg-option OPT

give an extra option to ghcjs-pkg (no need to quote options containing spaces)

--greencard-option OPT

give an extra option to greencard (no need to quote options containing spaces)

--haddock-option OPT

give an extra option to haddock (no need to quote options containing spaces)

--happy-option OPT

give an extra option to happy (no need to quote options containing spaces)

--haskell-suite-option OPT

give an extra option to haskell-suite (no need to quote options containing spaces)

--haskell-suite-pkg-option OPT

give an extra option to haskell-suite-pkg (no need to quote options containing spaces)

--hmake-option OPT

give an extra option to hmake (no need to quote options containing spaces)

--hpc-option OPT

give an extra option to hpc (no need to quote options containing spaces)

--hsc2hs-option OPT

give an extra option to hsc2hs (no need to quote options containing spaces)

--hscolour-option OPT

give an extra option to hscolour (no need to quote options containing spaces)

--jhc-option OPT

give an extra option to jhc (no need to quote options containing spaces)

--ld-option OPT

give an extra option to ld (no need to quote options containing spaces)

--lhc-option OPT

give an extra option to lhc (no need to quote options containing spaces)

--lhc-pkg-option OPT

give an extra option to lhc-pkg (no need to quote options containing spaces)

--pkg-config-option OPT

give an extra option to pkg-config (no need to quote options containing spaces)

--strip-option OPT

give an extra option to strip (no need to quote options containing spaces)

--tar-option OPT

give an extra option to tar (no need to quote options containing spaces)

--uhc-option OPT

give an extra option to uhc (no need to quote options containing spaces)

--alex-options OPTS

give extra options to alex

--ar-options OPTS

give extra options to ar

--c2hs-options OPTS

give extra options to c2hs

--cpphs-options OPTS

give extra options to cpphs

--gcc-options OPTS

give extra options to gcc

--ghc-options OPTS

give extra options to ghc

--ghc-pkg-options OPTS

give extra options to ghc-pkg

--ghcjs-options OPTS

give extra options to ghcjs

--ghcjs-pkg-options OPTS

give extra options to ghcjs-pkg

--greencard-options OPTS

give extra options to greencard

--haddock-options OPTS

give extra options to haddock

--happy-options OPTS

give extra options to happy

--haskell-suite-options OPTS

give extra options to haskell-suite

--haskell-suite-pkg-options OPTS

give extra options to haskell-suite-pkg

--hmake-options OPTS

give extra options to hmake

--hpc-options OPTS

give extra options to hpc

--hsc2hs-options OPTS

give extra options to hsc2hs

--hscolour-options OPTS

give extra options to hscolour

--jhc-options OPTS

give extra options to jhc

--ld-options OPTS

give extra options to ld

--lhc-options OPTS

give extra options to lhc

--lhc-pkg-options OPTS

give extra options to lhc-pkg

--pkg-config-options OPTS

give extra options to pkg-config

--strip-options OPTS

give extra options to strip

--tar-options OPTS

give extra options to tar

--uhc-options OPTS

give extra options to uhc

--only

Don't reinstall add-source dependencies (sandbox-only)

Files

~/.cabal/config

The defaults that can be overridden with command-line options.

~/.cabal/world

A list of all packages whose installation has been explicitly requested.

Bugs

To browse the list of known issues or report a new one please see  https://github.com/haskell/cabal/labels/cabal-install.