Est-ce que build Perl est une blague à l'intérieur ou est-ce que cela est supposé nécessiter autant d'invocations `make`?

Donc, je construis la version Perl 5.18.2 de la source sur un processeur ARMv7 en ce moment, un Krait sur le Snapdragon S4, et je ne suis pas trop sûr de combien de soutien il y a pour une telle architecture. En passant, j'essaie de build un système LFS. La chose est pour deux jours, j'ai été coincé à Perl. J'ai essayé différents users, en tant que root, avec CFLAGS, sans CFLAGS, les versions 5.16 et 5.18 de Debian et j'ai toujours été bloqué à une étape de compilation particulière.

Donc, la dernière fois, j'ai décidé de faire attention à ce message qui dit:

==> Your Makefile has been rebuilt. <== ==> Please rerun the make command. <== 

ou quelque chose comme ça.

J'ai donc fait un peu de boucle …

 RET=$?; for i in `seq 10`; do if [ ! $RET -eq 0 ]; then echo " \ RETURN ${i} == ${RET} \ " && make; RET=$?; fi; done 

… J'ai commencé avec seq 3, et bien sûr après chacun il semble faire des progrès le long de la construction. C'est-à-dire, il échoue à un autre pas et quand je vérifie le journal, je vois que la dernière étape échoue à réussi et je vois le même message:

 ==> Your Makefile has been rebuilt. <== ==> Please rerun the make command. <== 

J'ai parcouru les instructions de construction de CPAN et je n'ai vu aucune reference, ni quoi que ce soit indiquant que je devrais m'attendre à passer par là, alors cela soulève la question.

Est-ce une sorte de blague à l'intérieur, ou est-ce que je fais quelque chose de terriblement faux?

Ok, donc je pense que le message me disait de faire la bonne chose, bien qu'il semble impossible de s'asseoir à sa guise et de taper plus de 50 fois (peut-être plus de 100 fois), donc j'ai écrit cette petite boucle avant J'ai été au lit :

 RET=$?; while [ ! $RET -eq 0 ]; do echo " \ RETURN == ${RET} \ "; make; RET=$?; done 

Et laissez-le courir. J'ai fait Ctrl+z pour arrêter le travail pendant que je dormais, puis j'ai utilisé fg 1 pour le ramener cet après-midi 1 parce que c'était le seul travail que j'avais, il peut être différent pour quelqu'un d'autre, commands fg et bg pour plus d'informations.

Je réalise que cela a pu être une boucle sans fin mais j'aurais toujours pu le tuer avec Ctrl-c . Il semble avoir toujours returnné 2 alors peut-être tester while [ $RET -eq 2 ]; do aurait été plus idéal.

À ma grande surprise, il s'est terminé par un return de 0 avec ce message:

 make[1]: Leaving directory '/home/lfs/sources/perl/perl-5.18.2/x2p' Everything is up to date. Type 'make test' to run test suite. 

Alors maintenant, je vais continuer avec Linux From Scratch. Il semble que peut-être lors de la configuration d'une compilation à partir de zéro, quels que soient les makefiles présents sur le système doivent être reconstruits, donc je vais dire que c'était un comportement normal, la répétition et que tout ne se construit pas comme "standard" Programmes GNU.

Espérons que cela aide quelqu'un à l'avenir.

Mettre à jour:

Ceci est le résultat de la suite de tests:

  Failed 10 tests out of 2247, 99.55% okay. ../cpan/CPANPLUS/t/03_CPANPLUS-Internals-Source.t ../cpan/Socket/t/socketpair.t ../cpan/Sys-Syslog/t/syslog.t ../cpan/Time-HiRes/t/alarm.t ../cpan/Time-HiRes/t/clock.t ../cpan/Time-HiRes/t/usleep.t ../dist/ExtUtils-Command/t/cp.t op/alarm.t op/sigdispatch.t op/sleep.t 

99,55% de succès, pas mal.

Puisque c'est pour les outils temporaires créés dans le chapitre 5 de "Linux From Scratch" et qu'ils disent que le test n'est pas nécessaire et que je n'ai besoin que de copyr certaines librairies sur le directory /tools , je vais appeler cela un succès.