Breno e Stan, muito obrigado, eu acho que com isso ja ficou muito bem mais claro a questão do MakeFile.
Darei um feedback se consegui ou não, obrigado. > Date: Sun, 3 Jun 2012 00:54:00 -0300 > From: br...@rio.pm.org > To: rio-pm@pm.org > Subject: Re: [Rio-pm] MakeFile > > Ao contrário do Stan, eu não recomendo o Dist::Zilla. Ou pelo menos > não pra vc que está começando. Pode ser uma ótima ferramenta para > alguns autores, mas se vc não entende a "mágica" que acontece por > trás, pode se confundir e te deixar mais tempo configurando/depurando > as ferramentas em vez de trabalhando no(s) seu(s) próprio(s) > módulo(s). > > Respondendo a sua pergunta, os arquivos Makefile.PL existem para a > criação de "distribuições", que podem conter um ou mais módulos (além > de scripts e outros arquivos). Quando vc faz uma distribuição, não tem > problema se os módulos dentro dela dependerem de outro, contanto que > esse outro também esteja dentro da distribuição (mas tenha cuidado com > dependências circulares!). > > Há 3 construtores populares: > > * ExtUtils::MakeMaker, a.k.a. EUMM (que vc já citou) > * Module::Build, a.k.a MB > * Module::Install, a.k.a. MI > > Embora o EUMM esteja no core, o M:I tem uma DSL bem fácil de usar e é > utilizado em projetos de grande porte como Catalyst. > > Digamos que vc tenha a seguinte estrutura de módulos: > > lib/ > lib/MeuModulo.pm > lib/MeuModulo > lib/MeuModulo/Modulo1.pm > lib/MeuModulo/Modulo2.pm > > e queira criar uma distribuição chamada "Minha-Dist" contendo isso > tudo. A sintaxe do seu Makefile.PL é muito simples: > > ---------------8<--------------- > use inc::Module::Install; > > name 'Minha-Dist'; > all_from 'lib/MeuModulo.pm'; > > WriteAll; > --------------->8--------------- > > Pronto. Fácil, não? Ao rodar "perl Makefile.PL" ele vai gerar alguns > arquivos pra vc. Depois digite "make manifest" e "make dist" e vc terá > um Minha-Dist-0.01.tar.gz te esperando, pronto pra ser instalado =) > > Algumas observações sobre o Makefile.PL acima: > > * "name" indica o nome da distribuição. A convenção é que vc use o > mesmo nome do seu módulo base, o principal da sua distribuição (e que > provavelmente a maioria das pessoas vai usar primeiro). No seu caso, > suponho que o melhor "name" para a sua distribuição seria "MeuModulo". > > * "all_from" indica de onde o Makefile.PL deve extrair informações > como versão, licença, autor, resumo, etc. Ele extrai essa informação > de variáveis especiais de módulos (como "our $VERSION") e da > documentação - então não esqueça de incluir os campos pertinentes na > documentação (sempre uma boa prática!) ou terá que inclui-los > explicitamente no Makefile.PL. > > Digamos que os módulos da sua distribuição dependam dos seguintes > módulos EXTERNOS: File::Spec e Carp. Digamos ainda que, embora não > seja uma dependência direta, se o usuário tiver instalado o módulo > Data::Printer o seu programa consegue fazer alguma outra coisa bacana, > então embora não seja obrigatório vc gostaria de recomendar o > Data::Printer. Adicionar essas dependências no Makefile.PL é simples, > ele fica assim: > > ---------------8<--------------- > use inc::Module::Install; > > name 'Minha-Dist'; > all_from 'lib/MeuModulo.pm'; > > requires 'File::Spec' => 0; > requires 'Carp' => 0; > > recommends 'Data::Printer' => 0.3; > > WriteAll; > --------------->8--------------- > > O número depois da "=>" indica a versão mínima do módulo, usamos zero > (0) para indicar que qualquer versão serve. > > Com isso acho que vc já tem o suficiente. Não esqueça de criar um > diretório "t" na raiz da sua distribuição para colocar os testes de > seus módulos!! Mais sobre o M:I vc encontra na documentação > (https://metacpan.org/module/Module::Install) > > Obs: quando criamos um novo módulo, há alguns "boilerplates" que criam > as estruturas e documentações básicas para vc. Eu particularmente > gosto do Module::Starter, com o plugin Module::Starter::PBP (mas eu > modifico os templates em ~/.module-starter/PBP para conter o esqueleto > que uso). Assim, basta escrever na linha de comando: > > $ module-starter --module="Meu::Novo::Modulo" > > e ele cria tudo para mim. > > Quando vc estiver acostumado a criar suas distribuições e entender o > processo, vai começar a ficar preguiçoso. Aí sim, dê uma olhada no > Dist::Zilla e veja se ele é para vc =) > > > []s > > -b > > 2012/6/2 Stanislaw Pusep <creakt...@gmail.com>: > > A resposta é: Dist::Zilla. > > Pode parecer chatinho de aprender, mas, uma vez sabendo o básico, criar > > módulo com Makefile.PL completo e suíte de testes é dois palitos! > > Recomendo: > > > > http://sao-paulo.pm.org/artigo/2011/OhnoItsDistZilla > > http://sao-paulo.pm.org/equinocio/2011/set/2 > > > > ABS() > > > > > > > > 2012/6/2 Aureliano Guedes <guedes_1...@hotmail.com> > >> > >> Ola, > >> Monges. > >> > >> Eu estou tentando gerar um MakeFile.PL mas estou com um problema. > >> Eu andei lendo, inclusive alguns materiais do Hernan Lopes mas ficou uma > >> pergunta. > >> > >> Quando eu tenho varios modulos que na verdade sao dependencia de outro > >> modulo. > >> exemplo: > >> MeuModulo.pm, > >> MeuModulo/Modulo1.pm, > >> MeuModulo/Modulo2.pm. > >> > >> Como faco? > >> > >> Nao achei nenhuma opcao no ExtUtils::MakeMaker. > >> > >> Desde ja, obrigado. > >> Att, > >> > >> Aureliano Guedes > >> > >> PS: Desculpem a falta de acentos, o teclado esta desconfigurado. > >> > >> _______________________________________________ > >> Rio-pm mailing list > >> Rio-pm@pm.org > >> http://mail.pm.org/mailman/listinfo/rio-pm > > > > > > > > _______________________________________________ > > Rio-pm mailing list > > Rio-pm@pm.org > > http://mail.pm.org/mailman/listinfo/rio-pm > _______________________________________________ > Rio-pm mailing list > Rio-pm@pm.org > http://mail.pm.org/mailman/listinfo/rio-pm
_______________________________________________ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm