Come disabilitare -Werror = date-time / macro “__DATE__” potrebbe impedire build riproducibili


13

Sto cercando di compilare un driver per un adattatore Netis WF2190. Sì, ho appena scaricato le ultime da loro.

Come posso disabilitare il -Werror=date-timenella build? Non riesco a trovarlo da nessuna parte nello script di compilazione, quindi immagino che debba essere un'impostazione predefinita globale. Chiaramente il codice sta solo cercando di incorporare la data / ora di compilazione nell'output, quindi non dovrebbe esserci alcun problema con la disabilitazione di questo avviso.

Ecco alcuni degli avvisi che sto ricevendo che vengono trattati come errori:

/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

2
L' date-timeavvertimento è nuovo in gcc 4.9 Penso - probabilmente è attivato implicitamente da -Wall (e trasformato in un errore implicitamente da -Werror). Potresti provare a disattivarlo esplicitamente usando il -Wno-modulo cioè -Wno-error=date-timeaggiunto al CFLAGSma sto indovinando e non posso provarlo.
Steeldriver

@steeldriver sì, ha funzionato, grazie! Ti invitiamo a inviarlo come risposta e lo accetterò. L'altra parte del problema era che non mi rendevo conto che lo script di installazione stava ri-estraendo il sorgente ogni volta e sovrascrivendo le modifiche apportate al makefile.
Andy,

Risposte:


14

Penso che l'avvertimento data-ora sia nuovo in gcc 4.9, probabilmente è attivato implicitamente da -Wall(e trasformato implicitamente in un errore da -Werror).

Puoi provare a disattivarlo esplicitamente utilizzando il -Wno-modulo, ad esempio aggiungendo

-Wno-error=date-time 

al CFLAGS.


Cosa, in particolare, è necessario digitare nel terminale per fare questo?
Hack-R,

1
Ciao @steeldriver È questa la sintassi corretta: CFLAGS + = "-Wno-error = date-time"
Nayab Basha ha detto il

3

Ho provato diverse volte ad aggiungere la linea "Wno-error = date-time" al CFLAGS, ma non sembrava funzionare.

La soluzione di gran lunga più semplice per me è stata quella di trovare il file che stava producendo la riga "__DATE__" eseguendolo

grep -r "__DATE__"

che (per il codice sorgente con cui sto lavorando) mi ha dato il file

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

Ho semplicemente cambiato questo in una stringa senza la variabile rimuovendo le virgolette, vale a dire

"Compiled on __DATE__ for kernel %s"

La compilazione è stata quindi in grado di procedere

EDIT: come accennato in precedenza, utilizzare make cleanprima di eseguire configure e make, o ancora meglio, estrarre una nuova versione dal file zip / tar


1

Potrebbe essere meglio rimuovere la macro offensiva eliminando la riga 66 dal file 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

Ora puoi continuare con la build:

cd /home/andy/RTL8812AU_linux_v4.3.8_12175.20140902/
sudo make clean
make
sudo make install

sudo make clean è importante
mchid
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.