Cómo deshabilitar -Werror = fecha-hora / macro "__DATE__" podría evitar compilaciones reproducibles


13

Estoy tratando de compilar un controlador para un adaptador Netis WF2190. Sí, acabo de descargar lo último de ellos.

¿Cómo puedo deshabilitar el -Werror=date-timeen la compilación? No puedo encontrarlo en ninguna parte del script de compilación, así que creo que debe ser una configuración predeterminada global. Claramente, el código solo intenta incrustar la fecha / hora de compilación en la salida, por lo que no debería haber ningún problema al deshabilitar esta advertencia.

Estas son algunas de las advertencias que recibo que se tratan como errores:

/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
La date-timeadvertencia es nueva en gcc 4.9, creo: posiblemente se activa implícitamente por -Wall (y se convierte en un error implícitamente por -Werror). Puede intentar desactivarlo explícitamente usando el -Wno-formulario, es decir, -Wno-error=date-timeagregado al CFLAGSpero supongo que no puedo probarlo.
steeldriver

@steeldriver sí, eso funcionó, ¡gracias! Puede enviarlo como respuesta y lo aceptaré. La otra parte del problema fue que no me di cuenta de que el script de instalación estaba volviendo a extraer la fuente cada vez y sobrescribiendo los cambios que hice en el archivo MAKE.
Andy

Respuestas:


14

La advertencia de fecha y hora es nueva en gcc 4.9. Creo que posiblemente se activa implícitamente por -Wall(y se convierte en un error implícitamente por -Werror).

Puede intentar desactivarlo explícitamente utilizando el -Wno-formulario, es decir, agregando

-Wno-error=date-time 

a la CFLAGS.


¿Qué, específicamente, se necesita escribir en la terminal para hacer esto?
Hack-R

1
Hola @steeldriver ¿Es esta la sintaxis correcta: CFLAGS + = "-Wno-error = date-time"
Nayab Basha Sayed

3

Intenté varias veces agregar la línea "Wno-error = date-time" a los CFLAGS, pero no pareció funcionar.

La solución más fácil para mí fue encontrar el archivo que estaba produciendo la línea "__DATE__" ejecutando

grep -r "__DATE__"

que (para el código fuente con el que estoy trabajando) me dio el archivo

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

Simplemente cambié esto a una cadena sin la variable eliminando las comillas, es decir

"Compiled on __DATE__ for kernel %s"

La compilación pudo continuar

EDITAR: como se mencionó anteriormente, use make cleanantes de ejecutar configure y make, o incluso mejor, extraiga una versión nueva del archivo zip / tar


1

Sería mejor eliminar la macro infractora eliminando la línea 66 del archivo 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

Ahora puedes continuar con la compilación:

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

sudo make clean es importante
mchid
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.