[Haskell] Re: Trying to install binary-0.4

Udo Stenzel u.stenzel at web.de
Thu Oct 11 19:27:11 EDT 2007


Don Stewart wrote:
> Since you're not using ghc 6.8, you should use binary 0.3 :)

That was PC for "sorry, GHC 6.6 is no longer supported and don't even
ask about 6.4"

The other day I tried to install the tar library on a GHC 6.4.  It's
nearly impossible.  The old base library gets in the way of installing
bytestring, binary 0.4 absolutely needs bytestring 0.9 and tar
absolutely needs binary 0.4, but still won't compile because
System.Posix is now called System.PosixCompat which actually makes it
incompatible.  Oh, and everything needs a new cabal, but the setup
scripts still picks up the wrong one (apparently, since
Distribution.Simple is supposed to be there but GHC doesn't find it).

Wanna know the solution?

- install exactly one version of cabal, 1.1.6.2, and *remove* all
  others,
- ask ghc-pkg for the description of base, then edit Data.ByteString out
  of that and re-register it,
- install bytestring 0.9,
- install binary 0.4,
- edit the Setup.lhs of tar (it still won't run, even though it should),
- edit the source of tar, changing System.PosixCompat to System.Posix,
- install it.

Should I mention that this is made even more difficult by not being root
on the machine in question?

All this happened with libraries that look as if they are supposed to be
stable, but absolutely nothing works right out of the box.  Oh, and
Cabal Configurations will make it worse, not better.

Here's what should be done, imho:

- Rename 'base' ASAP and especially before GHC 6.8 comes out, call it
  'foundation' or something else.  If you want to keep the name 'base',
  make sure Cabal considers 'base-2.x' a different library than
  'base-3.x'.
- Provide a replacement configuration for GHC 6.6 and 6.4 (yes, that one
  is still alive!) that removes the conflict between 'base' and
  'bytestring' and pretends to provide bytestring, containers, array,
  etc.
- Provide a known good cabal.  Make sure it installs on GHC 6.6 and 6.4.
- Start fixing dependencies.
- Refrain from renaming stuff.  System.Posix is a fine name.
- Refrain from always using the latest interface of everything.

While we're at it, the ability to have multiple versions of a library
installed under the same name is a recipe for desaster, too.  It should
be dropped, instead implementing Eternal Compatibility in Theory by
encoding version numbers in module names.

Sorry for the rant, but the situation was actually better before Cabal
tried to fix everything and in the process broke both versions of GHC
that are in widespread use right now.


-Udo

-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 189 bytes
Desc: Digital signature
Url : http://www.haskell.org/pipermail/haskell/attachments/20071012/b11d04f8/attachment-0001.bin


More information about the Haskell mailing list