in reply to Re^3: Updating distributions with Module::Build, Module::Starter, and PPM::Make
in thread Updating distributions with Module::Build, Module::Starter, and PPM::Make

Under M::B, AIUI, dependencies are hardcoded in META.yml

This is incorrect.

M::B describes dependencies in its Build.PL just like EU::MM describes its dependences in Makefile.PL. The META.yml is generated from this description (as, indeed, it is with the latest EU::MM).

An additional note: even if META.yml were checked before running Makefile.PL, in the examples I've seen, Module::Build isn't listed as a dependency there even though it is required for the build.

Just as EU::MM isn't included in the META.yml files that EU::MM generates.

  • Comment on Re^4: Updating distributions with Module::Build, Module::Starter, and PPM::Make

Replies are listed 'Best First'.
Re^5: Updating distributions with Module::Build, Module::Starter, and PPM::Make
by Corion (Patriarch) on Aug 27, 2004 at 09:42 UTC

    With the small difference that EU::MM is in the Perl core and thus can be expected to be available, whereas Module::Build isn't. There remains the issue of version incompatibilities between different EU::MM versions of course, but seemingly that issue is not as apparent.

      With the small difference that EU::MM is in the Perl core and thus can be expected to be available, whereas Module::Build isn't.

      True. However I think I'd argue that neither should be in the dependencies unless the META.yml has "dynamic_config" set to indicate that we need to run a configuration file to install the module.

Re^5: Updating distributions with Module::Build, Module::Starter, and PPM::Make
by ysth (Canon) on Aug 27, 2004 at 13:12 UTC
    Thanks for correcting me. I saw the build action didn't regenerate META.yml, so assumed incorrectly that a way for Build.PL to indicate requirements to an external tool. I see now that the distmeta action does this (the "dist" prefix had made me think it was something that should only be done as part of preparing a distribution), or you can do what CPANPLUS does after running the build action:
    my $build = Module::Build->resume( properties => { config_dir => File::Spec->catdir($args->{'dir'}, "_build" +), build_script => 'Build', } ); my $failures = $build->prereq_failures;