[Rio-pm] PAR -> PP -> modulo no build mas funcao nao encontrada

breno breno em rio.pm.org
Domingo Abril 24 16:03:12 PDT 2011


Oi Samir,

cara, não sei o que pode ser não, aqui funciona na moral - e não
precisei nem passar as dependências via -M. Seria a ordem dos
parâmetros?

(usei esse código)

garu em bebop:~/tmp$ cat gen.pl

use strict;
use warnings;
use WWW::Mechanize;
use JSON -support_by_pp;
use Date::Manip;
use Date::Calc;
use namespace::autoclean;
use App::Rad;

App::Rad->run;

sub foo {
    ParseDate("today");
}


(e gerei o binário assim)

garu em bebop:~/tmp$ pp -B -c -o gen gen.pl

(desligando o perlbrew, para mostrar que não funcionaria sem as deps:

garu em bebop:~/tmp$ perlbrew off

garu em bebop:~/tmp$ perl gen.pl
Can't locate WWW/Mechanize.pm in @INC (@INC contains: /etc/perl
/usr/local/lib/perl/5.10.1 /usr/local/share/perl/5.10.1 /usr/lib/perl5
/usr/share/perl5 /usr/lib/perl/5.10 /usr/share/perl/5.10
/usr/local/lib/site_perl .) at gen.pl line 3.
BEGIN failed--compilation aborted at gen.pl line 3.

(finalmente, testando o bundle do PAR)

garu em bebop:~/tmp$ ./gen
Usage: ./gen command [arguments]

Available Commands:
    foo
    help        show syntax and available commands

garu em bebop:~/tmp$ ./gen foo
2011042400:00:00


[]s

garu

2011/4/24 Samir Cury <eu em samircury.eng.br>:
> Galera,
> Estou ajudando a desenvolver um script que tem tanta dependencia chata que
> achei melhor usar algo tipo PAR pra distribuir um executavel sem dor de
> cabeca.
> Achei o PP como melhor solucao ate entao :
> http://search.cpan.org/~rschupp/PAR-Packer-1.009/lib/pp.pm
> Antes que me perguntem todas as dependencias do codigo, diretamente sao :
> https://github.com/samircury/US-CMS-T2-Admin-Toolkit/blob/master/staleData/generate_report.pl
>
> use WWW::Mechanize;
> use JSON -support_by_pp;
> use Date::Manip;
> use Date::Calc;
> use namespace::autoclean;
> use App::Rad;
>
>
>
> O que tambem cria dependencias indiretas. Por consequencia, entao a linha do
> PP pra rodar sem varios (pa::ra::ra not found in @INC) seria algo como :
>
> samir em Darkstar ~/coding/US-CMS-T2-Admin-Toolkit/staleData $ pp -o
> generate-report generate_report.pl -M WWW::Mechanize -M Date::Manip -M JSON
> -M Date::Calc -M namespace::autoclean -M App::Rad -M JSON::backportPP -M
> Package::Stash -M Class::MOP::Package -M Class::MOP -M base -M
> Class::MOP::Module -M Package::Stash::PP -M attributes
>
> samir em Darkstar ~/coding/US-CMS-T2-Admin-Toolkit/staleData $
> ./generate-report
> Undefined subroutine &main::ParseDate called at script/generate_report.pl
> line 68.
>
>
> Podem ver depois eu rodando o script e falhando, onde ele chama a ParseDate
> que esta dentro de Date::Manip, que como podem ver esta incluso no PAR, pelo
> menos no comando do PP.
>
> Tambem fiz outro teste :
> samir em Darkstar ~/coding/US-CMS-T2-Admin-Toolkit/staleData $ perl
> -MDate::Manip -e'print(ParseDate("today"));'
> 2011042400:00:00
> Que prova que tenho o modulo e funciona.
> Alguem que tenha mais experiencia com o PAR tem alguma ideia?
> Abracos,
> Samir
>
>
>
> _______________________________________________
> Rio-pm mailing list
> Rio-pm em pm.org
> http://mail.pm.org/mailman/listinfo/rio-pm
>


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