8

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.

案の定、パッケージの .cabal ファイルには次の行があります。

  ghc-options:         -Wall -Werror -O2 -fvia-C

オプションをオーバーライドして-Werror、.cabal ファイルを手動で変更せずにパッケージをインストールできるようにしたいのですが、うまくいく方法が見つかりません。具体的には、次のように、GHC の引数リストに--ghc-optionsa を追加するために、Cabal に渡してみました。-Wwarn

$ cabal install nano-hmac-0.2.0 -v2 --ghc-options='-Wwarn'

ただし、これは私が望むことではありません。詳細な出力は、-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

また、Cabal に渡し--constraint='base >= 4'て、より新しいバージョンの base を強制的に使用させ、警告を完全に回避しようとしましたが、同じ失敗が発生し、詳細な出力に次のように表示されます。

Dependency base ==3.0.3.2: using base-3.0.3.2

Cabal コマンド ラインを使用して .cabal ファイルからのメッセージを削除または上書きする方法はあり-Werrorますか? それとも、自分で .cabal ファイルを変更しなければなりませんか?

4

1 に答える 1

6

Cabal コマンド ラインを使用して .cabal ファイルからの -Werror を削除または上書きする方法はありますか、それとも .cabal ファイルを自分で変更しなければなりませんか?

それはそう。一般的には仕方がありません。警告が消えるようにパッケージの制約を上書きできる場合がありますが、通常は .cabal ファイルを変更する必要があります。

-Werror最近では、Hackage により、人々が .cabal ファイルでパッケージをアップロードすることが妨げられているため、この問題は時間の経過とともに解消されます。

于 2011-04-07T23:27:51.997 に答える