OpenBSD manual page server

Manual Page Search Parameters

CABAL-MODULE(5) File Formats Manual CABAL-MODULE(5)

cabal-moduledevel/cabal port module for building Haskell programs

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:

Name of the package on hackage (required).
Version of the package (required).
Hackage dependencies required by this package, see below.
data-dir from .cabal file (if executable needs this)
Numeric revision of .cabal file on hackage if one is needed on top of .cabal file contained in the .tar.gz file.
passed to cabal v2-build
custom feature --flags for cabal(1).
Executable target in .cabal file, defaults to hackage package name in MODCABAL_STEM.

This module adds currently adds no make(1) targets.

Hackage dependencies are listed in MODCABAL_MANIFEST as space separate triples of . 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.

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

cabal(1), port-modules(5)

July 25, 2021 OpenBSD-current