Em 05-12-2010 12:57, Adriano Ferreira escreveu:
2010/12/5 Alexei Znamensky <[email protected] <mailto:[email protected]>>
Eu procurei por Business::BR::Ids (que é módulo, mas que também é
o nome =~ s/-/::/g do tar ball. Na hora, presumi que funcionaria isso.
O negócio é que as distribuições (ou tarballs) como coleções de
packages podem mudar à vontade do desenvolvedor (embora isto não
aconteça muito na prática, mas que acontece, acontece). Mas só esta
possibilidade cria um problema muito grande para mapear dependências
de módulos (ou packages) para distribuições.
Pensando um pouco, o negócio é que as dependências dos packages em uma
distribuição deviam incluir os packages da própria distribuição, algo
assim:
Business::BR::CPF depende de Business::BR::Id (esteja ou não no
mesmo pacote)
mas isto é um "can of worms" devido à dificuldade de descobir
dependências olhando em código fonte Perl – é fácil encontrar "require
M" e "use M", mas que tal
$M->require (com UNIVERSAL::require)
load($M) (com Module::load)
eval STRING
e muitas outras formas de fazer o "link" dinâmico entre módulos. E tem
mais, alguns destes "statements" serão dependências reais e outros
módulos que colaboram. Neste último caso, só análise semântica feita
por um humano seria capaz em alguns casos de fazer uma decisão
acertada a respeito.
Outro fator, é a inclusão de módulos novos em distribuições novas do
Perl, ou seja um módulo pode ser dependente na versão 5.8 e na versão
5.10 não... e dependendo do teu cenário você pode "se esquecer" de
adicionar esta dependência.
Russo,
Talvez você espera-se algo como o Test::UseAllModules ou Test::Compile,
porem mesmo assim você terá problemas dependendo do teu cenário.
Por isto o CPAN::Testers é sensacional. :-) Acredito que a função das
dependências é estritamente para oferecer o pacote no maior número de
cenários possiveis, seja plataforma, distribuições, versões e etc.. E
não uma inteligencia para saber se alguém escreveu determinado módulo,
acredito que isto com informações (nome, documentação) para ser
encontrados basta, afinal é por isto que falamos e falam tanto do CPAN.
Por exemplo, o módulo que você criticou pela dependência "errada",
segundo o CPAN::Testers resolve bem o problema na questão de funcionalidade:
http://www.cpantesters.org/distro/M/MooseX-Types-CPF.html#MooseX-Types-CPF-0.02
Graças ao trabalho do Adriano no Bussiness::BR que já é um módulo de
qualidade para a tarefa e ao Moose::Types, a minha tarefa foi apenas
apontar para eles. ;-)
Abs!
-Thiago Rondon
_______________________________________________
SaoPaulo-pm mailing list
[email protected]
http://mail.pm.org/mailman/listinfo/saopaulo-pm