./configure: Что такое безумная среда сборки?

55

./configure всегда проверяет whether the build environment is sane...

Я не могу не задаться вопросом, что же такое безумная среда сборки. Какие ошибки может вызвать эта проверка?

sikerbela
источник
Вы можете проверить, config.logкакие фактические команды выполняются там или программы скомпилированы.
Мая

Ответы:

51

Это происходит от automake , в частности от его AM_SANITY_CHECK макроса , который вызывается из AM_INIT_AUTOMAKE, который обычно вызывается в начале configure.ac. Суть этого макроса:

  • Убедитесь, что путь к исходному каталогу не содержит определенных «небезопасных» символов, которые может быть трудно правильно включить в make-файлы сценариев оболочки.
  • Проверьте, что, lsкажется, работает.
  • Убедитесь, что новый файл, созданный в каталоге сборки, новее, чем configureфайл. Если это не так (обычно из-за того, что часы в системе сборки установлены неправильно), процесс сборки, скорее всего, завершится неудачей, поскольку процессы сборки обычно полагаются на сгенерированные файлы, имеющие более свежую временную метку, чем исходные файлы, из которых они были сгенерированы.
Жиль "ТАК - перестань быть злым"
источник
Почему lsконкретно? Это только для проверки того, что основные исполняемые файлы доступны и работоспособны, или они lsсами как-то используются в процессе сборки?
Terdon
2
@terdon Некоторые автоматы используют шаблоны ls. Сам AM_SANITY_CHECKмакрос использует lsдля проверки относительного времени configureи временного файла (он не используется, test -ntпотому что он есть не во всех оболочках).
Жиль "ТАК - перестань быть злым"