Beefy Boxes and Bandwidth Generously Provided by pair Networks
Your skill will accomplish
what the force of many cannot
 
PerlMonks  

Re: Convincing Module::Install to put stuff in inc/

by davido (Cardinal)
on May 26, 2012 at 03:59 UTC ( [id://972565]=note: print w/replies, xml ) Need Help??


in reply to Convincing Module::Install to put stuff in inc/

Do you need for it to be bundled in ./inc? Or would it be adequate to assure that when a user types cpanm Data::Random (or his favorite variation on that command), he gets YAML::Tiny pulled in prior to Makefile.PL executing? Usually that's fine. And if that's the case, you can put the following directive into your Module::Build-based Makefile.PL:

configure_requires 'YAML::Tiny' => '0.0';

That invokes ExtUtils::MakeMaker's configure_requires directive for its write_makefile function. When you make dist, the appropriate metadata will be written into META.yml so that the user's CPAN installer will pull in the configuration dependency prior to executing Makefile.PL on his own system.

If you really do need to bundle some dependency along with your distribution, have a look at the docs for the Module::Install extension/plugin: Module::Install::Bundle. I haven't used it, but it claims to be able to bundle another module into your distribution. That seems more useful for distributions that have dependencies that might not be readily available (or available in a specific version) on CPAN.


Dave

Replies are listed 'Best First'.
Re^2: Convincing Module::Install to put stuff in inc/
by Oberon (Monk) on May 27, 2012 at 09:30 UTC
    Do you need for it to be bundled in ./inc?

    Not in the least. :-)

    Or would it be adequate to assure that when a user types cpanm Data::Random (or his favorite variation on that command), he gets YAML::Tiny pulled in prior to Makefile.PL executing? Usually that's fine. ...

    Yes, I think that should work. I'll give it a shot and see if that fixes the problem for my bug reporters. Good tip; thanx.

    If you really do need to bundle some dependency along with your distribution, have a look at the docs for the Module::Install extension/plugin: Module::Install::Bundle.

    Actually, I messed around with that one already. It doesn't do what I wanted it to do ... it bundles the distribution into my distro, which then it will (theoretically, although I also found somewhere in the POD that said it didn't work) install when/after it installs mine. But, even if it did work, it wouldn't work, if you follow me. Having YAML::Tiny all bundled up doesn't do any good if the installation needs to use it.

    On mst's advice, I also tried include('YAML::Tiny') in the Makefile.PL, but I got: Unknown function is found at Makefile.PL line 19. But it actually did put YAML::Tiny in inc/, so it sort of worked ... you know, with the minor disadvantage of causing my make disttest to fail. :-/

    But I think the configure_requires idea should work, so I'm going to try that..

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://972565]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others scrutinizing the Monastery: (6)
As of 2024-04-24 10:41 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found