./configure: Was ist eine verrückte Build-Umgebung?

55

./configure prüft immer whether the build environment is sane...

Ich frage mich, was genau eine verrückte Build-Umgebung ist. Welche Fehler kann diese Prüfung auslösen?

Sikerbela
quelle
Sie können überprüfen, config.logwelche tatsächlichen Befehle dort ausgeführt oder welche Programme kompiliert werden.
Myaut

Antworten:

51

Dies kommt von automake , speziell von seinem AM_SANITY_CHECK Makro , das von aufgerufen AM_INIT_AUTOMAKEwird und normalerweise früh aufgerufen wird configure.ac. Der Kern dieses Makros ist:

  • Stellen Sie sicher, dass der Pfad zum Quellverzeichnis keine bestimmten "unsicheren" Zeichen enthält, die in Makefiles von Shell-Skripten möglicherweise nur schwer korrekt enthalten sind.
  • Überprüfen Sie, ob dies lszu funktionieren scheint.
  • Stellen Sie sicher, dass eine neue Datei, die im Erstellungsverzeichnis erstellt wurde, neuer ist als die configureDatei. Wenn dies nicht der Fall ist (normalerweise, weil die Uhr auf dem Erstellungssystem nicht richtig eingestellt ist), schlägt der Erstellungsprozess wahrscheinlich fehl, da Erstellungsprozesse normalerweise auf generierten Dateien mit einem aktuelleren Zeitstempel als den Quelldateien basieren, aus denen sie generiert werden.
Gilles 'SO - hör auf böse zu sein'
quelle
Warum lsspeziell? Sollen nur grundlegende ausführbare Dateien getestet werden, die verfügbar und funktionsfähig sind, oder werden sie lsselbst im Make-Prozess verwendet?
Terdon
2
@terdon Einige automake-Vorlagen verwenden ls. Das AM_SANITY_CHECKMakro selbst lsprüft die relativen Zeiten configureund eine temporäre Datei (wird nicht verwendet, test -ntda nicht alle Shells über diese verfügen).
Gilles 'SO- hör auf böse zu sein'