Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Fail with basic usage of haskell stack

I'm learning Haskell and trying to setup my Emacs development environment (reading this).
One of things I should do is to install hindent.
Recommended method here is just stack install hindent. I guess it should be installed in stack's global-project space. My global stack yaml at $HOME/.stack/global-project/stack.yaml is:

flags: {}
extra-package-dbs: []
packages: []
extra-deps: []
resolver: ghc-7.10.3

I don't use any system ghc (there is no ghc or ghci on my $PATH).
On stack install hindent it adviced me to extend extra-deps:

Run from outside a project, using implicit global project config
Using resolver: ghc-7.10.3 from implicit global project's config file: /home/me/.stack/global-project/stack.yaml

While constructing the build plan, the following exceptions were encountered:

In the dependencies for hindent-5.2.1:
    descriptive must match >=0.7 && <0.10, but the stack configuration has no specified version
                (latest applicable is 0.9.4)
    exceptions must match -any, but the stack configuration has no specified version (latest applicable is 0.8.3)
    haskell-src-exts must match >=1.18, but the stack configuration has no specified version
                     (latest applicable is 1.18.2)
    monad-loops must match -any, but the stack configuration has no specified version (latest applicable is 0.4.3)
    mtl must match -any, but the stack configuration has no specified version (latest applicable is 2.2.1)
    path must match -any, but the stack configuration has no specified version (latest applicable is 0.5.9)
    path-io must match -any, but the stack configuration has no specified version (latest applicable is 1.2.0)
    text must match -any, but the stack configuration has no specified version (latest applicable is 1.2.2.1)
    unix-compat must match -any, but the stack configuration has no specified version (latest applicable is 0.4.2.0)
    utf8-string must match -any, but the stack configuration has no specified version (latest applicable is 1.0.1.1)
    yaml must match -any, but the stack configuration has no specified version (latest applicable is 0.8.20)

Recommended action: try adding the following to your extra-deps in /home/me/.stack/global-project/stack.yaml:
- descriptive-0.9.4
- exceptions-0.8.3
- haskell-src-exts-1.18.2
- monad-loops-0.4.3
- mtl-2.2.1
- path-0.5.9
- path-io-1.2.0
- text-1.2.2.1
- unix-compat-0.4.2.0
- utf8-string-1.0.1.1
- yaml-0.8.20

When I do what is proposed it suggests some new dependencies (which are probably dependencies of those which are added before) etc. At the end it results in situatuation where some two dependencies have unmet versions.

I presume that something is wrong with my configuration (or understanding of stack) since I think that obtaining implicit dependencies is job of a build tool.

Does someone more experienced can infer what is my beginner fault?

like image 842
foki Avatar asked Nov 16 '25 11:11

foki


1 Answers

It's not generally recommended to use a ghc version as a resolver, for the reason you've discovered: you need to manually specify lots of package versions. Instead, I'd recommend switching to lts-6.23, or something else similar.

like image 100
Michael Snoyman Avatar answered Nov 19 '25 08:11

Michael Snoyman



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!