Cara menonaktifkan -Werror = date-time / macro "__DATE__" dapat mencegah build yang dapat direproduksi


13

Saya mencoba mengkompilasi driver untuk adaptor Netis WF2190. Ya, saya baru saja mengunduh yang terbaru dari mereka.

Bagaimana saya bisa menonaktifkan -Werror=date-timedalam membangun? Saya tidak dapat menemukannya di mana pun di skrip build jadi saya pikir ini harus berupa pengaturan default global. Jelas kode hanya mencoba menanamkan tanggal / waktu build ke output, jadi seharusnya tidak ada masalah dengan menonaktifkan peringatan ini.

Berikut adalah beberapa peringatan yang saya terima yang diperlakukan sebagai kesalahan:

/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
The date-timeperingatan adalah baru dalam gcc 4.9 saya pikir - itu mungkin dihidupkan secara implisit oleh -Wall (dan berubah menjadi kesalahan secara implisit oleh -Werror). Anda dapat mencoba mematikannya secara eksplisit menggunakan -Wno-formulir yaitu -Wno-error=date-timeditambahkan ke CFLAGStapi saya menduga dan tidak dapat mengujinya.
steeldriver

@steeldriver ya, itu berhasil, terima kasih! Anda dipersilakan mengirimkannya sebagai jawaban dan saya akan menerimanya. Bagian lain dari masalahnya adalah saya tidak menyadari skrip instal sedang mengekstraksi ulang sumber setiap kali dan menimpa perubahan yang saya buat pada makefile.
Andy

Jawaban:


14

Peringatan tanggal-waktu baru di gcc 4.9 saya pikir - itu mungkin diaktifkan secara implisit oleh -Wall(dan diubah menjadi kesalahan secara implisit oleh -Werror).

Anda dapat mencoba mematikannya secara eksplisit menggunakan -Wno-formulir yaitu dengan menambahkan

-Wno-error=date-time 

ke CFLAGS.


Apa, khususnya, yang perlu diketik di terminal untuk melakukan ini?
Hack-R

1
Hai @steeldriver Apakah ini sintaks yang benar: CFLAGS + = "-Wno-error = date-time"
Nayab Basha Sayed

3

Saya mencoba beberapa kali menambahkan baris "Wno-error = date-time" ke CFLAGS, tetapi sepertinya tidak berhasil.

Solusi termudah sejauh ini bagi saya adalah menemukan file yang menghasilkan baris "__DATE__" dengan mengeksekusi

grep -r "__DATE__"

yang (untuk kode sumber yang saya kerjakan) memberi saya file

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

Saya hanya mengubah ini menjadi string tanpa variabel dengan menghapus tanda kutip, yaitu

"Compiled on __DATE__ for kernel %s"

Kompilasi kemudian dapat dilanjutkan

EDIT: Seperti yang disebutkan sebelumnya, gunakan make cleansebelum menjalankan configure dan buat, atau bahkan lebih baik, ekstrak versi baru dari file zip / tar


1

Mungkin lebih baik untuk menghapus makro yang menyinggung dengan menghapus baris 66 dari 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

Sekarang Anda dapat melanjutkan dengan build:

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

sudo bersihkan itu penting
mchid
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.