7. Cabal file format changelog¶
7.1. Changes in 2.4¶
- Wildcard matching has been expanded. All previous wildcard
expressions are still valid; some will match strictly more files
than before. Specifically:
- Double-star (
**
) wildcards are now accepted for recursive matching immediately before the final slash; they must be followed by a filename wildcard (e.g.,foo/**/*.html
is valid;foo/**/bar/*.html
andfoo/**/**/*.html
,foo/**/bar.html
are all invalid). As**
was an error in globs before, this does not affect any existing.cabal
files that previously worked. - Wildcards now match when the pattern’s extensions form a suffix of
the candidate file’s extension, rather than requiring strict
equality (e.g., previously
*.html
did not matchfoo.en.html
, but now it does).
- Double-star (
- License fields use identifiers from SPDX License List version
3.2 2018-07-10
7.2. cabal-version: 2.2
¶
- New
common
stanzas andimport
pseudo-field added. - New
library:virtual-modules
field added. - New
cxx-sources
andcxx-options
fields added for suppporting bundled foreign routines implemented in C++. - New
asm-sources
andasm-options
fields added for suppporting bundled foreign routines implemented in assembler. - New
extra-bundled-libraries
field for specifying additional custom library objects to be installed. - Extended
if
control structure with support forelif
keyword. - Changed default rules of
build-type
field to infer “build-type:” for “Simple”/”Custom” automatically. license
field syntax changed to require SPDX expression syntax (using SPDX license list version3.0 2017-12-28
).- Allow redundant leading or trailing commas in package fields (which
require commas) such as
build-depends
.
7.3. cabal-version: 2.0
¶
- New
library:signatures
andmixins
fields added for supporting Backpack_. - New
build-tool-depends
field added for adding build-time dependencies of executable components. - New
custom-setup:autogen-modules
field added for declaring modules which are generated at build time. - Support for new PVP caret-style version operator (
^>=
) added tobuild-depends
. - Add support for new
foreign-library
stanza. - Add support for internal library stanzas.
- New CPP Macro
CURRENT_PACKAGE_VERSION
.
7.4. cabal-version: 1.24
¶
- New
custom-setup
stanza andcustom-setup:setup-depends
field added for specifying dependencies of customSetup.hs
scripts. - CPP Macros
VERSION_$pkgname
andMIN_VERSION_$pkgname
are now also generated for the current package. - New CPP Macros
CURRENT_COMPONENT_ID
andCURRENT_PACKAGE_KEY
. - New
extra-framework-dirs
field added for specifying extra locations to find OS X frameworks.
7.5. cabal-version: 1.22
¶
- New
library:reexported-modules
field. - Support for
-none
version constraint added tobuild-depends
. - New
license
typeISC
added.
7.6. cabal-version: 1.20
¶
- Add support for new
license-files
field for declaring multiple license documents. - New CPP Macro
MIN_TOOL_VERSION_$buildtool
. - New
license
typesBSD2
andMPL-2.0
added.
7.7. cabal-version: 1.18
¶
- Add support for new
extra-doc-files
field for specifying extra file assets referenced by the Haddock documentation. - New
license
typeAGPL
andAGPL-3
added. - Add support for specifying a C/C++/obj-C source file in
executable:main-is
field. - Add
getSysconfDir
operation toPaths_
API.
7.8. cabal-version: 1.16
¶
Todo
this needs to be researched; there were only few changes between 1.12 and 1.18;
7.9. cabal-version: 1.12
¶
- Change syntax of
cabal-version
to support the new recommendedcabal-version: x.y
style