hpack

A modern format for Haskell packages

https://github.com/sol/hpack#readme

Version on this page:0.31.2
LTS Haskell 22.37:0.36.1
Stackage Nightly 2024-10-11:0.37.0
Latest on Hackage:0.37.0

See all snapshots hpack appears in

MIT licensed
Maintained by Simon Hengel
This version can be pinned in stack with:hpack-0.31.2@sha256:c86aba85013358c2bea1e602d3582741e4a4393df388c65539d3602b7e6eef8d,4406

Module documentation for 0.31.2

Changes

Changes in 0.31.2

  • Add default value for maintainer (see #339)
  • Escape commas and spaces in filenames when generating cabal files

Changes in 0.31.1

  • Show the header when printing to stdout (see #331)
  • Add help for --numeric-version(see #337)

Changes in 0.31.0

  • Add mixin to the fields read by dependencies when they are objects (see #318)
  • hpack now returns with a successful exit code if the .cabal file is up to date, even if it was generated by a newer version of hpack.

Changes in 0.30.0

  • Warn on duplicate fields (see #283)
  • Always render cabal-version as x.y instead of >= x.y so that cabal check does not complain (see #322)
  • Extend build-tools so that it subsumes Cabal’s build-tools and build-tool-depends (see #254)
  • Add support for system-build-tools
  • Keep declaration order for literal files in c-sources (and other fields that accept glob patterns). This is crucial as a workaround for https://ghc.haskell.org/trac/ghc/ticket/13786 (see #324)

Changes in 0.29.7

  • Expose more stuff from Hpack.Yaml so that it can be used by third parties

Changes in 0.29.6

  • Add spec-version (see #300)

Changes in 0.29.5

  • Fix a regression related to indentation sniffing (close #310)

Changes in 0.29.4

  • Desugar ^>= when dependency is a string (see #309)
  • Add support for Apache, MPL and ISC when inferring license (see #305)

Changes in 0.29.3

  • Desugar ^>= for compatibility with Cabal < 2 (see #213)
  • Add support for GPL, LGPL and AGPL when inferring license (see #305)

Changes in 0.29.2

  • Add missing extra-source-files (see #302)

Changes in 0.29.1

  • Infer license from license-file

Changes in 0.29.0

  • Put the cabal-version at the beginning of the generated file. This Is required with cabal-version: 2.1 and higher. (see #292)
  • With cabal-version: 2.1 or higher omit >= when rendering (see #292)
  • Require cabal-version: 2.2 when SPDX license identifiers are used (see #292)
  • Map cabal-style licenses to SPDX license identifiers when cabal-version is 2.2 or higher (see #292)

Changes in 0.28.2

  • Exit with exitFailure on AlreadyGeneratedByNewerHpack or ExistingCabalFileWasModifiedManually in Hpack.printResult

Changes in 0.28.1

  • GHC 8.4.1 compatibility

Changes in 0.28.0

  • Add support for cxx-options and cxx-sources (see #205)
  • Add support for data-dir (see #100)
  • Generate valid .cabal files when verbatim is used top-level (see #280)

Changes in 0.27.0

  • Local defaults are now resolved relative to the file they are mentioned in, not the CWD that hpack is invoked from.

Changes in 0.26.0

  • Major refactoring of the exposed API (much cleaner now, but lot’s of breaking changes!)
  • Remove Git conflict markers before checking the hash of any existing .cabal files (equivalent to git checkout --ours). This allows to regenerate the .cabal file on conflicts when rebasing without passing -f in some cases and helps with preserving the formatting.
  • Allow local files to be used as defaults (#248)

Changes in 0.25.0

  • Keep non-existing literal files on glob expansion (see #101)

Changes in 0.24.0

  • Add support for verbatim Cabal escape hatch
  • Allow version be a numbers
  • Ignore fields that start with an underscore everywhere, not just globally

Changes in 0.23.0

  • Add support for custom decoders to allow for alternate syntax (e.g. Dhall)
  • generated-exposed-modules and generated-other-modules, for populating the autogen-modules field (#207).
  • Corrected cabal-version setting for reexported-modules inside a conditional.

Changes in 0.22.0

  • Add support for defaults
  • Add --numeric-version
  • Add support for signatures
  • extra-doc-files requires setting cabal-version to at least 1.18; this is now done properly.
  • Accept bool for condition (see #230)

Changes in 0.21.2

  • Fix a bug in module inference for conditionals (see #236)
  • Add support for extra-doc-files.
  • Add support for pkg-config-dependencies

Changes in 0.21.1

  • Allow dependency constraints to be numbers (see #234)

Changes in 0.21.0

  • Accept section-specific fields in conditionals (see #175, thanks to Scott Fleischman)
  • New section: internal-libraries, for Cabal 2’s internal libraries (see #200).

Changes in 0.20.0

  • Do not overwrite any existing cabal file if it has been modified manually

Changes in 0.19.3

  • Add support for frameworks and extra-frameworks-dirs

Changes in 0.19.2

  • Compatibility with Glob >= 0.9.0

Changes in 0.19.1

  • Add IsList instance for Dependencies

Changes in 0.19.0

  • Add Paths_* module to executables (see #195, for GHC 8.2.1 compatibility)
  • Allow specifying dependencies as a hash (see #198)

Changes in 0.18.1

  • Output generated cabal file to stdout when - is given as a command-line option (see #113)
  • Recognize .chs, .y, .ly and .x as Haskell modules when inferring modules for

Changes in 0.18.0

  • Make executable a shortcut of executables: { package-name: ... }
  • Add support for ghcjs-options and js-sources (see #161)
  • Allow license-file to be a list
  • Accept input file on command-line (see #106)
  • Add Paths_* when no modules are specified (see #86)

Changes in 0.17.1

  • Do not descend into irrelevant directories when inferring modules (see #165)

Changes in 0.17.0

  • Added custom-setup section
  • Add support for !include directives

Changes in 0.16.0

  • Warn when name is missing
  • Support globs in c-sources
  • Use binary I/O for cabal files avoiding problems with non-UTF-8 locales
  • Fix rendering of . as directory (cabal syntax issue)