NAME
cabal-module
—
devel/cabal port module for building
Haskell programs
DESCRIPTION
This manual page documents the behavior of setting
MODULES=devel/cabal
in the
ports(7)
tree.
Uses cabal(1) to automate packaging Haskell binary projects. During
fetch
, the dependent packages enumerated in
MODCABAL_MANIFEST
are downloaded into the
hackage subdirectory of
DIST_SUBDIR
. During
post-extract
, the dependency sources are unpacked
into WORKDIR
. Special care is taken to replace
.cabal files if they are updated post-release on hackage. A custom
cabal.project.local file gets created to direct
cabal(1) to
the extracted packages and prevent any network interaction. In rare cases a
custom cabal.project is required. This module
automatically copies such files from port's files
into WRKSRC
. During build
,
cabal(1) is
invoked to build the executables listed in
MODCABAL_EXECUTABLES
.
lang/ghc and
devel/cabal-install are added to
BUILD_DEPENDS
. This module uses
MASTER_SITES9
to download the sources from
hackage.
This module parameters:
- MODCABAL_STEM
- Name of the package on hackage (required).
- MODCABAL_VERSION
- Version of the package (required).
- MODCABAL_MANIFEST
- Hackage dependencies required by this package, see below.
- MODCABAL_DATA_DIR
- data-dir from .cabal file (if executable needs this)
- MODCABAL_REVISION
- Numeric revision of .cabal file on hackage if one is needed on top of .cabal file contained in the .tar.gz file.
- MODCABAL_BUILD_ARGS
- passed to cabal v2-build
- MODCABAL_FLAGS
- custom feature
--flags
for cabal(1). - MODCABAL_EXECUTABLES
- Executable target in .cabal file, defaults to hackage package name in
MODCABAL_STEM
.
This module adds currently adds no make(1) targets.
DEPENDENCY MANIFEST
Hackage dependencies are listed in
MODCABAL_MANIFEST
as space separate triples of
package
version
revision.
They correspond to the main package values of
MODCABAL_STEM
MODCABAL_VERSION
MODCABAL_REVISION
.
The contents of MODCABAL_MANIFEST
is
normally generated by devel/cabal-bundler which
creates a working build plan from hackage dependency information.
EXAMPLES
To create a new Haskell binary port one would install cabal-bundler port, look up the chosen package version number on hackage. E.g.
$ cabal-bundler
--openbsd
cpphs-1.20