CABAL-MODULE(5) - File Formats Manual #
CABAL-MODULE(5) - File Formats Manual
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
SEE ALSO #
cabal(1), port-modules(5)
OpenBSD 7.5 - July 25, 2021