
Hello, $ cabal install category-extras Resolving dependencies... cabal: dependencies conflict: ghc-6.10.1 requires process ==1.0.1.1 however process-1.0.1.1 was excluded because ghc-6.10.1 requires process ==1.0.1.0 What does this message mean? It makes little sense to me -- ghc-6.10.1 requires both process ==1.0.1.1 and process ==1.0.1.0? And, more importantly, how do I solve this? Below is my output of ghc-pkg list. Thanks much, Martijn. $ ghc-pkg list /Library/Frameworks/GHC.framework/Versions/610/usr/lib/ghc-6.10.1/./package.conf: Cabal-1.6.0.1, HUnit-1.2.0.3, QuickCheck-1.2.0.0, array-0.2.0.0, base-3.0.3.0, base-4.0.0.0, bytestring-0.9.1.4, containers-0.2.0.0, directory-1.0.0.2, (dph-base-0.3), (dph-par-0.3), (dph-prim-interface-0.3), (dph-prim-par-0.3), (dph-prim-seq-0.3), (dph-seq-0.3), editline-0.2.1.0, filepath-1.1.0.1, (ghc-6.10.1), ghc-prim-0.1.0.0, haddock-2.3.0, haskell-src-1.0.1.3, haskell98-1.0.1.0, hpc-0.5.0.2, html-1.0.1.2, integer-0.1.0.0, mtl-1.1.0.2, network-2.2.0.1, old-locale-1.0.0.1, old-time-1.0.0.1, packedstring-0.1.0.1, parallel-1.1.0.0, parsec-2.1.0.1, pretty-1.0.1.0, process-1.0.1.0, random-1.0.0.1, regex-base-0.72.0.2, regex-compat-0.71.0.1, regex-posix-0.72.0.3, rts-1.0, stm-2.1.1.2, syb-0.1.0.0, template-haskell-2.3.0.0, time-1.1.2.2, unix-2.3.1.0, xhtml-3000.2.0.1 /Users/Martijn/.ghc/i386-darwin-6.10.1/package.conf: HTTP-3001.1.5, binary-0.4.4, brainfuck-0.1, cpphs-1.6, data-accessor-0.1.4, data-accessor-template-0.1.4, extensible-exceptions-0.1.1.0, fgl-5.4.2.2, ghc-paths-0.1.0.5, haddock-2.4.1, haskeline-0.6.0.1, haskell-src-exts-0.3.12, haskell-src-exts-0.4.4, haskell-src-exts-0.4.6, haskell-src-exts-0.4.8, haskell98-1.0.1.0, hscurses-1.3.0.2, iconv-0.4.0.2, lambdabot-utils-4.2, oeis-0.2, parsec-3.0.0, process-1.0.1.1, readline-1.0.1.0, show-0.3.1, smallcheck-0.4, tagsoup-0.6, terminfo-0.3, uniplate-1.2.0.3, unlambda-0.1, utf8-string-0.3.3, zlib-0.5.0.0

Martijn van Steenbergen
Hello,
$ cabal install category-extras Resolving dependencies... cabal: dependencies conflict: ghc-6.10.1 requires process ==1.0.1.1 however process-1.0.1.1 was excluded because ghc-6.10.1 requires process ==1.0.1.0
What does this message mean? It makes little sense to me -- ghc-6.10.1 requires both process ==1.0.1.1 and process ==1.0.1.0?
And, more importantly, how do I solve this?
ghc-pkg unregister process-1.0.1.1 . If that fails, rm -r .cabal .ghc . If that fails, fix cabal ;) -- (c) this sig last receiving data processing entity. Inspect headers for copyright history. All rights reserved. Copying, hiring, renting, performance and/or quoting of this signature prohibited.

On Wed, 2009-01-28 at 18:22 +0100, Martijn van Steenbergen wrote:
Hello,
$ cabal install category-extras Resolving dependencies... cabal: dependencies conflict: ghc-6.10.1 requires process ==1.0.1.1 however process-1.0.1.1 was excluded because ghc-6.10.1 requires process ==1.0.1.0
What does this message mean? It makes little sense to me -- ghc-6.10.1 requires both process ==1.0.1.1 and process ==1.0.1.0?
Yes, that's exactly what it looks like to Cabal which is why it is horribly confused. The reason is shadowing between the global and user package dbs. The way ghc package databses work is that the user one is just slapped on top of the global one. Like Data.Map.union. Suppose you've got these packages registered in the global package db: A-1 / | / | B-1 | \ | \ | C-1.0.1.0 Now, suppose you register B-1 in the user package db, then it masks the existing B-1 from the global db. But suppose that you build this instance against C-1.0.1.1... A-1 / \ / \ B-1 \ \ C-1.0.1.0 \ C-1.0.1.1 Oh no! Now A-1 appears to depend on two versions of C! The cabal-install dependency resolver is designed to look for solutions where this does not happen, but here it's already happened in the installed packages, so it cannot ever pick the A-1 package as part of an install plan. It's not just cabal-install that will get confused here. ghc --make will too. If you're lucky you'll get linker errors. If you're unlucky you'll get segfaults. The solution we've been discussing for the next major ghc release is to track package ABIs and possibly even to allow slotting packages in their ABI. That would make this problem disappear and generally allow safer and more flexible management of installed packages. In the mean time I'm thinking of making the representation of installed package databases record broken packages. Then when we overlay package databases we could mark clashes like the above as breaking A-1. We should also try and get the solver to help us find solutions that avoid getting into this situation in the first place.
And, more importantly, how do I solve this?
Look for packages where you have the same version registered in the user and global package db. Unreigister the user one. Duncan

Thanks for the help and explanation. :-) Unregistering process-1.0.1.1 (+ those packages that depended on it...) fixed it. Thanks again, Martijn. Martijn van Steenbergen wrote:
$ cabal install category-extras Resolving dependencies... cabal: dependencies conflict: ghc-6.10.1 requires process ==1.0.1.1 however process-1.0.1.1 was excluded because ghc-6.10.1 requires process ==1.0.1.0
participants (3)
-
Achim Schneider
-
Duncan Coutts
-
Martijn van Steenbergen