./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?
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_CHECKmacro , 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.
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).
config.log
quelles commandes sont exécutées ou quels programmes sont compilés.Réponses:
Cela provient de automake , en particulier de sa
AM_SANITY_CHECK
macro , appelée deAM_INIT_AUTOMAKE
, qui est normalement appelée tôt dansconfigure.ac
. L'essentiel de cette macro est:ls
semble fonctionner.configure
fichier. 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.la source
ls
spécifiquement? Est-ce uniquement pour vérifier que les exécutables de base sont disponibles et fonctionnels ou estls
-il utilisé d'une manière ou d'une autre dans le processus de création?ls
. LaAM_SANITY_CHECK
macro elle-même utilisels
pour vérifier les temps relatifs d'configure
un fichier temporaire (elle ne l'utilisetest -nt
pas car tous les shells ne l'ont pas).