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

Responder a