6 ms·
I'm writing 3 different web apps, plus some command line tools in haskell. I have been working on these projects for a year now, and I've never seen any cabal
by papsosouid 14y ago
I'm writing 3 different web apps, plus some command line tools in haskell. I have been working on these projects for a year now, and I've never seen any cabal problems that aren't typical problems that occur with any package manager (trying to install conflicting modules).
$ ghc-pkg list | wc -l
182
- tel 14y agoI felt that way up until last week! I somehow felt I was special, that cabal-hellfires had burnt a ring around me. Then next thing I knew I had a 4 page cabal conflict problem and had to just toast .ghc and .cabal and start over. It's a real problem.
- carterschonwald 14y agouse Cabal-Dev! Also the next major release of cabal should have a lot of the cabal-dev machinery baked in. Theres also active brain storming by GHC dev folks on how to make things better on the compiler side too.
- papsosouid 14y agoYour response makes it sound like you just had a simple problem like you get with any language, and followed bad advice on solving it based on the assumption that "cabal is just bad and you have to do this". The big give away is that you didn't need to delete your .cabal directory, advice to do so is coming from someone who doesn't know the basics of how cabal works. It is just storing downloaded sources, all deleting it accomplishes is making you re-download stuff for no reason. The installed packages are in your .ghc directory. Cabal is no more broken than cpan.
- tel 14y agoYou're right that I'm not very fluent on how Cabal works. It worked well enough that I didn't really need to until recently. I'm not claiming either that CPAN is better than Cabal. Could versioning be done better? Probably. I don't even claim to know enough to have a competent suggestion as to how, though. Doesn't mean things don't break, though.
- papsosouid 14y ago>Doesn't mean things don't break, though. Right. The issue is that cabal has unfairly developed a reputation as being broken. People always say stuff like "every other language has this sorted out, why is haskell so bad at it?". When the reality is that the problems you get with cabal are the same ones you get with cpan or pip or anything else.
- tel 14y agoThey're slightly exacerbated in that Cabal/GHC/Haskell type checks and thus has a higher likelihood of discovering mismatches.
- gtani 14y agoyou could look into hsenv and cabal-dev. https://github.com/cakesolutions/the-pragmatic-haskeller https://github.com/cakesolutions/the-pragmatic-haskeller http://bob.ippoli.to/archives/2013/01/11/getting-started-with-haskell/ http://bob.ippoli.to/archives/2013/01/11/getting-started-wit... Also, problems in the haskell ecosystem don't stay problems for long, this one is the longer end of the tail http://alpmestan.com/posts/2012-11-02-cabal-hackage-what-you-can-do-about-it.html http://alpmestan.com/posts/2012-11-02-cabal-hackage-what-you...
- tel 14y agoI do use .hsenv a lot, but for simple playing around with libraries (where I'm also most likely to hit major version overlaps) I liked to keep installing packages into the user level database.
- kreek 14y agoDon't want to turn this into Stack Exchange and this may be homebrew's fault on OS X but I just tried installing 'haskell-platform' and got: Error: Building the QuickCheck-2.5.1.1 package failed make: *** [build.stamp] Error 2 Ok I will install the package on haskell.org, which instructs me to 'To upgrade, run: cabal install cabal-install': ... cabal: Error: some packages failed to install: cabal-install-1.16.0.2 failed during the building phase. The exception was: ExitFailure 1 Alright, maybe I don't really need the update, let's try yesod: cabal: Error: some packages failed to install: ReadArgs-1.2.1 depends on system-filepath-0.4.7 which failed to install. aeson-0.6.1.0 depends on hashable-1.2.0.5 which failed to install. asn1-data-0.7.1 failed during the building phase. The exception was: ExitFailure 1 attoparsec-0.10.4.0 failed during the building phase. The exception was: ExitFailure 1 attoparsec-conduit-1.0.0 depends on transformers-base-0.4.1 which failed to install. authenticate-1.3.2.6 depends on zlib-bindings-0.1.1.3 which failed to install. base64-conduit-1.0.0 depends on transformers-base-0.4.1 which failed to install. basic-prelude-0.3.4.0 depends on transformers-base-0.4.1 which failed to install. blaze-builder-0.3.1.0 failed during the building phase. The exception was: ExitFailure 1 blaze-builder-conduit-1.0.0 depends on transformers-base-0.4.1 which failed to install. blaze-html-0.6.0.0 depends on blaze-builder-0.3.1.0 which failed to install. blaze-markup-0.5.1.4 depends on blaze-builder-0.3.1.0 which failed to install. case-insensitive-1.0 depends on hashable-1.2.0.5 which failed to install. certificate-1.3.5 depends on crypto-api-0.11 which failed to install. classy-prelude-0.5.3 depends on transformers-base-0.4.1 which failed to install. clientsession-0.8.1 depends on crypto-api-0.11 which failed to install. conduit-1.0.2 depends on transformers-base-0.4.1 which failed to install. cookie-0.4.0.1 depends on blaze-builder-0.3.1.0 which failed to install. cprng-aes-0.3.4 depends on crypto-api-0.11 which failed to install. crypto-api-0.11 failed during the building phase. The exception was: ExitFailure 1 crypto-conduit-0.5.0 depends on transformers-base-0.4.1 which failed to install. crypto-pubkey-0.1.2 depends on crypto-api-0.11 which failed to install. cryptohash-0.8.3 depends on crypto-api-0.11 which failed to install. css-text-0.1.1 depends on attoparsec-0.10.4.0 which failed to install. email-validate-1.0.0 depends on attoparsec-0.10.4.0 which failed to install. failure-0.2.0.1 failed during the building phase. The exception was: ExitFailure 1 fast-logger-0.3.1 depends on blaze-builder-0.3.1.0 which failed to install. filesystem-conduit-1.0.0 depends on transformers-base-0.4.1 which failed to install. fsnotify-0.0.6 depends on system-filepath-0.4.7 which failed to install. hamlet-1.1.6.3 depends on shakespeare-1.0.3.1 which failed to install. hashable-1.2.0.5 failed during the building phase. The exception was: ExitFailure 1 hfsevents-0.1.3 failed during the building phase. The exception was: ExitFailure 1 hjsmin-0.1.4.1 depends on blaze-builder-0.3.1.0 which failed to install. hspec-1.4.4 failed during the building phase. The exception was: ExitFailure 1 html-conduit-1.1.0 depends on xml-types-0.3.3 which failed to install. http-conduit-1.9.0 depends on zlib-bindings-0.1.1.3 which failed to install. http-date-0.0.4 depends on attoparsec-0.10.4.0 which failed to install. http-reverse-proxy-0.1.1.3 depends on zlib-bindings-0.1.1.3 which failed to install. http-types-0.8.0 depends on hashable-1.2.0.5 which failed to install. language-javascript-0.5.7 depends on blaze-builder-0.3.1.0 which failed to install. lifted-base-0.2.0.2 depends on transformers-base-0.4.1 which failed to install. mime-mail-0.4.1.2 depends on blaze-builder-0.3.1.0 which failed to install. mime-types-0.1.0.3 failed during the building phase. The exception was: ExitFailure 1 monad-control-0.3.1.4 depends on transformers-base-0.4.1 which failed to install. monad-logger-0.3.0.1 depends on transformers-base-0.4.1 which failed to install. network-conduit-1.0.0 depends on transformers-base-0.4.1 which failed to install. optparse-applicative-0.5.2.1 failed during the building phase. The exception was: ExitFailure 1 path-pieces-0.1.2 failed during the building phase. The exception was: ExitFailure 1 pem-0.1.2 depends on attoparsec-0.10.4.0 which failed to install. persistent-1.1.5.1 depends on transformers-base-0.4.1 which failed to install. persistent-template-1.1.2.4 depends on transformers-base-0.4.1 which failed to install. pool-conduit-0.1.1 depends on transformers-base-0.4.1 which failed to install. project-template-0.1.3 depends on transformers-base-0.4.1 which failed to install. publicsuffixlist-0.0.3 failed during the building phase. The exception was: ExitFailure 1 pureMD5-2.1.2.1 depends on crypto-api-0.11 which failed to install. pwstore-fast-2.3 depends on crypto-api-0.11 which failed to install. resource-pool-0.2.1.1 depends on transformers-base-0.4.1 which failed to install. resourcet-0.4.5 depends on transformers-base-0.4.1 which failed to install. shakespeare-1.0.3.1 failed during the building phase. The exception was: ExitFailure 1 shakespeare-css-1.0.3 depends on shakespeare-1.0.3.1 which failed to install. shakespeare-i18n-1.0.0.2 depends on shakespeare-1.0.3.1 which failed to install. shakespeare-js-1.1.2.1 depends on shakespeare-1.0.3.1 which failed to install. shakespeare-text-1.0.0.5 depends on shakespeare-1.0.3.1 which failed to install. simple-sendfile-0.2.11 failed during the building phase. The exception was: ExitFailure 1 skein-0.1.0.12 depends on crypto-api-0.11 which failed to install. socks-0.5.0 failed during the building phase. The exception was: ExitFailure 1 system-fileio-0.3.11 depends on system-filepath-0.4.7 which failed to install. system-filepath-0.4.7 failed during the building phase. The exception was: ExitFailure 1 tagsoup-0.12.8 failed during the building phase. The exception was: ExitFailure 1 tagstream-conduit-0.5.4 depends on transformers-base-0.4.1 which failed to install. tls-1.1.2 depends on crypto-api-0.11 which failed to install. tls-extra-0.6.1 depends on crypto-api-0.11 which failed to install. transformers-base-0.4.1 failed during the building phase. The exception was: ExitFailure 1 unordered-containers-0.2.3.0 depends on hashable-1.2.0.5 which failed to install. vault-0.2.0.4 depends on hashable-1.2.0.5 which failed to install. wai-1.4.0 depends on transformers-base-0.4.1 which failed to install. wai-app-static-1.3.1.2 depends on transformers-base-0.4.1 which failed to install. wai-extra-1.3.2.4 depends on zlib-bindings-0.1.1.3 which failed to install. wai-logger-0.3.0 depends on transformers-base-0.4.1 which failed to install. wai-test-1.3.0.4 depends on transformers-base-0.4.1 which failed to install. warp-1.3.7.4 depends on transformers-base-0.4.1 which failed to install. xml-conduit-1.1.0.3 depends on xml-types-0.3.3 which failed to install. xml-types-0.3.3 failed during the building phase. The exception was: ExitFailure 1 xss-sanitize-0.3.3 depends on tagsoup-0.12.8 which failed to install. yaml-0.8.2.3 depends on transformers-base-0.4.1 which failed to install. yesod-1.1.9.2 depends on zlib-bindings-0.1.1.3 which failed to install. yesod-auth-1.1.5.3 depends on zlib-bindings-0.1.1.3 which failed to install. yesod-core-1.1.8.2 depends on zlib-bindings-0.1.1.3 which failed to install. yesod-default-1.1.3.2 depends on zlib-bindings-0.1.1.3 which failed to install. yesod-form-1.2.1.3 depends on zlib-bindings-0.1.1.3 which failed to install. yesod-json-1.1.2.1 depends on zlib-bindings-0.1.1.3 which failed to install. yesod-persistent-1.1.0.1 depends on zlib-bindings-0.1.1.3 which failed to install. yesod-platform-1.1.8 depends on zlib-bindings-0.1.1.3 which failed to install. yesod-routes-1.1.2 depends on path-pieces-0.1.2 which failed to install. yesod-static-1.1.2.2 depends on zlib-bindings-0.1.1.3 which failed to install. yesod-test-0.3.5 depends on xml-types-0.3.3 which failed to install. zlib-bindings-0.1.1.3 failed during the building phase. The exception was: ExitFailure 1 zlib-conduit-1.0.0 depends on zlib-bindings-0.1.1.3 which failed to install. If I'm yak-shaving in my first hour of trying a language out it's not a good sign.