1

I'm having trouble running haste-boot --force --local (though the same thing also happens when booting the latest cabal version with plain haste-boot). It makes some progress, then fails out with

cabal: Error: some packages failed to install:
bytestring-0.10.4.1 failed during the building phase. The exception was:
ExitFailure 1
haste-lib-0.4 depends on bytestring-0.10.4.1 which failed to install
Command '/home/inaimathi/.cabal/bin/haste-inst' failed with error code 1

I've since manually installed bytestring-0.10.4.1 with cabal install so that:

~/projects/haste-compiler $ cabal install bytestring-0.10.4.1
Resolving dependencies...
All the requested packages are already installed:
bytestring-0.10.4.1
Use --reinstall if you want to reinstall anyway.
~/projects/haste-compiler $

but the haste version still isn't cooperating.

~/projects/haste-compiler $ haste-inst install bytestring-0.10.4.1 haste-inst install bytestring-0.10.4.1 
Resolving dependencies...
In order, the following will be installed:
bytestring-0.10.4.1 (reinstall) changes: base-4.6.0.1 added, deepseq-1.4.0.0
added, integer-gmp-0.5.0.0 added
Warning: Note that reinstalls are always dangerous. Continuing anyway...
Configuring bytestring-0.10.4.1...
Building bytestring-0.10.4.1...
Preprocessing library bytestring-0.10.4.1...
hastec: user error (Haste needs to be rebooted; please run haste-boot)
Failed to install bytestring-0.10.4.1
cabal: Error: some packages failed to install:
bytestring-0.10.4.1 failed during the building phase. The exception was:
ExitFailure 1
~/projects/haste-compiler $ 

Based on that error message, it looks like installing the appropriate bytestring version with haste-inst requires that I run haste-boot first, but haste-boot is failing because of an error related to installing bytestring.

Any ideas on what I can do here?

EDIT:

The relevant snippet seems to happen much earlier than the actual error in installation:

...
Data/ByteString/Internal.hs:212:10:
    No instance for (Control.DeepSeq.GNFData
                       (GHC.Generics.Rep ByteString))
      arising from a use of `Control.DeepSeq.$gdmrnf'
    Possible fix:
      add an instance declaration for
      (Control.DeepSeq.GNFData (GHC.Generics.Rep ByteString))
    In the expression: (Control.DeepSeq.$gdmrnf)
    In an equation for `rnf': rnf = (Control.DeepSeq.$gdmrnf)
    In the instance declaration for `NFData ByteString'
Failed to install bytestring-0.10.4.1
...

Edit 2: Jefffrey, the terminal session you requested would put this post above the 30000 character limit. Here's a pastebin link to it instead.

Inaimathi
  • 13,853
  • 9
  • 49
  • 93
  • Are you using sandboxes? If not, use sandboxes. If so, delete the sandbox and make a new sandbox an try again. – Shoe Dec 22 '14 at 07:31
  • `bytestring-0.10.4.1 (reinstall) changes: base-4.6.0.1 added, deepseq-1.4.0.0 added, integer-gmp-0.5.0.0 added' This means that cabal decides it needs the latter packages, and then must rebuild `bytestring` against the updated depenencies. Firstly, you should never try to reinstall base (or integer-gmp, probably). If you need a version of a package which requires a version of base you don't have, either change the cabal file (because the bounds are too strict, which probably isn't the case here) or get the appropriate version of ghc. Also, use cabal sandboxes! – user2407038 Dec 22 '14 at 07:31
  • @user2407038 - Sandboxes seem to require me to install `cabal` from source. Why is cabal bothering to re-install `bytestring-0.10.4.1` at all when I already have that precise version available? Is there any way to make it skip that step? – Inaimathi Dec 22 '14 at 13:55
  • @Jefffrey - Now that I'm using sandboxes, `haste-boot --local` instead makes **no** progress and errors with `ghc-pkg: cannot find package populate-setup-exe-cache`. I'm assuming this is because `haste` now installs binaries in its local `.cabal-sandbox/bin/` rather than in `~/.cabal/bin/`. Any ideas? – Inaimathi Dec 22 '14 at 14:26
  • do a `cabal sandbox delete` (or `cabal sandbox remove`, I don't remember which one it is), then `cabal sandbox init` and then do all the procedure once again and post everything you get in the shell here (including your commands). – Shoe Dec 22 '14 at 16:02
  • Just add `./cabal-sandbox/bin/` or whatever directory you want to your PATH if haste-boot needs to use binaries from some other process. The reason that `bytestring` is reinstalled is because cabal decides to install other packages based on some requirements of your build, and the version of one of those packages is different than that against which bytestring is built. – user2407038 Dec 23 '14 at 03:08
  • @Jefffrey - done (though I've had to link the actual transcript as it's quite a bit larger than 30k characters) – Inaimathi Dec 23 '14 at 04:53

0 Answers0