Request for feedback on spec/proposal for distributing package collections via hackage

Duncan Coutts duncan.coutts at googlemail.com
Tue Jul 14 19:48:22 UTC 2015


On Tue, 2015-07-14 at 13:52 +0100, Duncan Coutts wrote:

> Syntax:
> 
> Package collection names and versions exactly follow those of package
> names (but they live in a different namespace). For example,
> "stackage-lts-2.9", or "deprecated-343" (the latter being a "rolling"
> collection with a meaningless monotonically increasing version).
> 
> A collection distributed in the archive format is just a text file with
> one entry per line, such as:
> 
>         foo-1.0
>         foo-1.1
>         bar >= 3 && < 4
>         bar +this -that
> 
> So each line can be one of:
>       * a simple package id
>       * a package version range, using Cabal version range syntax
>       * a package name with a flag assignment, + for on, - for off

Oops, one thing I forgot to mention is another entry syntax:

        baz

That is, a package name with no version or range at all. This is
shorthand for the version range style with no version constraint (.cabal
files have a slightly odd syntax for that, "baz -any").

This is actually useful if you want to define a negative collection,
e.g. all the packages that are deprecated (as a whole, not just single
versions).

Duncan



More information about the cabal-devel mailing list