如何构建 Stack Yesod?

How to build Stack Yesod?

我一直在尝试使用堆栈来启动一个非常简单的项目,但是我做的任何事情都无法构建这个项目。我研究了其他类似的 Whosebug 问题,但无法解决这个问题。有人可以帮我弄清楚我需要做什么才能开始吗?

错误

> stack build

Populated index cache.
yesod-persistent-1.4.0.6: configure
yesod-persistent-1.4.0.6: build
yesod-persistent-1.4.0.6: copy/register
yesod-form-1.4.9: configure
yesod-form-1.4.9: build
yesod-form-1.4.9: copy/register
yesod-auth-1.4.15: configure
yesod-auth-1.4.15: build
Progress: 3/6
--  While building package yesod-auth-1.4.15 using:
  /Users/scottyluciano/.stack/setup-exe-cache/x86_64-osx/setup-Simple-Cabal-1.22.5.0-ghc-7.10.3 --builddir=.stack-work/dist/x86_64-osx/Cabal-1.22.5.0 build --ghc-options " -ddump-hi -ddump-to-file"
Process exited with code: ExitFailure 1
Logs have been written to: /Users/scottyluciano/Documents/tutorials/practice/.stack-work/logs/yesod-auth-1.4.15.log

Configuring yesod-auth-1.4.15...
Building yesod-auth-1.4.15...
Preprocessing library yesod-auth-1.4.15...
[ 1 of 12] Compiling Yesod.PasswordStore ( Yesod/PasswordStore.hs, .stack-work/dist/x86_64-osx/Cabal-1.22.5.0/build/Yesod/PasswordStore.o )

/private/var/folders/kl/yp2gqzf116131b5gvs9pzttw0000gn/T/stack64861/yesod-auth-1.4.15/Yesod/PasswordStore.hs:166:31: Warning:
    Defaulting the following constraint(s) to type ‘Integer’
      (Integral b0)
        arising from a use of ‘^’ at Yesod/PasswordStore.hs:166:31
      (Num b0)
        arising from the literal ‘32’ at Yesod/PasswordStore.hs:166:32-33
    In the first argument of ‘(-)’, namely ‘2 ^ 32’
    In the first argument of ‘(*)’, namely ‘(2 ^ 32 - 1)’
    In the second argument of ‘(>)’, namely ‘(2 ^ 32 - 1) * hLen’

/private/var/folders/kl/yp2gqzf116131b5gvs9pzttw0000gn/T/stack64861/yesod-auth-1.4.15/Yesod/PasswordStore.hs:419:1: Warning:
    Defined but not used: ‘toStrict’

/private/var/folders/kl/yp2gqzf116131b5gvs9pzttw0000gn/T/stack64861/yesod-auth-1.4.15/Yesod/PasswordStore.hs:422:1: Warning:
    Defined but not used: ‘fromStrict’
[ 2 of 12] Compiling Yesod.Auth.Message ( Yesod/Auth/Message.hs, .stack-work/dist/x86_64-osx/Cabal-1.22.5.0/build/Yesod/Auth/Message.o )

/private/var/folders/kl/yp2gqzf116131b5gvs9pzttw0000gn/T/stack64861/yesod-auth-1.4.15/Yesod/Auth/Message.hs:24:1: Warning:
    The import of ‘mappend’ from module ‘Data.Monoid’ is redundant

/private/var/folders/kl/yp2gqzf116131b5gvs9pzttw0000gn/T/stack64861/yesod-auth-1.4.15/Yesod/Auth/Message.hs:460:1: Warning:
    Pattern match(es) are overlapped
    In an equation for ‘finnishMessage’: finnishMessage Password = ...

/private/var/folders/kl/yp2gqzf116131b5gvs9pzttw0000gn/T/stack64861/yesod-auth-1.4.15/Yesod/Auth/Message.hs:460:1: Warning:
    Pattern match(es) are non-exhaustive
    In an equation for ‘finnishMessage’:
        Patterns not matched: CurrentPassword
[ 3 of 12] Compiling Yesod.Auth.Routes ( Yesod/Auth/Routes.hs, .stack-work/dist/x86_64-osx/Cabal-1.22.5.0/build/Yesod/Auth/Routes.o )
[ 4 of 12] Compiling Yesod.Auth       ( Yesod/Auth.hs, .stack-work/dist/x86_64-osx/Cabal-1.22.5.0/build/Yesod/Auth.o )
ghc: panic! (the 'impossible' happened)
  (GHC version 7.10.3 for x86_64-apple-darwin):
    Loading temp shared object failed: dlopen(/var/folders/kl/yp2gqzf116131b5gvs9pzttw0000gn/T/ghc65133_0/libghc_21.dylib, 5): no suitable image found.  Did find:
    /var/folders/kl/yp2gqzf116131b5gvs9pzttw0000gn/T/ghc65133_0/libghc_21.dylib: malformed mach-o: load commands size (36784) > 32768

Please report this as a GHC bug:  http://www.haskell.org/ghc/reportabug

GHC 8.0.2 fixes the panic issue。通过将 LTS 更改为 8.0,升级解决了所有问题。