[Haskell-cafe] Cabal dependency hell

Maciej Piechotka uzytkownik2 at gmail.com
Mon Mar 8 08:33:08 EST 2010


While I love Haskell it's packaging system have some problems -
especially with parsec.

Currently I'm not able to install an practically anything using cabal
due to version mismatches (or at least packages linking to both version
of parsec).

I found the following problems in various cabal packages (the examples
are only examples - please do not be offended):
- The constraints are too loose. It is written that package works with
'>0.6 && <1' but in 0.8 the API has been changed (example of tagsoup &
hxt. Fixed hxt versions depends on ghc 6.12... and ghc 6.10 if you
change 2 lines in cabal file)
- The constraints are too tight. It is written that package works with
'parsec <3' but it can run with 3.0 and 3.1 (a lot of packages)

Additionally:
- Monomorphism restriction & autodetection of types may cause that
extending interface (such as changing signature from a -> IO a to
MonadIO m => a -> m a) may break some programs
- You cannot change the restrictions on already submitted programs. If I
figure out that due to minor change my package does not work with parsec
3.1 I can push the new version with fix but there is no way to mark
package on hackage as 'this version is not compatible with parsec >=3.1'

I understand that it is not problem only with haskell/cabal but also
with many other packaging systems - especially those language-specific.
I understand the need of ability of changing API (and haskell-specific
problem what constitutes as API change). However I hope that some
improvements are possible.

Best regards
PS. I understand that content may be flame-gen. I am sorry in advance if
such circumstances happen. However I believe that possible improvements
in process are worth the risk.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 836 bytes
Desc: This is a digitally signed message part
Url : http://www.haskell.org/pipermail/haskell-cafe/attachments/20100308/29ed240e/attachment.bin


More information about the Haskell-Cafe mailing list