./configure: Qu'est-ce qu'un environnement de construction insensé?

55

./configure toujours vérifie whether the build environment is sane...

Je ne peux pas m'empêcher de me demander ce qu'est exactement un environnement de construction insensé. Quelles erreurs cette vérification peut-elle générer?

Sikerbela
la source
Vous pouvez vérifier config.logquelles commandes sont exécutées ou quels programmes sont compilés.
Myaut

Réponses:

51

Cela provient de automake , en particulier de sa AM_SANITY_CHECK macro , appelée de AM_INIT_AUTOMAKE, qui est normalement appelée tôt dans configure.ac. L'essentiel de cette macro est:

  • Vérifiez que le chemin d'accès au répertoire source ne contient pas certains caractères «non sécurisés» qu'il peut être difficile d'inclure correctement dans les makefiles des scripts de shell.
  • Vérifiez que cela lssemble fonctionner.
  • Vérifiez qu'un nouveau fichier créé dans le répertoire de construction est plus récent que le configurefichier. Si ce n'est pas le cas (généralement parce que l'horloge sur le système de génération n'est pas définie correctement), le processus de génération échouera probablement car les processus de génération reposent généralement sur des fichiers générés ayant un horodatage plus récent que les fichiers source à partir desquels ils sont générés.
Gilles, arrête de faire le mal
la source
Pourquoi lsspécifiquement? Est-ce uniquement pour vérifier que les exécutables de base sont disponibles et fonctionnels ou est ls-il utilisé d'une manière ou d'une autre dans le processus de création?
terdon
2
@terdon Certains modèles d'automake utilisent ls. La AM_SANITY_CHECKmacro elle-même utilise lspour vérifier les temps relatifs d' configureun fichier temporaire (elle ne l'utilise test -ntpas car tous les shells ne l'ont pas).
Gilles, arrête de faire le mal