cabal failures, how to move to cabal-dev? - haskell

I seem to have so many problems with broken dependency graphs in cabal, that I am finally trying to follow SO advice to move to cabal-dev, but for similar reasons it won't install.
Skipping the many pages of the original install attempts, here is the current status:
C:\Users\me>cabal --force-reinstalls install cabal-dev
Resolving dependencies...
Warning: Note that reinstalls are always dangerous. Continuing anyway...
Configuring network-2.3.1.0...
configure: WARNING: unrecognized options: --with-compiler, --with-gcc
configure: error: cannot find sources (include/HsNet.h) in /e/plang/Libraries/wx
Widgets2.9 or ..
cabal: Error: some packages failed to install:
HTTP-4000.2.5 depends on network-2.3.1.0 which failed to install.
cabal-dev-0.9.1 depends on network-2.3.1.0 which failed to install.
network-2.3.1.0 failed during the configure step. The exception was:
ExitFailure 1
I did just re-install network (current version seems to be 2.4.0.1), but that did not help.
It is also interesting that although one finds various strong declarations NOT to use cabal, many /most/ tutorials and books recommend it (by default?).

It's not a good idea to ever install different versions of packages coming with Platform.
In this case you are trying to reinstall network. You should do the following: run ghc-pkg list network. If you have more than one version installed use ghc-pkg unregister to unregister all but the oldest version.
Then perform cabal install cabal-dev network-2.3.0.13 or whatever version was shipped with latest platform.

Related

Issue installing Snap on macOS Sierra

I'm having trouble installing the Haskell framework Snap on macOS Sierra. Whenever I install it, I get the following message:
Resolving dependencies...
Configuring securemem-0.1.9...
Configuring skein-1.0.9.4...
Configuring configurator-0.3.0.0...
Configuring cryptonite-0.24...
Building configurator-0.3.0.0...
Building securemem-0.1.9...
Building skein-1.0.9.4...
Failed to install configurator-0.3.0.0
Build log ( /Users/nicholas/.cabal/logs/ghc-8.2.1/configurator-0.3.0.0-6dySPcNCURWFswtMXJvzho.log ):
cabal: Entering directory '/tmp/cabal-tmp-66175/configurator-0.3.0.0'
Configuring configurator-0.3.0.0...
Preprocessing library for configurator-0.3.0.0..
Building library for configurator-0.3.0.0..
<command line>: cannot satisfy -package-id attoparsec-0.13.2.0-5dp4kBDsiGY4dQpLKbD5rk:
attoparsec-0.13.2.0-5dp4kBDsiGY4dQpLKbD5rk is unusable due to shadowed dependencies:
scientific-0.3.5.1-L0qYzdp0wpz8rO8gircNSR text-1.2.2.2-EGUst8sqNAZCw1xLPcmcMH
(use -v for more information)
cabal: Leaving directory '/tmp/cabal-tmp-66175/configurator-0.3.0.0'
Configuring transformers-base-0.4.4...
Building cryptonite-0.24...
Building transformers-base-0.4.4...
Installed securemem-0.1.9
Installed transformers-base-0.4.4
Installed skein-1.0.9.4
Installed cryptonite-0.24
Updating documentation index
/Users/nicholas/Library/Haskell/share/doc/x86_64-osx-ghc-8.2.1/index.html
cabal: Error: some packages failed to install:
configurator-0.3.0.0-6dySPcNCURWFswtMXJvzho failed during the building phase.
The exception was:
ExitFailure 1
snap-1.0.0.2-5CZKyA9EY4oLgkpHYCVfnv depends on snap-1.0.0.2 which failed to
install.
I'm using the Haskell Platform installed using homebrew (brew cask install haskell-platform), and cabal version 2.0.0.2. I have tried using sudo and deleting my ~/.ghc file
There was an issue with full 8.2.1 binary platform builds that's just been resolved: https://mail.haskell.org/pipermail/haskell-cafe/2017-October/127979.html
This was likely an instance of that.
(see also: GHC cannot find libraries on fresh install of Haskell-Platform)
This looks like a bug in Cabal 2 (or potentially GHC 8.2). See https://github.com/haskell/cabal/issues/4728. I'd recommend sticking to GHC 8.0.2 for the moment with either cabal 1.24 or Stack. I'm the case of Stack, the version won't matter, since it will use the Cabal version shipped with GHC.

Cannot install ghc-mod due to 'happy' cannot be installed?

On Mac OS X, I'm not able to install ghc-mod due to that a dependency called 'happy' cannot be installed:
bash> cabal install ghc-mod
Resolving dependencies...
Configuring haskell-src-exts-1.17.1...
Failed to install haskell-src-exts-1.17.1
Build log ( /Users/meng/.cabal/logs/haskell-src-exts-1.17.1.log ):
Configuring haskell-src-exts-1.17.1...
setup-Simple-Cabal-1.22.5.0-x86_64-osx-ghc-7.10.3: The program 'happy' version
>=1.19 is required but it could not be found.
cabal: Error: some packages failed to install:
ghc-mod-5.5.0.0 depends on haskell-src-exts-1.17.1 which failed to install.
haskell-src-exts-1.17.1 failed during the configure step. The exception was:
ExitFailure 1
hlint-1.9.31 depends on haskell-src-exts-1.17.1 which failed to install.
Any idea?
For some reason, cabal doesn't install executable dependencies, but you can get around this by installing by hand.
cabal install happy
then proceed with the original installation.
This problem generally doesn't go away with stack either, but the solution is similar
stack install happy
then continue with the installation.
it seems the program happy is not installed in your system, therefore the package haskell-src-exts-1.17.1 (a dependency of a dependency of ghc-mod) which depends on it fails to install.
The common wisdom today, especially for beginners, is to not use the tool cabal-install, but to use stack for everything you need instead. including installing ghc itself. after downloading stack I think all you have to do is run stack install ghc-mod to install ghc-mod.

yesod install fails

I generally find that cabal install's for more than half of big packages fail, rather a fatal flaw to new users!
This time I am trying to install yesod, any hints?
> cabal install yesod
...
Loading package time-1.2.0.5 ...
GHCi runtime linker: fatal error: I found a duplicate definition for symbol
_get_current_timezone_seconds
whilst processing object file
C:\Users\guthrie\AppData\Roaming\cabal\time-1.2.0.5\ghc-7.4.1\HStime-1.2.0.5.o
This could be caused by:
* Loading two different object files which export the same symbol
* Specifying the same object file twice on the GHCi command line
* An incorrect `package.conf' entry, causing some object to be
loaded twice.
GHCi cannot safely continue in this situation. Exiting now. Sorry.
cabal: Error: some packages failed to install:
authenticate-1.3.1.1 depends on http-conduit-1.6.1.1 which failed to install.
http-conduit-1.6.1.1 failed during the building phase. The exception was:
ExitFailure 1
yesod-1.1.1.2 depends on yesod-core-1.1.2.1 which failed to install.
yesod-auth-1.1.1.1 depends on yesod-core-1.1.2.1 which failed to install.
yesod-core-1.1.2.1 failed during the building phase. The exception was:
ExitFailure 1
yesod-form-1.1.3 depends on yesod-core-1.1.2.1 which failed to install.
yesod-json-1.1.0 depends on yesod-core-1.1.2.1 which failed to install.
yesod-persistent-1.1.0 depends on yesod-core-1.1.2.1 which failed to install.
yesod uses a different version of alex package than the Haskell platform. I always install alex and happy from my distro's package manager apart from ghc and then use cabal. Alternatively, you can always use
cabal update && cabal install alex happy
cabal install yesod-platform
This most likely occurs due to trying to install with two versions of the time package simultaneously. Can you try running cabal install yesod-platform and see if the problem persists?
And as #Inaimathi said, this might be due to an older version of cabal. Perhaps also try cabal update && cabal install cabal-install.

How to install cairo on Windows

For the life of me I can't figure out how to install cairo on Windows!
I need it for Haskell Charts, but when I follow setup instructions and get to running:
cabal install gtk
I get this error:
Linking dist/setup-wrapper\setup.exe ...
Configuring glib-0.12.2...
setup.exe: The program pkg-config version >=0.9.0 is required but it could not
be found.
cabal.exe: Error: some packages failed to install:
cairo-0.12.2 failed during the configure step. The exception was:
ExitFailure 1
gio-0.12.2 depends on glib-0.12.2 which failed to install.
glib-0.12.2 failed during the configure step. The exception was:
ExitFailure 1
gtk-0.12.2 depends on glib-0.12.2 which failed to install.
pango-0.12.2 depends on glib-0.12.2 which failed to install.
If I go to cairo site, they don't have anywhere any kind of setup. Just a bunch of dlls that I don't know what to do with (how to make Haskell see them).
Any help appreciated, as I've been trying to install the damn thing for hours!
You need to download the all-in-one bundle available here. You can discover this link yourself by visiting http://www.gtk.org/ and clicking "Download", then "Windows (32-bit)". Extract it to a directory that doesn't include spaces, and add that directory to your PATH. You will also need to cabal install gtk2hs-buildtools before you attempt to cabal install gtk.
These instructions can also be found on the gtk2hs website.
Since the answers on this page have been posted, GTK has stopped publishing Windows binaries. A third party compiles up-to-date dlls here: http://www.tarnyko.net/dl/gtk.htm
I'm not 100% sure, but you might need to do
cabal install gtk2hs-buildtools
before you can install gtk itself.

cabal install yesod fails?

Haskell package dependencies continue to be a problem but I don't know how to get around this one. My environment:
Ubuntu 10.10, new install
apt-get install ghc6 cabal-install
cabal update && cabal install cabal-install
Then:
cabal install yesod
And I get this:
$ cabal install yesod
cabal: Error: some packages failed to install:
persistent-0.3.1.2 failed during the building phase. The exception was:
ExitFailure 1
yesod-0.6.6 depends on persistent-0.3.1.2 which failed to install.
$ cabal install persistent-0.3.1.2
Resolving dependencies...
cabal: cannot configure blaze-builder-0.2.0.2. It requires text ==0.10.*
For the dependency on text ==0.10.* there are these packages: text-0.10.0.0,
text-0.10.0.1 and text-0.10.0.2. However none of them are available.
text-0.10.0.0 was excluded because enumerator-0.4.3.1 requires text ==0.11.*
text-0.10.0.1 was excluded because enumerator-0.4.3.1 requires text ==0.11.*
text-0.10.0.2 was excluded because enumerator-0.4.3.1 requires text ==0.11.*
How do I get yesod installed?
To see more details, add -v (or even -v2 or -v3) and perhaps --dry-run. Also it's useful to see what's currently installed, with ghc-pkg list.
When you upgrade persistent, cabal decides it should also rebuild your existing yesod which depends on it. This triggers a blaze-builder upgrade. blaze-builder requires an older text than enumerator which is also being installed.
http://hackage.haskell.org/package/enumerator claims to support older text versions as well as 0.11. But cabal has been outwitted somehow. The verbose output may tell more, or see if you can help it along with a --constraint or two. Or by first uninstalling some related packages, like yesod. And of course be sure you have done cabal update.
yesod is under heavy development. email michael snoyman (contact info can be found here), he is very responsive to requests
There is a dependency-break. Report this as an error to the author of the package. Consider downloading and installing an older version of enumerator manually, too.
I found some information about a better install process here:
https://github.com/yesodweb/yesod
Look for the section about cabal-src.
I'm in the process of trying it out.
I'll report back, and let people know if it works.

Resources