./configure: ¿Qué es un entorno de construcción loco?

55

./configure siempre comprueba whether the build environment is sane...

No puedo evitar preguntarme qué es exactamente un entorno de construcción loco. ¿Qué errores puede generar este cheque?

sikerbela
fuente
Puede verificar config.logqué comandos reales se ejecutan allí o qué programas se compilan.
myaut

Respuestas:

51

Esto proviene de automake , específicamente de su AM_SANITY_CHECK macro , que se llama desde AM_INIT_AUTOMAKE, que normalmente se llama desde el principio configure.ac. La esencia de esta macro es:

  • Verifique que la ruta al directorio de origen no contenga ciertos caracteres "inseguros" que pueden ser difíciles de incluir correctamente en los archivos de comandos de los scripts de shell.
  • Comprueba que lsparece funcionar.
  • Verifique que un nuevo archivo creado en el directorio de compilación sea más nuevo que el configurearchivo. Si no lo está (generalmente porque el reloj del sistema de compilación no está configurado correctamente), es probable que el proceso de compilación falle porque los procesos de compilación generalmente se basan en archivos generados que tienen una marca de tiempo más reciente que los archivos fuente de los que se generan.
Gilles 'SO- deja de ser malvado'
fuente
¿Por qué lsespecíficamente? ¿Es solo para probar que los ejecutables básicos están disponibles y son funcionales o se lsutilizan de alguna manera en el proceso de creación?
terdon
2
@terdon Algunas plantillas de automake usan ls. La AM_SANITY_CHECKmacro en sí misma usa lspara verificar los tiempos relativos de configureun archivo temporal (no lo usa test -ntporque no todos los shells lo tienen).
Gilles 'SO- deja de ser malvado'