[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-1.1.6.2, which install
  flawlessly.

- 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 1.1.6.2.  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
  base

- 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.


-Udo
-- 
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