从Cabal安装时覆盖-Werror

Pau*_*icz 8 haskell ghc cabal

我正在尝试使用Cabal和GHC 6.12.1从Hackage 安装nano-hmac-0.2.0软件包(我想要的软件包的依赖项),但它失败并出现以下错误:

Data/Digest/OpenSSL/HMAC.hsc:1:0:
    Warning: Module `Prelude' is deprecated:
               You are using the old package `base' version 3.x.
               Future GHC versions will not support base version 3.x. You
               should update your code to use the new base version 4.x.

<no location info>: 
Failing due to -Werror.
Run Code Online (Sandbox Code Playgroud)

果然,包的.cabal文件中包含以下行:

  ghc-options:         -Wall -Werror -O2 -fvia-C
Run Code Online (Sandbox Code Playgroud)

我希望能够覆盖该-Werror选项,以便我可以在不手动修改.cabal文件的情况下安装软件包,但找不到可行的方法.特别是,我尝试传递--ghc-options给Cabal以坚持-WwarnGHC的参数列表,如下所示:

$ cabal install nano-hmac-0.2.0 -v2 --ghc-options='-Wwarn'
Run Code Online (Sandbox Code Playgroud)

但这不符合我的要求; 详细输出验证是否-Wwarn已添加到GHC的参数列表的开头,但是-Werror.cabal文件稍后出现并且似乎覆盖它:

/usr/bin/ghc -Wwarn --make -package-name nano-hmac-0.2.0 -hide-all-packages -fbuilding-cabal-package -i -idist/build -i. -idist/build/autogen -Idist/build/autogen -Idist/build -optP-include -optPdist/build/autogen/cabal_macros.h -odir dist/build -hidir dist/build -stubdir dist/build -package-id base-3.0.3.2-0092f5a086872e0cdaf979254933cd43 -package-id bytestring-0.9.1.5-125aff5b9d19ec30231ae2684b8c8577 -O -Wall -Werror -O2 -fvia-C -XForeignFunctionInterface -XBangPatterns -XCPP Data.Digest.OpenSSL.HMAC
Run Code Online (Sandbox Code Playgroud)

我也尝试传递--constraint='base >= 4'给Cabal以强制它使用更新版本的base并完全避免警告,但我得到同样的失败,我仍然在详细输出中看到以下内容:

Dependency base ==3.0.3.2: using base-3.0.3.2
Run Code Online (Sandbox Code Playgroud)

有没有办法-Werror通过Cabal命令行摆脱或覆盖来自.cabal文件,或者我自己修改.cabal文件?

Don*_*art 6

有没有办法通过Cabal命令行摆脱或覆盖来自.cabal文件的-Werror,或者我自己修改了.cabal文件?

确实.总的来说没办法.您可以覆盖包约束,使警告消失,但是,通常,您必须修改.cabal文件.

这些天Hackage阻止人们-Werror在.cabal文件中上传包,因此问题会随着时间的推移而消失.