web-dev-qa-db-fra.com

Comment désactiver -Werror = date-heure / la macro "__DATE__" pourrait empêcher les générations reproductibles

J'essaie de compiler un pilote pour un adaptateur Netis WF2190. Oui, je viens de télécharger la dernière en date.

Comment puis-je désactiver le -Werror=date-time dans la construction? Je ne le trouve nulle part dans le script de génération, je suppose donc qu'il doit s'agir d'un paramètre global par défaut. Il est clair que le code essaie simplement d'intégrer la date et l'heure de génération dans la sortie. Il ne devrait donc y avoir aucun problème à désactiver cet avertissement.

Voici quelques avertissements que je reçois et qui sont traités comme des erreurs:

/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
13
Andy

L’avertissement date-heure est nouveau dans gcc 4.9 je pense - il est peut-être activé implicitement par -Wall (et transformé implicitement en une erreur par -Werror).

Vous pouvez essayer de le désactiver explicitement en utilisant la forme -Wno- c'est-à-dire en ajoutant

-Wno-error=date-time 

au CFLAGS.

14
steeldriver

J'ai essayé plusieurs fois d'ajouter la ligne "Wno-error = date-time" au CFLAGS, mais cela ne semblait pas fonctionner.

Pour moi, la solution la plus simple était de trouver le fichier qui produisait la ligne "__DATE__" en exécutant

grep -r "__DATE__"

qui (pour le code source avec lequel je travaille) m'a donné le fichier

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

J'ai simplement changé cela en une chaîne sans la variable en supprimant les guillemets, c'est-à-dire.

"Compiled on __DATE__ for kernel %s"

La compilation a ensuite pu continuer

EDIT: Comme mentionné précédemment, utilisez make clean avant de lancer configure et make, voire mieux, extrayez une nouvelle version du fichier Zip/tar

3
tmck-code

Il peut être préférable de supprimer la macro incriminée en supprimant la ligne 66 du fichier 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

Maintenant vous pouvez continuer avec la construction:

cd /home/andy/RTL8812AU_linux_v4.3.8_12175.20140902/
Sudo make clean
make
Sudo make install
1
mchid