Como desativar -Werror = date-time / macro “__DATE__” pode impedir compilações reproduzíveis

13

Estou tentando compilar um driver para um adaptador Netis WF2190. Sim, acabei de fazer o download das últimas.

Como posso desativar o -Werror=date-timena compilação? Não consigo encontrá-lo em nenhum lugar do script de compilação, portanto acho que deve haver alguma configuração padrão global. Claramente, o código está apenas tentando incorporar a data / hora da compilação na saída, portanto, não deve haver nenhum problema em desativar esse aviso.

Aqui estão alguns dos avisos que estou recebendo que estão sendo tratados como erros:

/home/andy/RTL8812AU_linux_v4.3.8_12175.20140902/driver/rtl8812AU_linux_v4.3.8_12175.20140902/core/rtw_debug.c:66:1: error: macro "__DATE__" might prevent reproducible builds [-Werror=date-time]
/home/andy/RTL8812AU_linux_v4.3.8_12175.20140902/driver/rtl8812AU_linux_v4.3.8_12175.20140902/core/rtw_debug.c:66:1: error: macro "__TIME__" might prevent reproducible builds [-Werror=date-time]
cc1: some warnings being treated as errors
Andy
fonte
2
O date-timeaviso é novo no gcc 4.9, eu acho - é possivelmente ativado implicitamente por -Wall (e transformado em um erro implicitamente por -Werror). Você pode tentar desativá- lo explicitamente usando o -Wno-formulário, ou seja, -Wno-error=date-timeadicionado ao, CFLAGSmas eu estou supondo e não posso testá-lo.
steeldriver
@steeldriver sim, funcionou, obrigado! Você pode enviá-lo como resposta e eu aceito. A outra parte do problema era que eu não sabia que o script de instalação estava extraindo novamente a fonte toda vez e substituindo as alterações feitas no makefile.
Andy

Respostas:

14

O aviso de data e hora é novo no gcc 4.9, eu acho - é possivelmente ativado implicitamente por -Wall(e transformado em um erro implicitamente por -Werror).

Você pode tentar desativá-lo explicitamente usando o -Wno-formulário, adicionando

-Wno-error=date-time 

para o CFLAGS.

chave de aço
fonte
O que, especificamente, é preciso digitar no terminal para fazer isso?
Hack-R
1
Oi @steeldriver Essa é a sintaxe correta: CFLAGS + = "-Wno-error = date-time"
Nayab Basha Sayed
3

Tentei várias vezes adicionar a linha "Wno-error = date-time" ao CFLAGS, mas não parecia funcionar.

A solução mais fácil para mim foi encontrar o arquivo que estava produzindo a linha "__DATE__" executando

grep -r "__DATE__"

que (para o código fonte com o qual estou trabalhando) me deu o arquivo

acore/info.patch:+          "Compiled on " __DATE__ " for kernel %s"

Eu simplesmente mudei isso para uma string sem a variável removendo as aspas, ou seja,

"Compiled on __DATE__ for kernel %s"

A compilação pôde prosseguir

EDIT: Como mencionado anteriormente, use make cleanantes de executar o configure e faça, ou melhor ainda, extrair uma versão nova do arquivo zip / tar

tmck-code
fonte
1

Talvez seja melhor remover a macro incorreta excluindo a linha 66 do arquivo rtw_debug.c.

sed -i -e '66d' /home/andy/RTL8812AU_linux_v4.3.8_12175.20140902/driver/rtl8812AU_linux_v4.3.8_12175.20140902/core/rtw_debug.c

Agora você pode continuar com a compilação:

cd /home/andy/RTL8812AU_linux_v4.3.8_12175.20140902/
sudo make clean
make
sudo make install
mchid
fonte
sudo make clean é importante
mchid