
Hello, I keep running into issues where I want to use some version of parsec, quickcheck, haxml, etc, in my code, but my code links against a different third party library (e.g. network) which uses a different version of the library (e.g., parsec) than what I want to use, and that makes cabal unhappy. If I use, runhaskell Setup.hs configure, I get warnings like: ~/n-heptane/projects/haskell/web-routes/web-routes-happstack $ runhaskell Setup.hs configure --user Configuring web-routes-happstack-0.18... Warning: This package indirectly depends on multiple versions of the same package. This is highly likely to cause a compile failure. package network-2.2.1.7 requires parsec-2.1.0.1 package hsemail-1.3 requires parsec-2.1.0.1 package happstack-util-0.4.3 requires parsec-2.1.0.1 package happstack-server-0.4.3 requires parsec-2.1.0.1 package web-routes-0.18 requires parsec-3.1.0 Now, the project actually builds and runs fine, because the code in network that uses parsec and the code in my library that uses parsec do not interact at the parsec-level at all. But, cabal install can not handle this, because it (currently) can't *know* that it's actually going to work. Now, parsec and quickcheck are in the haskell platform. So, that should drive a lot of packages to use the same versions. But what about libraries such as HaXml which are not in the platform? Or what about this case where I want parsec 3, even though parsec 2 is in the haskell platform? Any ideas about what should be done? We have this problem with QuickCheck and happstack when people try to cabal install gitit. And I am running into the problem again with the urlt / web-routes library. - jeremy