通过cabal安装haskell-src-ext与GHC不兼容



我遇到了一个兼容性问题,试图在Ubuntu 14.04上使用GHC 7.8.3和Cabal 1.16.0.2的cabal install agda

问题似乎出在Agda需要的haskell-src-exts-1.15.0.1上。编译该库会遇到以下众所周知的问题,这是由happy生成的代码与7.8版GHC的更改不兼容引起的(我相信)。

templates/GenericTemplate.hs:104:22:
    Couldn't match expected type ‘Bool’
                with actual type ‘Happy_GHC_Exts.Int#’
    In the expression:
      (n Happy_GHC_Exts.<# (0# :: Happy_GHC_Exts.Int#))
    In a stmt of a pattern guard for
                   a case alternative:
      (n Happy_GHC_Exts.<# (0# :: Happy_GHC_Exts.Int#))
    In a case alternative:
        n | (n Happy_GHC_Exts.<# (0# :: Happy_GHC_Exts.Int#))
          -> (happyReduceArr Happy_Data_Array.! rule) i tk st
          where
              rule
                = (Happy_GHC_Exts.I#
                     ((Happy_GHC_Exts.negateInt#
                         ((n Happy_GHC_Exts.+# (1# :: Happy_GHC_Exts.Int#))))))

上面提到的文章描述了如何清理和重新构建包含happy生成的不兼容代码的库。但是,我无法在haskell-src-exts-1.15.0.1中实现此功能。特别是,尝试

cabal unpack haskell-src-exts-1.15.0.1 
cd haskell-src-exts-1.15.0.1
cabal clean
cabal install

也遇到了同样的问题。

有什么建议吗?

简短的回答:阴谋1.16。*与GHC 7.8.3不兼容,所以安装最新版本的cabal-install(例如1.20.0.3版本),从~/中删除与GHC 7.8.3相关的目录。GHC(例如x86_64-linux-7.8.3)并重新安装所有内容。

长答:参见GHC issue 9060

最新更新