Re: How do people manage cabal vs deb packages?
Joachim Breitner <nomeata@debian.org> writes:
> Am Montag, den 07.12.2009, 15:05 +1100 schrieb Erik de Castro Lopo:
>> Does anybody use both debian and cabal installed packages? I know I
>> definitely prefer debian packages but some stuff, like contributing
>> to upstream packages, just really needs cabal-install.
>
> I just use cabal install as a user.
Likewise, combined with calling "cabal configure" with --global when I
want to test against only the Debian packages.
Historically I had nightmarish problems with diamond dependencies
resulting from different regex-compat and time packages in Debian and
hackage. I haven't had this lately -- I think because instead of
cabal install foo
I do
cabal install --dry-run foo
And then manually meet as many dependencies as I can from Debian instead
of hackage. This way, cabal-install never installs newer versions of
time or regex-compat, it just uses the slightly older ones from Debian.
It's also helpful that "cabal upgrade" no longer provides a one-step
shoot-myself-in-the-foot way to get diamond dependency conflicts between
Hackage and Debian.
> This does not interfere with package building (or at least it should
> not :-) and is quick and dirty. If something goes wrong, I just delete
> the relevant parts of ~/.cabal and ~/.ghc and start over.
I used to do that, but I worked out that ghc-pkg unregister (test with
ghc-pkg list) is simpler than rm -rf'ing -- particularly since I usually
forget about ~/.ghc/.
There's also ghc-pkg hide and expose, which I think are better than
unregister, but I haven't used them yet.
PS: here's how I share ~/.cabal/ between different architectures:
$ egrep -v '^[[:space:]]*(--|$)' ~/.cabal/config
remote-repo: hackage.haskell.org:http://hackage.haskell.org/packages/archive
remote-repo-cache: /home/twb/.cache/cabal
documentation: True
build-summary: /home/twb/.cabal/logs/build.log
remote-build-reporting: anonymous
install-dirs user
bindir: $prefix/bin-$arch
libdir: $prefix/lib-$arch
install-dirs global
$ grep cabal ~/.bash_profile
export PATH=~/.cabal/bin-`uname -m`:"$PATH"
$ ls -ld ~/.cabal/bin-*
~/.cabal/bin-arm
~/.cabal/bin-armv5tel -> bin-arm
~/.cabal/bin-i386
~/.cabal/bin-i686 -> bin-i386
~/.cabal/bin-x86_64
Reply to: