Question

I am trying to install HTF. However after I cabal install HTF I get this:

Resolving dependencies...
Configuring HTF-0.10.0.7...
Warning: This package indirectly depends on multiple versions of the same
package. This is highly likely to cause a compile failure.
package regex-base-0.93.2 requires mtl-2.0.1.0
package aeson-0.6.0.2 requires mtl-2.1.2
package HTF-0.10.0.7 requires mtl-2.1.2
package mtl-2.0.1.0 requires transformers-0.2.2.0
package transformers-base-0.4.1 requires transformers-0.3.0.0
package mtl-2.1.2 requires transformers-0.3.0.0
package monad-control-0.3.1.4 requires transformers-0.3.0.0
Building HTF-0.10.0.7...
Preprocessing library HTF-0.10.0.7...
ghc: could not execute: cpphs
cabal: Error: some packages failed to install:
HTF-0.10.0.7 failed during the building phase. The exception was:
ExitFailure 1

I have tried installing other versions, but have gotten different problems. For example, with cabal install 'HTF <= 0.1' I get the following:

Resolving dependencies...
Downloading QuickCheck-1.2.0.1...
Configuring QuickCheck-1.2.0.1...
Building QuickCheck-1.2.0.1...
Preprocessing library QuickCheck-1.2.0.1...
[1 of 8] Compiling Test.QuickCheck  ( Test/QuickCheck.hs, dist/build/Test/QuickCheck.o )
[2 of 8] Compiling Test.QuickCheck.Batch ( Test/QuickCheck/Batch.hs, dist/build/Test/QuickCheck/Batch.o )
[3 of 8] Compiling Test.QuickCheck.Utils ( Test/QuickCheck/Utils.hs, dist/build/Test/QuickCheck/Utils.o )
[4 of 8] Compiling Test.QuickCheck.Poly ( Test/QuickCheck/Poly.hs, dist/build/Test/QuickCheck/Poly.o )
[5 of 8] Compiling Debug.QuickCheck.Poly ( Debug/QuickCheck/Poly.hs, dist/build/Debug/QuickCheck/Poly.o )
[6 of 8] Compiling Debug.QuickCheck.Utils ( Debug/QuickCheck/Utils.hs, dist/build/Debug/QuickCheck/Utils.o )
[7 of 8] Compiling Debug.QuickCheck ( Debug/QuickCheck.hs, dist/build/Debug/QuickCheck.o )
[8 of 8] Compiling Debug.QuickCheck.Batch ( Debug/QuickCheck/Batch.hs, dist/build/Debug/QuickCheck/Batch.o )
Registering QuickCheck-1.2.0.1...
Installing library in /home/xxx/.cabal/lib/QuickCheck-1.2.0.1/ghc-7.4.1
Registering QuickCheck-1.2.0.1...
Downloading HTF-0.1...
Configuring HTF-0.1...
Building HTF-0.1...
Preprocessing library HTF-0.1...
[1 of 8] Compiling Test.Framework.Utils ( Test/Framework/Utils.hs, dist/build/Test/Framework/Utils.o )
[2 of 8] Compiling Test.Framework.Process ( Test/Framework/Process.hs, dist/build/Test/Framework/Process.o )

Test/Framework/Process.hs:45:48:
    Ambiguous type variable `a0' in the constraints:
      (Show a0)
        arising from a use of `show' at Test/Framework/Process.hs:45:48-51
      (Control.Exception.Exception a0)
        arising from a use of `Control.Exception.handle'
        at Test/Framework/Process.hs:45:5-28
    Probable fix: add a type signature that fixes these type variable(s)
    In the expression: show e
    In the first argument of `return', namely
      `([], show e, error (show e))'
    In the expression: return ([], show e, error (show e))
cabal: Error: some packages failed to install:
HTF-0.1 failed during the building phase. The exception was:
ExitFailure 1

I also get results similar to the first one after cabal install 'HTF <= 0.9'. I tried ghc-pkg check which gave me a list of broken packages. I reinstalled the packages and repeated trying to install HTF again with the same results.

Was it helpful?

Solution

The first problem is that you have regex-base built against mtl-2.0.1.0, thus

package regex-base-0.93.2 requires mtl-2.0.1.0
package aeson-0.6.0.2 requires mtl-2.1.2

HTF would depend on multiple versions of mtl. That very rarely works.

The solution to that would be to $ ghc-pkg unregister regex-base. If ghc-pkg warns that that would break other packages, you would have to rebuild those too. If there are too many to do it manually, you may consider deleting your entire user package-db (I hope the packages all are user-installed, if they are globally installed, you can't delete your entire global db) and rebuild everything with cabal install world.

After the regex-base is removed, nothing would depend on mtl-2.0.1.0 anymore, and the dependencies should cause no conflict; before actually installing HTF, you should check that with

cabal install HTF --dry-run

If there would still be conflicts, that should detect them, and you could help resolving them by unregistering further packages.

The next problem is

ghc: could not execute: cpphs

That looks as if you have no cpphs in your PATH. Either you haven't installed it, in which case you need to do it before installing HTF, or the directory it is installed in needs to be added to the PATH.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top