Comment désactiver -Werror = date-heure / macro «__DATE__» peut empêcher les builds reproductibles

13

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

Comment puis-je désactiver le -Werror=date-timedans la build? Je ne le trouve nulle part dans le script de construction, je pense donc que ce doit être un paramètre global par défaut. De toute évidence, le code tente simplement d'incorporer la date / heure de génération dans la sortie, donc il ne devrait pas y avoir de problème avec la désactivation de cet avertissement.

Voici certains des avertissements que je reçois 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
Andy
la source
2
L' date-timeavertissement est nouveau dans gcc 4.9 je pense - il est peut-être activé implicitement par -Wall (et transformé en erreur implicitement par -Werror). Vous pouvez essayer de le désactiver explicitement en utilisant le -Wno-formulaire, c'est- -Wno-error=date-timeà- dire ajouté au CFLAGSmais je suppose et je ne peux pas le tester.
steeldriver
@steeldriver oui, cela a fonctionné, merci! Vous êtes invités à le soumettre comme réponse et je l'accepterai. L'autre partie du problème était que je ne savais pas que le script d'installation ré-extrait la source à chaque fois et écrase les modifications que j'ai apportées au makefile.
Andy

Réponses:

14

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

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

-Wno-error=date-time 

au CFLAGS.

tournevis
la source
De quoi, en particulier, faut-il taper dans le terminal pour ce faire?
Hack-R
1
Salut @steeldriver Est-ce la bonne syntaxe: CFLAGS + = "-Wno-error = date-time"
Nayab Basha Sayed
3

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

La solution la plus simple pour moi était de loin 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 alors pu se poursuivre

EDIT: Comme mentionné précédemment, utilisez make cleanavant d'exécuter configure et faites, ou mieux encore, extrayez une nouvelle version du fichier zip / tar

code tmck
la source
1

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

Vous pouvez maintenant poursuivre la construction:

cd /home/andy/RTL8812AU_linux_v4.3.8_12175.20140902/
sudo make clean
make
sudo make install
mchid
la source
sudo make clean is important
mchid