NAME
Dist::Zilla::Plugin::Prereqs::SyncVersions - Homogenize prerequisites so
dependency versions are consistent
VERSION
version 0.001000
SYNOPSIS
; <bunch of metaprereq providing modules>
[Prereqs::SyncVersions]
Note: This must come after packages that add their own prerequisites in
order to work as intended.
DESCRIPTION
This module exists to pose mostly as a workaround for potential bugs in
downstream tool-chains.
Namely, "CPAN.pm" is confused when it sees:
runtime.requires : Foo >= 5.0
test.requires : Foo >= 6.0
It doesn't know what to do.
This is an easy enough problem to solve if you're using "[Prereqs]"
directly, and "[AutoPrereqs]" already does the right thing, but it gets
messier when you're working with plugins that inject their own
prerequisites>
<https://github.com/dagolden/Path-Tiny/commit/c620171db96597456a182ea608
8a24d8de5debf6>
So this plugin will homogenize dependencies to be the same version in
all phases which infer the dependency, matching the largest one found,
so the above becomes:
runtime.requires : Foo >= 6.0
test.requires : Foo >= 6.0
METHODS
"mvp_multivalue_args"
The following attributes exist, and may be specified more than once:
applyto
applyto_relation
applyto_phase
"register_prereqs"
This method is called during "Dist::Zilla" prerequisite generation, and
it injects supplementary prerequisites to make things match up.
ATTRIBUTES
"applyto_phase"
A multi-value attribute that specifies which phases to iterate and
homogenize.
By default, this is:
applyto_phase = build
applyto_phase = test
applyto_phase = runtime
applyto_phase = configure
However, you could extend it further to include "develop" if you wanted
to.
applyto_phase = build
applyto_phase = test
applyto_phase = runtime
applyto_phase = configure
appyyto_phase = develop
"applyto_relation"
A multi-value attribute that specifies which relations to iterate and
homogenize.
By default, this is:
applyto_relation = requires
However, you could extend it further to include "suggests" and
"recommends" if you wanted to. You could even add "conflicts" ... but
you really shouldn't.
applyto_relation = requires
applyto_relation = suggests
applyto_relation = recommends
applyto_relation = conflicts ; Danger will robinson.
"applyto"
A multi-value attribute that by default composites the values of
"applyto_relation" and "applyto_phase".
This is if you want to be granular about how you specify phase/relations
to process.
applyto = runtime.requires
applyto = develop.requires
applyto = test.suggests
AUTHOR
Kent Fredric <kentfredric@gmail.com>
COPYRIGHT AND LICENSE
This software is copyright (c) 2013 by Kent Fredric
<kentfredric@gmail.com>.
This is free software; you can redistribute it and/or modify it under
the same terms as the Perl 5 programming language system itself.