Является ли сборка Perl внутренней шуткой или она действительно требует так много вызовов `make`?

Является ли сборка Perl внутренней шуткой или она действительно требует так много вызовов `make`?

Итак, я сейчас собираю Perl версии 5.18.2 из исходников на процессоре ARMv7, Krait на Snapdragon S4, и я не слишком уверен, насколько развита поддержка такой архитектуры. Кстати, я пытаюсь собрать систему LFS. Дело в том, что на два дня я застрял на Perl. Я пробовал разных пользователей, как root, с CFLAGS, без CFLAGS, исходники Debian версий 5.16 и 5.18, и я всегда застревал на определенном этапе сборки.

Поэтому в последний раз я решил обратить внимание на сообщение, в котором говорится:

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

или что-то вроде того.

Поэтому я сделал небольшой цикл for...

RET=$?; for i in `seq 10`; do if [ ! $RET -eq 0 ]; then echo " \

RETURN ${i} == ${RET} \

" && make; RET=$?; fi; done

... Я начал с 3-й части, и, конечно же, после каждой из нихкажетсядля продвижения по сборке. То есть, он дает сбой на другом шаге, и когда я проверяю журнал, я вижу, что последний шаг, на котором он дал сбой, был успешным, и я вижу то же самое сообщение:

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

Я бегло просмотрел инструкции по сборке на CPAN и не увидел никаких ссылок или чего-либо, указывающего на то, что мне следует через это пройти, поэтому возникает вопрос.

Это какая-то внутренняя шутка или я делаю что-то ужасно неправильно?

решение1

Хорошо, я думаю, что сообщение говорило мне, что нужно поступить правильно, хотя кажется невозможным сидеть у командной строки и набирать make более 50 раз (возможно, даже более 100 раз), поэтому я написал этот небольшой цикл while перед тем, как пойти спать:

RET=$?; while [ ! $RET -eq 0 ]; do echo " \

RETURN == ${RET} \

"; make; RET=$?; done

И пусть он работает. Я сделал Ctrl+zэто, чтобы остановить работу, пока я спал, а затем я fg 1снова запускал его этим днем ​​1, потому что это была единственная работа, которая у меня была, у кого-то это может быть по-другому, изучите команды jobs, fgи bgдля получения дополнительной информации.

Я понимаю, что это мог быть бесконечный цикл, но я всегда мог его завершить с помощью Ctrl-c. Кажется, он всегда возвращал 2, так что, возможно, тестирование while [ $RET -eq 2 ]; doбыло бы более идеальным вариантом.

К моему удивлению, он просто закончился возвратом 0 с таким сообщением:

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.

Итак, теперь я продолжу с Linux From Scratch. Кажется, что, возможно, при настройке сборки с нуля, любые файлы makefile, присутствующие в системе, должны быть перестроены, поэтому я собираюсь сказать, что это было нормальное поведение, повторяющееся make, и что не все собирается как «стандартные» программы GNU.

Надеюсь, это поможет кому-нибудь в будущем.

Обновлять:

Вот результат тестового набора:

    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% успеха, неплохо.

Поскольку это касается временных инструментов, созданных в главе 5 «Linux From Scratch», и они говорят, что тестовый набор не требуется, и что мне нужно только скопировать некоторые библиотеки в каталог /tools, я назову это успехом.

Связанный контент