2011-02-09 32 views
8

Tôi đang cố gắng để cài đặt các gói nano-hmac-0.2.0 (một sự phụ thuộc của một gói tôi muốn) từ Hackage sử dụng Cabal và GHC 6.12.1, nhưng nó không thành công với các lỗi sau:Override -Werror khi cài đặt từ Cabal

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. 

chắc chắn đủ, tập tin .cabal của gói có dòng sau trong đó:

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

tôi muốn để có thể ghi đè tùy chọn -Werror vì vậy tôi có thể cài đặt gói bằng tay mà không sửa đổi các tập tin .cabal nhưng không thể tìm được cách làm việc. Đặc biệt, tôi đã cố gắng đi qua --ghc-options để Cabal gắn bó một -Wwarn trong danh sách đối số GHC của, như thế này:

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

này không làm những gì tôi muốn, mặc dù; sản lượng tiết xác nhận rằng -Wwarn là nhận được thêm vào đầu danh sách đối số GHC, nhưng -Werror từ tập tin .cabal xuất hiện sau đó và dường như để ghi đè lên nó:

/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 

Tôi cũng đã cố gắng đi qua --constraint='base >= 4' để Cabal để buộc nó sử dụng một phiên bản mới hơn của cơ sở và tránh những cảnh báo hoàn toàn, nhưng tôi nhận được sự thất bại tương tự, và tôi vẫn thấy sau trong đầu ra verbose:

Dependency base ==3.0.3.2: using base-3.0.3.2 

có cách nào để thoát khỏi hoặc ghi đè lên -Werror đến từ tệp .cabal thông qua lệnh Cabal li ne, hoặc tôi bị mắc kẹt sửa đổi các tập tin .cabal bản thân mình?

+0

Nếu bạn sử dụng '--preference = 'base> = 4' thay vì một ràng buộc thì sao? Ngoài ra, bạn nên kiểm tra rằng bytestring được biên dịch dựa trên base-4 ('ghc-pkg mô tả bytestring' sẽ hiển thị điều này). –

+0

@John '--preference = 'base> = 4'' đã thực hiện thủ thuật. Nếu bạn đăng bình luận của bạn như một câu trả lời, tôi sẽ chấp nhận. –

Trả lời

5

Is there a way to get rid of or override the -Werror coming from the .cabal file via the Cabal command line, or am I stuck modifying the .cabal file myself?

Thật vậy. Không có cách nào nói chung. Bạn có thể ghi đè các ràng buộc của gói để các cảnh báo biến mất, tuy nhiên, nói chung, bạn phải sửa đổi tệp .cabal.

Những ngày này, Hackage ngăn mọi người tải lên các gói bằng -Werror trong tệp .cabal của họ, vì vậy vấn đề sẽ biến mất theo thời gian.

Các vấn đề liên quan