Ошибка интерактивного связывания GHCi во время установки Happstack-сервера

Я пытаюсь создать проект в песочнице Кабала, который зависит от happstack-server, но этот пакет не удается собрать. Вот содержание .cabal-sandbox/logs/happstack-server-7.4.6.1.log:

Building happstack-server-7.4.6.1...
Preprocessing library happstack-server-7.4.6.1...
[ 1 of 38] Compiling Happstack.Server.Internal.LazyLiner ( src/Happstack/Server/Internal/LazyLiner.hs, dist/dist-sandbox-925bc8f2/build/Happstack/Server/Internal/LazyLiner.o )
[ 2 of 38] Compiling Happstack.Server.Internal.SocketTH ( src/Happstack/Server/Internal/SocketTH.hs, dist/dist-sandbox-925bc8f2/build/Happstack/Server/Internal/SocketTH.o )
Loading package ghc-prim ... linking ... done.
Loading package integer-gmp ... linking ... done.
Loading package base ... linking ... done.
Loading package array-0.5.0.0 ... linking ... done.
Loading package deepseq-1.3.0.2 ... linking ... done.
Loading package bytestring-0.10.4.0 ... linking ... done.
Loading package zlib-0.6.1.1 ... linking ... done.
Loading package xhtml-3000.2.1 ... linking ... done.
Loading package utf8-string-0.3.8 ... linking ... done.
Loading package old-locale-1.0.0.6 ... linking ... done.
Loading package old-time-1.1.0.2 ... linking ... done.
Loading package time-1.4.2 ... linking ... done.
Loading package time-compat-0.1.0.3 ... linking ... done.
Loading package stm-2.4.4.1 ... linking ... done.
Loading package threads-0.5.1.3 ... linking ... done.
Loading package containers-0.5.5.1 ... linking ... done.
Loading package binary-0.8.2.1 ... linking ... done.
Loading package text-1.2.2.0 ... linking ... done.
Loading package system-filepath-0.4.13.4 ... linking ... done.
Loading package syb-0.6 ... linking ... done.
Loading package unix-2.7.0.1 ... linking ... done.
Loading package network-2.6.2.1 ... linking ... done.
Loading package sendfile-0.7.9 ... linking ... done.
Loading package transformers-0.3.0.0 ... linking ... done.
Loading package mtl-2.1.3.1 ... linking ... done.
Loading package parsec-3.1.9 ... linking ... done.
Loading package network-uri-2.6.0.3 ... linking ... done.
Loading package transformers-compat-0.5.1.4 ... linking ... done.
Loading package transformers-base-0.4.4 ... linking ... done.
Loading package monad-control-1.0.0.5 ... linking ... done.
Loading package html-1.0.1.2 ... linking ... done.
Loading package filepath-1.3.0.2 ... linking ... done.
Loading package directory-1.2.1.0 ... linking ... done.
Loading package process-1.2.0.0 ... linking ... done.
Loading package hslogger-1.2.9 ... linking ... done.
Loading package extensible-exceptions-0.1.1.4 ... linking ... done.
Loading package pretty-1.1.1.1 ... linking ... done.
Loading package template-haskell ... linking ... done.
Loading package exceptions-0.8.2.1 ... linking ... done.
Loading package blaze-builder-0.4.0.1 ... linking ... done.
Loading package blaze-markup-0.7.0.3 ... linking ... done.
Loading package blaze-html-0.8.1.1 ... linking ... done.
Loading package base64-bytestring-1.0.0.1 ... linking ... done.

ByteCodeLink.lookupCE
During interactive linking, GHCi couldn't find the following symbol:
  templatezmhaskell_LanguageziHaskellziTHziSyntax_zdfMonadQzuzdczgzgze_closure
This may be due to you not asking GHCi to load extra object files,
archives or DLLs needed by your current session.  Restart GHCi, specifying
the missing library using the -L/path/to/object/dir and -lmissinglibname
flags, or simply by naming the relevant files on the GHCi command line.
Alternatively, this link failure might indicate a bug in GHCi.
If you suspect the latter, please send a bug report to:
  [email protected]

Как я могу это исправить?

▶ ghc --version
The Glorious Glasgow Haskell Compilation System, version 7.8.4

▶ cabal --version
cabal-install version 1.18.1.0
using version 1.18.1.5 of the Cabal library 

person WilQu    schedule 25.02.2016    source источник
comment
Эта ошибка может быть вызвана множеством причин: тот факт, что этот пакет содержит некоторый Template Haskell, а компоновщик байт-кода не знает, где найти TH-код, чтобы он мог его интерпретировать. Возможно, установка ghc нарушена - символ, который он не может найти, является частью самого Template Haskell, а не тем, что зависит от TH, что, по меньшей мере, подозрительно. Попробуйте обновить cabal - я видел эту ошибку в более старых версиях, и она волшебным образом исчезла, когда я обновился.   -  person user2407038    schedule 25.02.2016
comment
Наконец, источник вызывающего ошибку модуля использует препроцессор c, чтобы определить, разрешено ли ему использовать TH. Если вы хотите, вы можете попробовать передать флаг -f -template_haskell, чтобы не использовать TH - очевидно, вы можете потерять некоторую функциональность, но это один из возможных обходных путей.   -  person user2407038    schedule 25.02.2016
comment
Делаете ли вы что-нибудь интересное, когда строите это? Я обнаружил немного связанную ошибку ghc, но она связана с флагом -fno-code ... ghc.haskell.org/trac/ghc/ticket/8025 В этом отношении, как вы устанавливаете сервер happystack?   -  person sclv    schedule 27.02.2016
comment
@sclv Я создал новый проект, добавил happystack-lite в файл .cabal, создал песочницу и запустил в ней установку cabal.   -  person WilQu    schedule 27.02.2016


Ответы (1)


Проблема возникла из-за более старой версии template-haskell, установленной моим менеджером пакетов ОС. Эта версия учтена, хотя я работаю в песочнице. Я решил проблему, используя cabal install --shadow-installed-packages.

person WilQu    schedule 29.02.2016