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

13

Estou tentando compilar um driver para um adaptador Netis WF2190. Sim, acabei de baixar o mais recente deles.

Como posso desativar o -Werror=date-time na compilação? Eu não posso encontrá-lo em qualquer lugar no script de construção, então acho que deve ser alguma configuração padrão global. Claramente, o código está apenas tentando incorporar a data / hora de compilação na saída, portanto não deve haver nenhum problema com a desativação desse 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
    
por Andy 06.03.2015 / 18:56

3 respostas

14

O aviso de data / hora é novo no gcc 4.9 Eu acho - é possivelmente ativado implicitamente por -Wall (e se transformou em um erro implicitamente por -Werror ).

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

-Wno-error=date-time 

para o CFLAGS .

    
por steeldriver 07.03.2015 / 01:09
3

Eu tentei várias vezes adicionando a linha "Wno-error = date-time" às CFLAGS, mas parece que não funcionou.

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

grep -r "__DATE__"

qual (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 alterei isso para uma string sem a variável, removendo as aspas, ou seja,

"Compiled on __DATE__ for kernel %s"

A compilação foi então capaz de prosseguir

EDITAR: Como mencionado anteriormente, use make clean antes de executar o configure e make, ou melhor ainda, extrair uma nova versão do arquivo zip / tar

    
por tmck-code 13.01.2016 / 01:50
1

Pode ser 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 versão:

cd /home/andy/RTL8812AU_linux_v4.3.8_12175.20140902/
sudo make clean
make
sudo make install
    
por mchid 25.07.2015 / 22:08