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?
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). –
@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. –