[Cascavel-pm] RES: cursos de catalyst e perl

Eden Cardim edencardim em gmail.com
Terça Maio 18 11:23:04 PDT 2010


>>>>> "Glauber" == Glauber Machado Rodrigues (Ananda) <glauber.rodrigues em gmail.com> writes:

    Glauber> Por um acaso você
    Glauber> sabe o que significa o Makefile.PL do catalyst? Sabe?

Eu não tava muito afim de perder mais tempo nessa thread, mas percebi
que talvez outras pessoas que estão começando com perl iriam se
beneficiar da informação. Quem já sabe como funciona a convenção do
Makefile.PL pode pular para o terceiro parágrafo.

O Makefile.PL é uma convenção do perl (não do catalyst) cuja intenção é
gerar um Makefile que possa ser alimentado ao make(1) (fica como
exercício ao leitor verificar pra que serve essa ferramenta). Essa
abordagem permite que os problemas de compilação cross-platform sejam
resolvidos em perl (que roda em quase todas as plataformas existentes)
antes que o processo de construção seja iniciado. Sendo uma convenção, a
implementação contida no Makefile.PL pode variar de uma distribuição
para outra. Uma implementação primitiva é o ExtUtils::MakeMaker, uma
mais moderna é o Module::Install, que pode, opcionalmente, usar o
CPAN.pm para instalar dependências automaticamente. Alguns autores
preferem escrever o Makefile.PL "na mão", outros preferem adotar outras
convenções como o Module::Build que usa um arquivo chamado Build.PL que
trata do processo inteiro de compilação sem precisar do make(1). O core
do catalyst inclui na sua distribuição uma extensão pro Module::Install,
que trata de coisas como construir um pacote PAR da sua aplicação, não
das dependências.
O problema que o Glauber enfrentou deveu-se à falta
de declaração de uma das dependências do *exemplo* do livro da Packt
pub, e de autoria do Jonathan Rockway (jon em jrock.us) junto ao
Module::Install, que não tem relação alguma com o Catalyst ou com a
dependência em questão. Se o código que o Glauber escreveu (e ainda não
divulgou) executou mesmo sem a dependência estar presente no sistema
dele, significa que o código dele está diferente do exemplo ou ele está
divulgando informação errada/falsa.

Resumindo e reforçando: O Module::Install e o Catalyst não tem vínculo
algum e é impossível para qualquer módulo, em qualquer linguagem,
adivinhar de quais módulos o seu projeto depende.

-- 
   Eden Cardim


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