./configure: O que é um ambiente de construção insano?

55

./configure sempre verifica whether the build environment is sane...

Não posso deixar de me perguntar o que exatamente é um ambiente de construção insano. Que erros esse cheque pode gerar?

sikerbela
fonte
Você pode verificar config.logquais comandos reais são executados lá ou programas compilados.
myaut

Respostas:

51

Isso vem do automake , especificamente de sua AM_SANITY_CHECK macro , que é chamada de AM_INIT_AUTOMAKE, normalmente chamada no início configure.ac. A essência desta macro é:

  • Verifique se o caminho para o diretório de origem não contém certos caracteres "inseguros" que podem ser difíceis de incluir adequadamente nos makefiles dos scripts de shell.
  • Verifique se lsparece funcionar.
  • Verifique se um novo arquivo criado no diretório de construção é mais novo que o configurearquivo. Se não estiver (normalmente porque o relógio no sistema de compilação não está definido corretamente), é provável que o processo de compilação falhe porque os processos de compilação geralmente dependem de arquivos gerados com um carimbo de data e hora mais recente do que os arquivos de origem dos quais são gerados.
Gilles 'SO- parar de ser mau'
fonte
Por que lsespecificamente? É apenas para testar se os executáveis ​​básicos estão disponíveis e funcionais ou é de lsalguma forma usado no processo de criação?
terdon
2
@terdon Alguns modelos de automação usam ls. A AM_SANITY_CHECKprópria macro usa lspara verificar os tempos relativos configuree um arquivo temporário (não é usado test -ntporque nem todos os shells o possuem).
Gilles 'SO- stop be evil'