
Peter Simons wrote:
Hi Xyne,
If Cabal can install different versions alongside each other, can't we do that with Pacman too?
Pacman cannot install two different versions of the same package at the same time, where "package" really means "$pkgname". Cabal, however, can do that. We can work around this limitation by encoding a package's version number into the $pkgname. If we'd want to install parsec 2.x and 3.x at the same time, we could simply offer two packages called "haskell-parsec2" and "haskell-parsec3". Obviously, the more granularity we'd want to provide, the more awkward our package names would become.
I don't mean that the versions would be included in the names, e.g. "haskell-foo-1.4", "haskell-foo-1.5" (that is overly kludgy). I mean that "haskell-foo" would contain foo 1.4, foo 1.5 and whatever other versions of foo that one could reasonably expect. Again, I'm just thinking out loud and I see possible problems with it already such as "bloat" from multiple versions, etc. It's mostly just curiosity about how Cabal manages to install the actual files on the system. We should be able to mirror this in the package itself. Even if we don't provide packages containing multiple versions, it might be useful if we find a way to create them. We could then write user tools that generate custom packages to satisfy per-user dependencies, e.g. the tool would create a custom "haskell-foo" package that contains foo 1.4 and foo 1.5 to satisfy all dependencies.