[Haskell-cafe] hmp3 compilation problem

Gwern Branwen gwern0 at gmail.com
Sun May 18 12:36:21 EDT 2008

On 2008.05.09 08:52:37 +0930, Levi Stephen <levi.stephen at gmail.com> scribbled 1.3K characters:
> Hi,
> I am trying to compile hmp3. I have the version from darcs at
> http://code.haskell.org/~dons/code/hmp3
> I am getting the following errors:
> Tree.hs:190:14:
>    No instance for (Binary FilePathP)
>      arising from a use of `get' at Tree.hs:190:14-16
>    Possible fix: add an instance declaration for (Binary FilePathP)
>    In a 'do' expression: nm <- get
>    In the expression:
>        do nm <- get
>           i <- get
>           return (File nm i)
>    In the definition of `get':
>        get = do nm <- get
>                 i <- get
>                 return (File nm i)
> Tree.hs:236:31:
>    Couldn't match expected type `L.ByteString'
>           against inferred type
> `bytestring-'
>    In the second argument of `L.writeFile', namely
>        `(compress (encode s))'
>    In the expression: L.writeFile f (compress (encode s))
>    In the definition of `writeTree':
>        writeTree f s = L.writeFile f (compress (encode s))
> Tree.hs:240:46:
>    Couldn't match expected type
> `bytestring-'
>           against inferred type `L.ByteString'
>    In the first argument of `decompress', namely `s'
>    In the first argument of `decode', namely `(decompress s)'
>    In the first argument of `return', namely `(decode (decompress s))'
> Any help is much appreciated.
> Thanks,
> Levi

I don't know about the binary problem (perhaps hmp3 needs a more recent Data.Binary than it declares?), but the latter two errors are common and unpleasant. They come from various libraries being linked against different versions of ByteString. Development versions of Cabal can warn you about this in the configure step:

Warning: This package indirectly depends on multiple versions of the same
package. This is highly likely to cause a compile failure.
package hmp3-1.5.1 requires bytestring-
package zlib- requires bytestring-
package pcre-light-0.3.1 requires bytestring-
package nanocurses-1.5.1 requires bytestring-
package binary-0.4.2 requires bytestring-

The solution, currently, is to reinstall all conflicting packages, being very careful that they all link in the same version of bytestring.

Clandestine SBS electronic NADDIS Intelligence WHCA Chavez real E.T. boobytraps
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 189 bytes
Desc: not available
Url : http://www.haskell.org/pipermail/haskell-cafe/attachments/20080518/b638fd36/attachment.bin

More information about the Haskell-Cafe mailing list