2011-02-09 14 views
8

Sto cercando di installare il pacchetto nano-hmac-0.2.0 (una dipendenza di un pacchetto che voglio) da Hackage con Cabal e GHC 6.12.1, ma non riesce con il seguente errore:Override -Werror durante l'installazione da 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. 
abbastanza

Certo, il file .cabal del pacchetto ha la seguente riga in esso:

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

mi piacerebbe essere in grado di sostituire l'opzione -Werror in modo da poter installare il pacchetto senza modificare manualmente il file .cabal , ma non riesco a trovare un modo che funzioni. In particolare, ho cercato passando --ghc-options alla Cabala di attaccare un -Wwarn nella lista degli argomenti di GHC, in questo modo:

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

Questo non fare quello che voglio, però; l'output dettagliato verifica che -Wwarn sta ottenendo aggiunto all'inizio della lista degli argomenti del GHC, ma il -Werror dal file .cabal appare più tardi e sembra ignorarlo:

/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 

Ho anche provato passando --constraint='base >= 4' per Cabal per forzarlo utilizzare una versione più recente di base e evitare l'avviso del tutto, ma ottengo lo stesso errore, e ho ancora vedere quanto segue nella output dettagliato:

Dependency base ==3.0.3.2: using base-3.0.3.2 

esiste un modo per sbarazzarsi di o ignorare la -Werror proveniente dal file .cabal tramite il comando Cabal li ne, o sono bloccato modificando me stesso il file .cabal?

+0

Cosa succede se si utilizza '--preference = 'base> = 4' invece di un vincolo? Inoltre dovresti controllare che il test a prova di vincita sia compilato rispetto a base-4 ('ghc-pkg descrike bytestring' dovrebbe mostrarlo). –

+0

@John '--preference = 'base> = 4'' ha funzionato. Se pubblichi il tuo commento come risposta, accetterò. –

risposta

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?

Infatti. Non c'è modo in generale. Potresti essere in grado di sovrascrivere i vincoli del pacchetto in modo tale che gli avvisi spariscano, tuttavia, in generale, devi modificare il file .cabal.

In questi giorni Hackage impedisce alle persone di caricare pacchetti con -Werror nel loro file. Cabal, quindi il problema andrà via nel tempo.