I'll cover this sort of thing in the next article, but to add develop dependencies via Makefile.PL/ExtUtils::MakeMaker you use META_MERGE. For example:
META_MERGE => { "meta-spec" => { version => 2 }, prereqs => { develop => { requires => { 'Template' => 0, } } }, },]]>
Can you briefly describe how do you package Perl 5 ecosystem for _production_ environment? In my case it goes like this:
1. Build Perl itself. Holy cow, 55MB! Worst bundle ever for slim Docker containers, because it throws everything into one bucket. Develop dependencies (like Pod::Perldoc, Devel::, Benchmark, TAP::Parser::* or CPAN::*), build dependencies (ExtUtils::*, Module::*), runtime dependencies (Unicode stuff and pragmas) and of course tons of stuff no one really uses nowadays (NBDM, ODBM, SBDM interfaces, ptar, zipdetails binaries).
I truly hate this "distribution approach". Unbelievable bloatware.
2. Clone it and trim excessive fat. To do so I use manifest from perl-base debian package as a base of what's crucial and what's not. That gives me 7MB clean, minimalistic Perl.
3. On Perl from 1 (full installation) I do "cpanm Whatever Is Used In My Code". That does all the module testing and bumps ecosystem to enormous 300MB package.
4. Now the hard part is to install _runtime_ packages only on minimalistic Perl from 2. I haven't found a good way to do it. It's a mix of horrible hackery of symlinks (build dependencies must be "borrowed" from full installation) and partial parsing META files. I usually install package X used by my code, without dependencies. Then I try "use X" to see what it REALLY needs (META phases are often not correct or package is too old to have distinct phases configured) and install dependencies until X can be loaded and my code that uses X passes tests.
After few hours of pain I have 300MB "devel" ecosystem and 90MB "production" ecosystem that I can trust and deploy waaaay faster on multiple machines.
Do you go similar way? Or maybe have some cool tricks to debloat Perl itself and CPAN too-greedy modules dependencies chain?
]]>no lib '.';
or PERL5OPT=-M-lib=.
]]>Just tried to look at my failures, but I hit two problems:
* The author page says I have two failing modules, but the module page only lists one with my name on it.
* The link to the failure log gives me a 404.
Thx for all your hard work!
]]>