[Haskell] Re: Trying to install binary-0.4

Udo Stenzel u.stenzel at web.de
Thu Oct 18 19:00:33 EDT 2007

Don Stewart wrote:
> If I understand correctly, the main issue for Udo is simply that the
> MonadFix instance is required by his code, and isn't available in binary
> 0.3 -- the version to be used on earlier GHCs. Is that right Udo?

No, the issue is that nothing works.  It turns out that I actually
wanted the MonadFix instance for something unrelated, only at about the
same time (and using runGetState, I can even work around that if I
want).  Here's the story of how not to intall tar-1.0 on GHC 6.4:

- I'm on a Ubuntu system, GHC 6.4 has been installen from .deb packages,
  my local GHC config is empty.

- I unpack tar-1.0 and try to run "Setup configure" on it

  => module "Distribution.Simple" does not export "UserHooks(confHook)"

- I need a more recent cabal, my choice is cabal-, which install

- back to tar-1.0

  => base >= 2.0 is required,
  => unix-1.0 is used for unix-any

  This is already messed up, tar wants unix-compat, not unix-any.  (Or
  is it?  See below.) Apparently, it is a fatal error to have a dash in
  any package name.  This explains why System.PosixCompat will never be
  found, no matter how often I install it.

- Since binary is also needed, I'll now install binary-0.3

  => could not find module "Data.ByteString"

- So I need ByteString.  It is not in Hackage.  Googling around leads me
  to http://www.cse.unsw.edu.au/~dons/fps.html, where I download
  fps-0.7, since fps is what binary.cabal mentions in a comment.

- fps-0.7 install flawlessly.

- back to building binary

  => constructor LPS is not found

- no newer fps is available, I get bytestring from darcs

- bytestring wants a newer cabal.  But my patience is already running
  out, so instead I edit the cabal file, and it installs.

- back to building binary

  => module "Data.ByteString.Base" not found

At this point I'm fed up, delete the whole setup and go back to the
one I already hacked up to work with binary-0.4.  Getting binary-0.4
and hammering it into shape to run on GHC 6.4 would have been the next
step anyway, and after that, tar-1.0 needs to be edited to refer to
System.Posix and then it would probably work.  I dimply remember that it
was also impossible to install unix-compat because the wrong cabal was
picked up and I ended up throwing out unix-compat completely.

Okay, summarizing, what did cabal do for me?  Well, it helped me install
a new version of cabal and an obsolete version of something else.
Sorry, but this whole experience is a huge turnoff.  With things going
that smoothly, I'm better off using ghc --make and distributing the
stuff I cannot rely on directly with my code.

Now here's the story for GHC 6.6:

- I'm on Debian testing, GHC 6.6.1 is installed, cabal is  I'm
  in a fresh user account without local additions to GHC.

- download tar-1.0, unpack and configure.  Binary is needed.

- download binary-0.3, installs flawlessly.

- back to tar-1.0.  Now this is weird:

 => Dependency unix-any: using unix-2.1
 => cannot satisfy dependency unix-compat>=0.1

 Why does it want *both* unix and unix-compat?  The .cabal file mentions
 only one of them, unix-compat.

- download unix-compat, installs flawlessly.

- tar works now

So things look a lot better on GHC 6.6, but only because I used
binary-0.3 instead of 0.4, and I did this only because Don recently
mentioned it.  Suppose I tried binary-0.4 (because I want 'instance
MonadFix Get' or because I don't know better):

- dependencies on split base cannot be fulfilled.  I have to edit the
  cabal file.

- bytestring needs to be updated

- a new cabal is needed

- the description of base has to be patched to remove the conflict with

- binary-0.4 installs now

- try to configure tar-1.0

  => Could not find module `Distribution.Setup'

This is no fun at all.  Not only do I have to work around the
incompatible changes in base, the interface of Cabal also changed in an
incompatible way.

My teachers could easily have ridden with Jesse James for all the time
they stole from me. -- Richard Brautigan
-------------- 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/20071019/8d80ad10/attachment-0001.bin

More information about the Haskell mailing list