./configure: Apa itu lingkungan pembuatan yang gila?

55

./configure selalu memeriksa whether the build environment is sane...

Mau tak mau aku bertanya-tanya apa sebenarnya lingkungan pembuatan yang gila itu. Kesalahan apa yang bisa ditimbulkan oleh pemeriksaan ini?

sikerbela
sumber
Anda dapat memeriksa config.logperintah apa yang sebenarnya dijalankan di sana atau program dikompilasi.
myaut

Jawaban:

51

Ini berasal dari automake , khususnya dari AM_SANITY_CHECK makronya , yang dipanggil dari AM_INIT_AUTOMAKE, yang biasanya disebut awal configure.ac. Inti dari makro ini adalah:

  • Periksa apakah path ke direktori sumber tidak mengandung karakter "tidak aman" tertentu yang mungkin sulit untuk dimasukkan dengan benar dalam file skrip shell.
  • Periksa yang lstampaknya berfungsi.
  • Periksa apakah file baru yang dibuat dalam direktori build lebih baru dari configurefile tersebut. Jika tidak (biasanya karena jam pada sistem build tidak diatur dengan benar), proses build cenderung gagal karena proses build biasanya bergantung pada file yang dihasilkan memiliki timestamp yang lebih baru daripada file sumber mereka dihasilkan.
Gilles 'SANGAT berhenti menjadi jahat'
sumber
Mengapa lskhusus? Apakah hanya untuk menguji bahwa executable dasar tersedia dan fungsional atau itu lssendiri entah bagaimana digunakan dalam proses make?
terdon
2
@terdon Beberapa templat automake digunakan ls. The AM_SANITY_CHECKmakro itu sendiri menggunakan lsuntuk memeriksa kali relatif configuredan file sementara (tidak menggunakan test -ntkarena tidak semua kerang memilikinya).
Gilles 'SANGAT berhenti menjadi jahat'