cabal инсталирате fpco-api грешка

Наскоро се опитах да инсталирам fpco-api на OS X 10.9 чрез cabal install, но получих грешки по време на фазата на изграждане. Ето списъка с грешки:

... lots of 'loading package'
Loading package asn1-data-0.7.1 ... linking ... done.
Loading package asn1-types-0.2.3 ... linking ... done.
Loading package crypto-pubkey-types-0.4.1 ... linking ... done.
Loading package pem-0.2.1 ... linking ... done.
Loading package certificate-1.3.9 ... linking ... done.
Loading package publicsuffixlist-0.1 ... linking ... done.
Loading package regex-base-0.93.2 ... linking ... done.
Loading package regex-posix-0.95.2 ... linking ... done.
Loading package regex-compat-0.95.1 ... linking ... done.
Loading package socks-0.5.4 ... linking ... done.
Loading package crypto-numbers-0.2.3 ... linking ... done.
Loading package crypto-pubkey-0.2.4 ... linking ... done.
Loading package tls-1.1.5 ... linking ... done.
Loading package cipher-rc4-0.1.4 ... linking ... done.
Loading package tls-extra-0.6.6 ... linking ... done.
Loading package http-conduit-1.9.6 ... linking ... done.
Loading package hslogger-1.2.3 ... linking ... done.
Loading package MissingH-1.2.0.2 ... linking ... done.
Loading package ConfigFile-1.1.1 ... linking ... done.
[ 5 of 10] Compiling FP.API.Run ( src/library/FP/API/Run.hs, dist/build/FP/API/Run.o )

src/library/FP/API/Run.hs:37:1: Warning:
Module `Prelude' does not export `catch'
[ 6 of 10] Compiling FP.API.TH ( src/library/FP/API/TH.hs, dist/build/FP/API/TH.o )
[ 7 of 10] Compiling FP.Server.Types ( src/library/FP/Server/Types.hs, dist/build/FP/Server/Types.o )

src/library/FP/Server/Types.hs:97:36:
Ambiguous occurrence `Loc'
It could refer to either `FP.Server.Types.Loc',
defined at src/library/FP/Server/Types.hs:115:6
or `Control.Monad.Logger.Loc',
imported from `Control.Monad.Logger' at src/library/FP/Server/Types.hs:18:1-27
(and originally defined in `Language.Haskell.TH.Syntax')

src/library/FP/Server/Types.hs:102:46:
Ambiguous occurrence `Loc'
It could refer to either `FP.Server.Types.Loc',
defined at src/library/FP/Server/Types.hs:115:6
or `Control.Monad.Logger.Loc',
imported from `Control.Monad.Logger' at src/library/FP/Server/Types.hs:18:1-27
(and originally defined in `Language.Haskell.TH.Syntax')

src/library/FP/Server/Types.hs:103:46:
Ambiguous occurrence `Loc'
It could refer to either `FP.Server.Types.Loc',
defined at src/library/FP/Server/Types.hs:115:6
or `Control.Monad.Logger.Loc',
imported from `Control.Monad.Logger' at src/library/FP/Server/Types.hs:18:1-27
(and originally defined in `Language.Haskell.TH.Syntax')

src/library/FP/Server/Types.hs:118:17:
Ambiguous occurrence `Loc'
It could refer to either `FP.Server.Types.Loc',
defined at src/library/FP/Server/Types.hs:115:6
or `Control.Monad.Logger.Loc',
imported from `Control.Monad.Logger' at src/library/FP/Server/Types.hs:18:1-27
(and originally defined in `Language.Haskell.TH.Syntax')

src/library/FP/Server/Types.hs:119:19:
Ambiguous occurrence `Loc'
It could refer to either `FP.Server.Types.Loc',
defined at src/library/FP/Server/Types.hs:115:6
or `Control.Monad.Logger.Loc',
imported from `Control.Monad.Logger' at src/library/FP/Server/Types.hs:18:1-27
(and originally defined in `Language.Haskell.TH.Syntax')
Failed to install fpco-api-1.0.5
cabal: Error: some packages failed to install:
fpco-api-1.0.5 failed during the building phase. The exception was:
ExitFailure 1

Някой знае ли как да се справи с тази грешка?


person d12frosted    schedule 22.01.2014    source източник


Отговори (1)


Изглежда, че пакетът monad-logger е започнал да експортира символа Loc, започвайки с версия 0.3.4.0. Тази версия не е изключена от файла Cabal от fpco-api.

Можеш да опиташ

cabal install fpco-api --constraint="monad-logger < 0.3.4"

за принудително използване на по-стара версия на monad-logger.


Повече обяснение за грешката:

Модулът FP.Server.Types в пакета fpco-api дефинира тип данни Loc, който се използва в целия пакет. Модулът Language.Haskell.TH.Syntax дефинира различен тип данни Loc. Тези модули не се използват директно от fpco-api, но fpco-api използва пакета monad-logger, който от своя страна използва Language.Haskell.TH.Syntax. Това не е проблем, докато в нито една точка от програмата и двата различни типа Loc не са в обхват. Но в най-новата си версия, 0.3.4.0, пакетът monad-logger реши да реекспортира типа данни Loc от Language.Haskell.TH.Syntax. Сега на много места, където регистраторската монада е импортирана в fpco-api, внезапно и двата Loc типа са в обхват и GHC не знае за кой от тях се отнасят локалните появявания на Loc.

Правилното решение за тази грешка е fpco-api да крие повторното експортиране Loc от регистриращата монада или изрично да препраща към правилната, като използва квалифицирани имена. Но това изисква актуализация на изходния код на fpco-api. Надяваме се, че временната корекция за използване на по-стара версия на monad-logger трябва да е достатъчна.

person kosmikus    schedule 22.01.2014
comment
Благодаря Ви за отговора. Ще пробвам да видя резултата. Но не разбирам съвсем причините за грешката :) - person d12frosted; 22.01.2014
comment
@RottenBrain Добре, добавих още подробности :) - person kosmikus; 22.01.2014