./configure: Co to jest szalone środowisko kompilacji?

55

./configure zawsze sprawdza whether the build environment is sane...

Nie mogę się nie zastanawiać, co to właściwie jest szalone środowisko kompilacji. Jakie błędy może wywołać ten czek?

Sikerbela
źródło
Możesz sprawdzić, config.logjakie są tam faktycznie uruchomione polecenia lub skompilowane programy.
myaut

Odpowiedzi:

51

Wynika to z automake , w szczególności z jego AM_SANITY_CHECK makra , które jest wywoływane z AM_INIT_AUTOMAKE, który zwykle jest wywoływany wcześnie configure.ac. Istotą tego makra jest:

  • Sprawdź, czy ścieżka do katalogu źródłowego nie zawiera pewnych „niebezpiecznych” znaków, których prawidłowe włączenie do plików makefiles skryptów powłoki może być trudne.
  • Sprawdź, czy lswydaje się działać.
  • Sprawdź, czy nowy plik utworzony w katalogu kompilacji jest nowszy niż configureplik. Jeśli tak nie jest (zwykle dlatego, że zegar w systemie kompilacji nie jest ustawiony poprawnie), proces kompilacji prawdopodobnie zawiedzie, ponieważ procesy kompilacji zwykle polegają na wygenerowanych plikach o nowszym sygnaturze czasowej niż pliki źródłowe, z których są generowane.
Gilles „SO- przestań być zły”
źródło
Dlaczego lskonkretnie Czy to tylko po to, aby sprawdzić, czy podstawowe pliki wykonywalne są dostępne i funkcjonalne, czy też są lswykorzystywane w procesie tworzenia?
terdon
2
@terdon Niektóre szablony automake korzystają ls. Samo AM_SANITY_CHECKmakro służy lsdo sprawdzania względnych czasów configurepliku tymczasowego (nie używa go, test -ntponieważ nie wszystkie powłoki go mają).
Gilles „SO- przestań być zły”