Está construindo uma piada dentro do Perl ou é necessário exigir muitas invocações de 'make'?

4

Portanto, estou construindo o Perl versão 5.18.2 a partir do código-fonte em um processador ARMv7 agora, um Krait no Snapdragon S4, e não tenho muita certeza de quanto suporte existe para essa arquitetura. By the way, eu estou tentando construir um sistema LFS. O problema é que durante dois dias estive preso em Perl. Eu tentei usuários diferentes, como root, com CFLAGS, sem CFLAGS, versões 5.16 e 5.18 da fonte Debian e sempre fiquei preso em uma etapa de compilação específica.

Então, da última vez, decidi prestar atenção nessa mensagem que diz:

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

ou algo parecido.

Então eu fiz um pouco de loop ...

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

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

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

... Comecei com o seq 3, e com certeza depois de cada um deles parece estar progredindo ao longo do build. Ou seja, ele falha em uma etapa diferente e quando eu verifico o log, vejo que a última etapa falhou ao ser bem-sucedida e vejo a mesma mensagem:

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

Eu passei as instruções de compilação no CPAN e não vi nenhuma referência, ou qualquer coisa que indicasse que eu deveria passar por isso, então isso levanta a questão.

Isso é algum tipo de piada interna ou estou fazendo algo terrivelmente errado?

    
por Overloaded_Operator 26.06.2014 / 10:00

1 resposta

1

Ok, então eu acho que a mensagem estava me dizendo para fazer a coisa certa, embora pareça inviável sentar-se à vontade e digitar mais de 50 vezes (pode ter sido mais de 100 vezes), então eu escrevi esse pequeno enquanto loop antes de ir para a cama:

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

RETURN == ${RET} \

"; make; RET=$?; done

E deixe correr. Eu fiz Ctrl+z para parar o trabalho enquanto eu dormia e então eu usei fg 1 para trazer de volta isto depois do meio-dia 1 porque era o único trabalho que eu tinha, pode ser diferente para outra pessoa, pesquise o% Comandosjobs, fg e bg para mais informações.

Eu percebo que pode ter sido um loop infinito, mas eu poderia sempre tê-lo matado com Ctrl-c . Parece que sempre retornou 2, então testar while [ $RET -eq 2 ]; do teria sido mais ideal.

Para minha surpresa, acabou com um retorno de 0 com esta mensagem:

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.

Então, agora eu vou continuar com o Linux From Scratch. Parece que, talvez, ao configurar uma construção a partir do zero, quaisquer makefiles presentes no sistema precisam ser reconstruídos, então, vou dizer que isso era um comportamento normal, o make repetitivo que é, e que nem tudo é construído como " "programas GNU" padrão.

Espero que isso ajude alguém no futuro.

Atualização:

Este é o resultado do conjunto de testes:

    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 sucesso, não é ruim.

Como isso é para as ferramentas temporárias criadas no capítulo 5 do "Linux From Scratch" e dizem que o naipe de teste não é necessário, e que eu só preciso copiar algumas das bibliotecas para o diretório /tools , vou chamar isso de sucesso.

    
por 27.06.2014 / 00:12