mietek/halcyon

Improve Stackage support

mietek opened this issue · 6 comments

Using a particular Stackage snapshot appears to be a good alternative to explicitly specifying version constraints.

This is related to #40.

Stockage might miss some packages though. E.g.

  • regex-compat-tdfa
  • gitlib-libgit2
  • RSA

Thus, building with hackage might work, while building with stackage might not. (Though new packages are constantly added). This is where a stockage cabal.config gives you best of both worlds right now.

With 77253b8, when using Stackage as the HALCYON_CABAL_REMOTE_REPO, Halcyon should no longer emit warnings about version constraints not being declared, and should no longer re-run cabal update daily.

It should be possible to ask Halcyon to pull in a particular Stackage cabal.config, even if it wasn’t included in the source directory — just as it is possible to specify HALCYON_CONSTRAINTS on the command-line.

Using a Stackage cabal.config would require changing the assumption that a constraints file (either .halcyon/constraints or cabal.config) for a particular app should list the complete set of packages which are the app’s direct or indirect dependencies, as generated by cabal freeze.

Switching from cabal freeze to cabal install --dry-run is likely to help (#52).

It’s worth noting that the notion of a constraints file, named cabal.freeze, was mentioned in the original cabal freeze proposal, which was explicitly inspired by the features of Gemfile.lock (haskell/cabal#1502).

Unfortunately, cabal.freeze didn’t make it into cabal-install, due to lack of time (haskell/cabal#1519).

CC @chrisdone @snoyberg @gregwebs @benarmston

It wan't due to a lack of time, it was due to Johan mandating his design decision on the matter.

I’m sorry. This project is no longer maintained.