[Rio-pm] Problema com "PP" (PAR) e Variable::Magic

Frederico Recsky cartas em frederico.me
Terça Setembro 30 15:10:50 PDT 2014


Instala um centos. Mantem os mesmos pacotes do server e instala o perlbrew. O que faltar para compilar os módulos compila no seu home. Vai ter que avisar o compilador das libs novas.

Faz um tar e corre para o abraco.  Da um trampo no começo mas depois funciona.

O nome do usuário do seu centos e do destino devem ser o mesmo. Senão da mais trampo.

-----Original Message-----
From: "Samir Cury" <samircurys em gmail.com>
Sent: ‎9/‎30/‎2014 7:05 PM
To: "Perl Mongers Rio de Janeiro" <rio-pm em pm.org>
Subject: Re: [Rio-pm] Problema com "PP" (PAR) e Variable::Magic

Achei que fosse algo bobo. A premissa e interessante e quase que essencial no meu caso. Vou rodar isso em varios setups diferentes onde nao tenho acesso a root, com a unica garantia de que o SO e CentOS 5 ou 6. Ter um binario que simplesmente roda sem depender de nada que nao venha no CentOS 5 padrao seria perfeito.


Valeu pela dica Manoel, infelizmente viraria um problema de ovo e galinha neste caso - nao dependo de todos os modulos mas dependo do carton. Que tambem nao posso instalar no servidor remoto.


Renato, fatpack parece interessante. Mas parece que o que o Solli comentou responde o que aconteceu aqui :


-bash-4.1$ fatpack packlists-for `cat fatpacker.trace` > packlists
Attempt to reload B/Hooks/EndOfScope/XS.pm aborted.


Parece que o caminho de menor resistencia seria mandar um tarball de um lib/ com todos os modulos relevantes, e incluir no @INC do .pl. Totalmente manual. Achei que essas ferramentas resolveriam.


Mas acredito que tentar os canais de suporte oficiais do pp pode ser uma boa ideia, se existirem.


Abracos,
Samir


2014-09-30 14:09 GMT-07:00 Aureliano Guedes <guedes_1000 em hotmail.com>:

Cara. Sempre tive problema com o PP.

Manoel Domingues Junior <manoel.domingues.junior em gmail.com> escreveu:


Samir,
Esses dias, quando enfrentava problemas semelhantes de portabilidade, conheci o carton que me ajudou muito.
Da uma olhada, ele é capaz de gerar uma pasta bundle com todas as dependências e basta ir no servidor remoto e executar um:
carton install --cached --deployment
E depois um:
carton exec script.pl
Outra dica legal que encontrei foi usar o plenv para cuidar das versões de perl...
Abraços,
Em 30/09/2014 15:51, "Samir Cury" <samircurys em gmail.com> escreveu:

Galera, 


Escrevi um codigo basico para uma tarefa trivial. Problema : Usei o CPAN demais e tenho muitas dependencias. Vou rodar o codigo em sistemas remotos onde so e garantido existir o Perl + core modules.


Pensei em usar o PAR, que ja me cria um executavel com "todos os modulo" (-B). Perfeito.


Nem tanto. Uma vez que consigo o executavel, ele reclama de nao achar o Variable::Magic [1].


Porem o .pl original roda tranquilo no mesmo sistema :


-bash-4.1$ ./report-fjr-couch.pl --fjr=FrameworkJobReport.xml  --couchurl=http://a.cloudant.com --db=tr-benchmarks
CouchDB::Client::Doc=HASH(0x1286d60)

O erro ate fez sentido uma vez que percebi que o sistema que usei para gerar o executavel nao tinha o Variable::Magic instalado. Imaginei que instalando e rodando de novo com -B iria incluir o modulo. Nada.


Sendo mais concreto, aqui estao os "pp s" que tentei :


pp -B  -o report-fjr-couch report-fjr-couch.pl
pp -B -P -o report-fjr-couch report-fjr-couch.pl

pp -B -p -o report-fjr-couch report-fjr-couch.pl



Mesmo problema em todos.


Descricao das opcoes :

http://search.cpan.org/~rschupp/PAR-Packer-1.022/lib/pp.pm



Caso queiram ver o codigo, aqui esta, mas fiquem tranquilos, admito e sei que nao foi feito para ser bonito, mas funciona :


https://github.com/samircury/CMSSW-benchmarks/blob/master/condor/report-fjr-couch.pl



Alguem ja passou por uma situacao parecida ou teria dicas de como resolver?


Valeu!


[1] :


-bash-4.1$ ./report-fjr-couch --fjr=FrameworkJobReport.xml  --couchurl=http://a.cloudant.com --db=tr-benchmarks
Could not find a suitable B::Hooks::EndOfScope implementation: Can't locate Variable/Magic.pm in @INC (@INC contains: CODE(0x1e1aca0) /tmp/par-6e697374657374/cache-9f11098dccd910be2e44325e17711ef504029e65/inc/lib /tmp/par-6e697374657374/cache-9f11098dccd910be2e44325e17711ef504029e65/inc CODE(0x1aea050) CODE(0x1aea4d0)) at Module/Runtime.pm line 317.
BEGIN failed--compilation aborted at B/Hooks/EndOfScope/XS.pm line 17.
Compilation failed in require at Module/Runtime.pm line 317.
Can't locate B/Hooks/EndOfScope/PP/FieldHash.pm in @INC (@INC contains: CODE(0x1e1aca0) /tmp/par-6e697374657374/cache-9f11098dccd910be2e44325e17711ef504029e65/inc/lib /tmp/par-6e697374657374/cache-9f11098dccd910be2e44325e17711ef504029e65/inc CODE(0x1aea050) CODE(0x1aea4d0)) at Module/Runtime.pm line 317.
BEGIN failed--compilation aborted at B/Hooks/EndOfScope/PP.pm line 29.
Compilation failed in require at Module/Runtime.pm line 317.
 at B/Hooks/EndOfScope.pm line 22
BEGIN failed--compilation aborted at B/Hooks/EndOfScope.pm line 26.
Compilation failed in require at namespace/clean.pm line 11.
BEGIN failed--compilation aborted at namespace/clean.pm line 11.
Compilation failed in require at JSON/Any.pm line 11.
BEGIN failed--compilation aborted at JSON/Any.pm line 11.
Compilation failed in require at CouchDB/Client.pm line 9.
BEGIN failed--compilation aborted at CouchDB/Client.pm line 9.
Compilation failed in require at script/report-fjr-couch.pl line 6.
BEGIN failed--compilation aborted at script/report-fjr-couch.pl line 6.



_______________________________________________
Rio-pm mailing list
Rio-pm em pm.org
http://mail.pm.org/mailman/listinfo/rio-pm


_______________________________________________
Rio-pm mailing list
Rio-pm em pm.org
http://mail.pm.org/mailman/listinfo/rio-pm
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: <http://mail.pm.org/pipermail/rio-pm/attachments/20140930/c7347da9/attachment.html>


Mais detalhes sobre a lista de discussão Rio-pm