pubgrub-cabal: The PubGrub version solver for cabal packages

[ bsd3, distribution, library ] [ Propose Tags ] [ Report a vulnerability ]

The cabal domain for the pubgrub solver: a package name or one of its automatic flags is a variable, an installed unit or a source release is a value, a dependency's declared range is one symbolic set of instances, and the leaves of every proof are what the request asks for, what a .cabal file states, and what the compiler and the machine rule out.

It provides the translation from GenericPackageDescription and an installed package set into the solver's input (PubGrub.Cabal.Flatten, PubGrub.Cabal.Installed), the rule that picks an instance of a package and states what it entails (PubGrub.Cabal.Provider), and the renderer that prints a failed resolution as a proof in cabal's range syntax (PubGrub.Cabal.Report). Of the cabal ecosystem it needs Cabal-syntax only: the index, the compiler and the installed database are the caller's to supply.


[Skip to Readme]

Downloads

Maintainer's Corner

Package maintainers

For package maintainers and hackage trustees

Candidates

  • No Candidates
Versions [RSS] 0.1.0.0
Change log CHANGELOG.md
Dependencies base (>=4.21 && <4.23), Cabal-syntax (>=3.14 && <3.20), co-log-core (>=0.3.2 && <0.4), containers (>=0.7 && <0.9), pubgrub (>=0.1 && <0.2), text (>=2.1 && <2.2) [details]
Tested with ghc ==9.12.2 || ==9.14.1
License BSD-3-Clause
Copyright (c) 2026 Tweag I/O by Modus Create
Author Andrea Bedini
Maintainer andrea.bedini@moduscreate.com
Uploaded by andreabedini at 2026-11-09T05:08:26Z
Category Distribution
Home page https://github.com/tweag/pubgrub-hs
Bug tracker https://github.com/tweag/pubgrub-hs/issues
Source repo head: git clone https://github.com/tweag/pubgrub-hs.git(pubgrub-cabal)
Distributions
Downloads 2 total (2 in the last 30 days)
Rating (no votes yet) [estimated by Bayesian average]
Your Rating
  • λ
  • λ
  • λ
Status Docs uploaded by user
Build status unknown [no reports yet]

Readme for pubgrub-cabal-0.1.0.0

[back to package description]

pubgrub-cabal

The cabal domain for the pubgrub solver: a package name or one of its automatic flags is a variable, an installed unit or a source release is a value, a dependency's declared range is one symbolic set of instances, and the leaves of every proof are what the request asks for, what a .cabal file states, and what the compiler and the machine rule out.

  • PubGrub.Cabal is the variables and the facts; PubGrub.Cabal.Value and PubGrub.Cabal.InstanceSet are the values and their sets.
  • PubGrub.Cabal.Flatten reads a GenericPackageDescription into the solver's input, with the machine passed in as plain data.
  • PubGrub.Cabal.Installed is the installed package set and its unit graph.
  • PubGrub.Cabal.Provider.mkExpand is the rule that picks an instance of a package and states what it entails, over a ReleaseSource the caller supplies. releaseOf reduces a GenericPackageDescription to the Release a source reads.
  • PubGrub.Cabal.Report prints a failed resolution as a proof in cabal's range syntax.

Of the cabal ecosystem it depends on Cabal-syntax only. The Hackage index, the compiler and the installed database are the caller's to supply.